Esta página mostra como usar o Nginx como um proxy de front-end para o contentor da sua aplicação. Isto é útil se quiser processar pedidos ou respostas. Pode adicionar a compressão gzip ou traduzir HTTP/2 para HTTP/1 se os contentores da sua aplicação suportarem apenas HTTP/1 e precisar de usar HTTP/2 ponto a ponto por motivos de desempenho.
No exemplo fornecido nesta página, um contentor Nginx é executado em todas as instâncias do Cloud Run como o contentor de publicação principal e está configurado para encaminhar pedidos para o contentor da aplicação, que é executado como um contentor sidecar, conforme mostrado neste diagrama:
A forma mais eficaz de fazer o proxying de front-end no Cloud Run é implementar o contentor do servidor proxy do servidor Nginx e o contentor da app Web como um único serviço do Cloud Run:
Este único serviço do Cloud Run aceita pedidos e entrega-os ao contentor de entrada (publicação), que, neste caso, é o servidor proxy. Em seguida, o servidor proxy envia pedidos à app Web através da interface de rede localhost, o que evita qualquer rede externa.
A implementação como um único serviço do Cloud Run reduz as latências, a sobrecarga de gestão de serviços e elimina a exposição a redes externas. O Cloud Run não interage diretamente com os contentores auxiliares, exceto para os iniciar ou parar sempre que o serviço é iniciado ou parado.
O contentor da app Web e quaisquer contentores auxiliares podem ser escritos em diferentes linguagens de programação. Para um exemplo escrito em PHP, consulte o exemplo de PHP nginx no GitHub.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run and Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Instale e inicialize a CLI gcloud.
- Atualize a CLI do Google Cloud:
gcloud components update - Configurar a CLI do Google Cloud:
gcloud init - Autentique-se com a CLI do Google Cloud:
gcloud auth login - As funções Administrador do Cloud Run e Utilizador da conta de serviço
- Qualquer função personalizada que inclua esta lista específica de autorizações
- Atribua
nginxpara ouvir na mesma porta predefinida do Cloud Run8080, localizada emlocalhost. - Aplique a compressão gzip para melhorar o desempenho.
- Indique a
proxy_passpara entregar todos os pedidos a este contentor de entrada no contentor secundário da app Web na porta do anfitrião local8888. Aceda à página Secret Manager da Google Cloud consola:
Clique em Criar segredo.
No campo do formulário
name, introduza nginx_config.Carregue o ficheiro
nginx.conflocalizado emmulti-container/hello-nginx-sample/nginx.confcomo o valor secreto.Manter as predefinições (
Google-owned and Google-managed encryption key, etc).Clique em Criar segredo.
Conceda à conta de serviço de computação do projeto acesso a este novo segredo. Para o fazer, aceda à página IAM na Google Cloud consola:
Localize a conta de serviço principal com o nome:
Compute Engine default service accounte clique em Editar principal.Clique em Adicionar outra função e selecione Secret Manager Secret Accessor.
Clique em Guardar.
Autorizações necessárias para a implementação
Tem de ter UMA das seguintes opções:
Vista geral da configuração
Estas instruções usam imagens de contentores pré-criadas, pelo que a única coisa necessária para o proxying de front-end é configurar os contentores e o próprio serviço.
Configure o contentor de entrada do Nginx
A imagem do contentor está nginx disponível no Docker Hub.
Está quase pronto a usar, exceto que tem de ser configurado para ser executado como um serviço de proxy, fornecendo os pedidos de proxy à porta onde o contentor sidecar está a escutar localhost. O exemplo nesta página também ativa a compressão gzip para pedidos e respostas.
A configuração é fornecida através de um ficheiro de texto montado em /etc/nginx/conf.d/nginx.conf. Uma vez que não pode editar diretamente ficheiros no contentor, tem de montar um volume em /etc/nginx/conf.d/ que contenha o ficheiro de configuração. Uma forma de montar um ficheiro numa localização específica num contentor em execução no Cloud Run é armazenar o conteúdo do ficheiro num segredo do Secret Manager e montar esse segredo na localização selecionada.
Copie o seguinte num ficheiro com o nome nginx.conf no diretório atual da sua máquina local.
Na configuração, faça o seguinte:
Crie um segredo com o conteúdo do ficheiro nginx.conf.