{"meta":{"title":"Implantar no Google Kubernetes Engine","intro":"Saiba como implantar um projeto no Google Kubernetes Engine (GKE) como parte de um fluxo de trabalho de CD (implantação contínua).","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/actions","title":"GitHub Actions"},{"href":"/pt/actions/how-tos","title":"Instruções"},{"href":"/pt/actions/how-tos/deploy","title":"Implantar"},{"href":"/pt/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"Implantar em plataformas de terceiros"},{"href":"/pt/actions/how-tos/deploy/deploy-to-third-party-platforms/google-kubernetes-engine","title":"Mecanismo Kubernetes do Google"}],"documentType":"article"},"body":"# Implantar no Google Kubernetes Engine\n\nSaiba como implantar um projeto no Google Kubernetes Engine (GKE) como parte de um fluxo de trabalho de CD (implantação contínua).\n\n## Pré-requisitos\n\nAntes de prosseguir com a criação do fluxo de trabalho, você precisará concluir as etapas a seguir para seu projeto do Kubernetes. Este guia pressupõe que a raiz do seu projeto já tenha um `Dockerfile` e um arquivo de configuração de Implantação do Kubernetes.\n\n### Criando um cluster do GKE\n\nPara criar o cluster do GKE, primeiro, você precisará se autenticar usando a CLI do `gcloud`. Para obter mais informações sobre esta etapa, veja os artigos a seguir:\n\n* [`gcloud auth login`](https://cloud.google.com/sdk/gcloud/reference/auth/login)\n* [\n  `gcloud` CLI](https://cloud.google.com/sdk/gcloud/reference)\n* [\n  `gcloud` CLI e Cloud SDK](https://cloud.google.com/sdk/gcloud#the_gcloud_cli_and_cloud_sdk)\n\nPor exemplo:\n\n```shell copy\n$ gcloud container clusters create $GKE_CLUSTER \\\n    --project=$GKE_PROJECT \\\n    --zone=$GKE_ZONE\n```\n\n### Habilitar as APIs\n\nHabilite as APIs do Motor Kubernetes e do Registro de Contêineres. Por exemplo:\n\n```shell copy\n$ gcloud services enable \\\n    containerregistry.googleapis.com \\\n    container.googleapis.com\n```\n\n### Configurar uma conta de serviço e armazenar as suas credenciais\n\nEste procedimento demonstra como criar a conta de serviço para sua integração com o GKE. Ele explica como criar a conta, adicionar funções a ela, recuperar suas chaves e armazená-las como um segredo de repositório criptografado codificado em base64 chamado `GKE_SA_KEY`.\n\n1. Crie uma nova conta de serviço:\n\n   ```shell copy\n   gcloud iam service-accounts create $SA_NAME\n   ```\n\n2. Recupere o endereço de email da conta de serviço que você acabou de criar:\n\n   ```shell copy\n   gcloud iam service-accounts list\n   ```\n\n3. Adicionar funções à conta de serviço.\n\n   > \\[!NOTE]\n   > Aplique funções mais restritivas de acordo com seus requisitos.\n\n   ```shell copy\n   gcloud projects add-iam-policy-binding $GKE_PROJECT \\\n     --member=serviceAccount:$SA_EMAIL \\\n     --role=roles/container.admin\n   gcloud projects add-iam-policy-binding $GKE_PROJECT \\\n     --member=serviceAccount:$SA_EMAIL \\\n     --role=roles/storage.admin\n   gcloud projects add-iam-policy-binding $GKE_PROJECT \\\n     --member=serviceAccount:$SA_EMAIL \\\n     --role=roles/container.clusterViewer\n   ```\n\n4. Faça o download do arquivo chave do JSON para a conta de serviço:\n\n   ```shell copy\n   gcloud iam service-accounts keys create key.json --iam-account=$SA_EMAIL\n   ```\n\n5. Armazene a chave da conta de serviço como um segredo chamado `GKE_SA_KEY`:\n\n   ```shell copy\n   export GKE_SA_KEY=$(cat key.json | base64)\n   ```\n\n   Para saber mais sobre como armazenar um segredo, confira [Usar segredos em ações do GitHub](/pt/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n\n### Armazenando o nome do seu projeto\n\nArmazene o nome do projeto como um segredo chamado `GKE_PROJECT`. Para saber mais sobre como armazenar um segredo, confira [Usar segredos em ações do GitHub](/pt/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets).\n\n### (Opcional) Configurar kustomize\n\nKustomize é uma ferramenta opcional usada para gerenciar especificações do YAML. Depois que você criar um arquivo `kustomization`, o fluxo de trabalho abaixo poderá ser usado para definir dinamicamente os campos da imagem e encaminhar o resultado para `kubectl`. Para obter mais informações, confira [Uso do Kustomize](https://github.com/kubernetes-sigs/kustomize#usage).\n\n### (Opcional) Configure um ambiente de implantação\n\nOs ambientes são usados para descrever um destino de implantação geral, como `production`, `staging` ou `development`. Quando um GitHub Actions fluxo de trabalho é implantado em um ambiente, o ambiente é exibido na página principal do repositório. Você pode usar ambientes para exigir aprovação para um trabalho prosseguir, restringir quais ramificações podem acionar um fluxo de trabalho, bloquear implantações com regras de proteção de implantação personalizadas ou limitar o acesso a segredos. Para saber mais sobre como criar ambientes, confira [Gerenciar ambientes para implantação](/pt/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments).\n\n## Criar o fluxo de trabalho\n\nDepois de preencher os pré-requisitos, você pode prosseguir com a criação do fluxo de trabalho.\n\nO fluxo de trabalho a seguir mostra como criar uma imagem de contêiner e enviá-la ao GCR. Em seguida, ele usa as ferramentas do Kubernetes (como `kubectl` e `kustomize`) para baixar a imagem para a implantação no cluster.\n\nNa chave `env`, altere o valor de `GKE_CLUSTER` para o nome do seu cluster, `GKE_ZONE` para sua zona de cluster, `DEPLOYMENT_NAME` para o nome da sua implementação e `IMAGE` para o nome da sua imagem.\n\nSe você configurou um ambiente de implantação, altere o valor de `environment` para que ele seja o nome do seu ambiente. Se você não tiver configurado um ambiente ou se o fluxo de trabalho estiver em um repositório privado e você não usar o GitHub Enterprise Cloud, exclua a chave `environment`.\n\n```yaml copy\n# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.\n# São fornecidas por terceiros e regidas por\n# termos de serviço, política de privacidade e suporte separados\n# online.\n\n# O GitHub recomenda fixar ações em um SHA de commit.\n# Para obter uma versão mais recente, você precisará atualizar o SHA.\n# Você também pode fazer referência a uma marca ou branch, mas a ação pode ser alterada sem aviso.\n\nname: Build and Deploy to GKE\n\non:\n  push:\n    branches:\n      - main\n\nenv:\n  PROJECT_ID: ${{ secrets.GKE_PROJECT }}\n  GKE_CLUSTER: cluster-1    # Add your cluster name here.\n  GKE_ZONE: us-central1-c   # Add your cluster zone here.\n  DEPLOYMENT_NAME: gke-test # Add your deployment name here.\n  IMAGE: static-site\n\njobs:\n  setup-build-publish-deploy:\n    name: Setup, Build, Publish, and Deploy\n    runs-on: ubuntu-latest\n    environment: production\n\n    steps:\n    - name: Checkout\n      uses: actions/checkout@v6\n\n    # Setup gcloud CLI\n    - uses: google-github-actions/setup-gcloud@1bee7de035d65ec5da40a31f8589e240eba8fde5\n      with:\n        service_account_key: ${{ secrets.GKE_SA_KEY }}\n        project_id: ${{ secrets.GKE_PROJECT }}\n\n    # Configure Docker to use the gcloud command-line tool as a credential\n    # helper for authentication\n    - run: |-\n        gcloud --quiet auth configure-docker\n\n    # Get the GKE credentials so we can deploy to the cluster\n    - uses: google-github-actions/get-gke-credentials@db150f2cc60d1716e61922b832eae71d2a45938f\n      with:\n        cluster_name: ${{ env.GKE_CLUSTER }}\n        location: ${{ env.GKE_ZONE }}\n        credentials: ${{ secrets.GKE_SA_KEY }}\n\n    # Build the Docker image\n    - name: Build\n      run: |-\n        docker build \\\n          --tag \"gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA\" \\\n          --build-arg GITHUB_SHA=\"$GITHUB_SHA\" \\\n          --build-arg GITHUB_REF=\"$GITHUB_REF\" \\\n          .\n\n    # Push the Docker image to Google Container Registry\n    - name: Publish\n      run: |-\n        docker push \"gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA\"\n\n    # Set up kustomize\n    - name: Set up Kustomize\n      run: |-\n        curl -sfLo kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v3.1.0/kustomize_3.1.0_linux_amd64\n        chmod u+x ./kustomize\n\n    # Deploy the Docker image to the GKE cluster\n    - name: Deploy\n      run: |-\n        ./kustomize edit set image gcr.io/PROJECT_ID/IMAGE:TAG=gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA\n        ./kustomize build . | kubectl apply -f -\n        kubectl rollout status deployment/$DEPLOYMENT_NAME\n        kubectl get services -o wide\n```\n\n## Leitura adicional\n\nPara mais informações sobre as ferramentas usadas nesses exemplos, consulte a documentação a seguir:\n\n* Para ver o modelo completo do fluxo de trabalho, confira o [Fluxo de Trabalho \"Construção e Implantação no GKE\"](https://github.com/actions/starter-workflows/blob/main/deployments/google.yml).\n* O mecanismo de personalização YAML do Kubernetes: [Kustomize](https://kustomize.io/).\n* [Como implantar um aplicativo Web conteinerizado](https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app) na documentação do Mecanismo de Kubernetes do Google."}