Implantar o Contêiner do Docker do Oracle App Gateway
O App Gateway pode ser implantado usando o OVA ou o Docker. Saiba como implantar o contêiner do Docker do Oracle App Gateway.
Pré-requisitos
- Faça download da imagem do docker do App Gateway. Abra o menu de navegação e selecione Identidade e Segurança. Em Identidade, selecione Domínios. Clique no nome do domínio de identidades no qual deseja trabalhar. Talvez você precise alterar o compartimento para localizar o domínio desejado. Em seguida, clique em Definições e, em seguida, em Downloads.
- Crie um arquivo de wallet contendo o ID do Cliente e o Segredo do Cliente do App Gateway que foi criado na Console de Administração. Nomeie o arquivo da wallet cwallet.sso e copie-o para a pasta local para que o contêiner possa aceitar o arquivo. Observação: É possível fazer download da ferramenta de wallet na Console do serviço IAM. Na Console do IAM, expanda a Gaveta de Navegação, selecione Definições e, em seguida, selecione Downloads.
- Instale o Docker (Comando:
$ yum install docker-engine
). - Adicione o usuário atual ao grupo do Docker (Comando:
$ sudo usermod -a -G docker $USER
).
Extrair a Imagem do Docker
.tar.gz
, use os comandos a seguir para extrair a imagem para poder criar o contêiner. - Carregue o arquivo
.tar.gz
para o registro local do Docker. Comando:$ docker load -i <.tar.gz file>
- Verifique se você vê a imagem no registro local do Docker. Comando:
$ docker images
Criar o Contêiner do App Gateway
Definir as Variáveis de Ambiente do App Gateway
Para executar o contêiner do Docker do App Gateway, as variáveis de ambiente a seguir devem ser definidas no arquivo appgateway-env
. Importante: Nenhuma validação é executada nesses valores. Se você configurar valores inválidos, a criação do contêiner do Docker do App Gateway falhará.
-
CG_APP_TENANT=<tenant name>
IDCS_INSTANCE_URL=<idcs instance url>
. O URL exigido para acessar a instância do serviço IAM.NGINX_DNS_RESOLVER=<resolver ip>
. Configure o servidor de nomes encontrado no arquivo/etc/resolv.conf
. O valor padrão é127.0.0.1
.
Executar o Docker
A pasta local é montada como volume e pode ser acessada no contêiner do Docker.
O arquivo da wallet (que contém o ID do Cliente e o Segredo do Cliente) que você criou como pré-requisito (cwallet.sso
) deve ser copiado para a pasta local, para que o contêiner possa fazer referência ao arquivo.
$ docker run -it -d
--name <container name>
--env-file <path to env file>
--env HOST_MACHINE=`hostname -f`
--volume <local folder>/cwallet.sso:/usr/local/nginx/conf/cwallet.sso
--net=host/<User-defined bridge name> <image name>
Exemplo de Contêiner com Rede Host sem Mapeamento de Porta
Se o número da porta configurado para o host do App Gateway for menor que 1024, use Redes com Pontes para o Docker com o mapeamento de porta. Veja o exemplo de comando Redes com Pontes com Mapeamento de Porta abaixo para executar o contêiner do Docker.
$ docker run -it -d
--name appgateway
--env-file appgateway-env
--env HOST_MACHINE=`hostname -f`
--volume /opt/appgateway/cwallet.sso:/usr/local/nginx/conf/cwallet.sso
--net=host opc-delivery.docker.acme.com/idcs/appgateway:RELEASE-BUILDNUMBER
Exemplo de Redes com Pontes com Mapeamento de Porta
Veja a seguir um exemplo de Redes com Pontes com mapeamento de porta (80 a 65535).
Pré-requisito: Antes de usar a configuração de Rede Ponte, adicione/atualize iptables
para true
, no arquivo /etc/docker/daemon.json
. Isso permite que o daemon do Docker edite as regras de filtragem de iptables necessárias para o mapeamento de porta.
$ docker run -it -p 80:9000 -d
--name appgateway
--env-file /home/<username>/dev/appgateway_pool/appgateway_env --env HOST_MACHINE=`hostname -f`
--volume /opt/appgateway/cwallet.sso:/usr/local/nginx/conf/cwallet.sso
--net=bridge-net idcs.docker.acme.com/idcs/appgateway: RELEASE-BUILDNUMBER
Observação: O Docker atualiza internamente o iptables/firewalld com as rotas da porta, quando o comando acima é executado.
Etapas Adicionais do Contêiner
- Os certificados SSL configurados devem ser copiados para o local especificado em Propriedades Adicionais. Vá para Segurança, Gateways de Aplicativo, <Gateway>, Hosts, Propriedades Adicionais e anote o local.
- Execute comandos como os seguintes. Observação: O local do certificado depende do local especificado no Host de Gateways de Aplicativo.
$ docker cp deploy/docker/nginx/build/test-config/certs/my-appgateway.cert appgateway:/scratch/docker/cloudgate/certs/my-appgateway.cert
$ docker cp deploy/docker/nginx/build/test-config/certs/my-appgateway.key appgateway:/scratch/docker/cloudgate/certs/my-appgateway.key
Saiba Mais
-
Como sei se meu contêiner foi criado com sucesso?
Execute o comando:
$ docker ps -a
e certifique-se de que oSTATUS
seja Ativo na lista correspondente ao nome do contêiner. -
Se o STATUS do contêiner mostrar encerrado, como verifico os logs para determinar por que o contêiner foi encerrado?
Execute o comando:
$ docker logs <container name>
. Esse comando imprime as mensagens de log, que contêm as mensagens de log impressas pelo App Gateway. -
Como editar o arquivo cloudgate.config dentro do contêiner?
Execute o comando:
$ docker exec -it <container name> bash
.Execute esse comando para acessar o contêiner se ele estiver em execução com um shell Bash. Uma vez dentro do contêiner, você pode editar os arquivos usando o editor Nano.
-
Podemos imprimir os logs de acesso no formato JSON?
Sim, você pode imprimir os logs de acesso no formato JSON. Adicione as linhas abaixo ao arquivo/usr/local/nginx/conf/nginx.conf
, dentro de um bloco HTTP, e reinicie o App Gateway.log_format jsonf escape=json '{"remote_addr": "$remote_addr", "remote_user": "$remote_user", "time": [$time_local], "request": "$request", "status": $status, "body_bytes_sent": $body_bytes_sent, "http_referer": "$http_referer", "user_agent": "$http_user_agent", "x_forwarded_for": "$http_x_forwarded_for"}'; access_log /usr/local/nginx/logs/access.log jsonf;
Observação: Você pode editar os campos JSON desejados removendo ou adicionando a variável NGINX.