Implemente contentores (GKE, Distributed Cloud)

Esta página explica como implementar uma imagem de contentor num cluster do GKE (no Google Cloud ou Google Distributed Cloud) onde a autorização binária está ativada. Os comandos kubectl que usa para implementar a imagem são os mesmos que usa para implementar imagens em clusters que não usam a autorização binária.

Antes de começar

Certifique-se de que tem a API Binary Authorization ativada no seu projeto e um cluster do GKE com a Autorização binária ativada. Consulte as instruções para configurar no Google Kubernetes Engine ou configurar na Distributed Cloud.

Instale o kubectl para interagir com o GKE.

Configure o kubectl

Tem de atualizar o ficheiro kubeconfig local para a sua instalação do kubectl. Isto fornece as credenciais e as informações de ponto final necessárias para aceder ao cluster no GKE ou no Distributed Cloud.

Para configurar o kubectl, execute o seguinte comando gcloud:

GKE

gcloud container clusters get-credentials \
    --zone ZONE \
    CLUSTER_NAME

Substitua o seguinte:

  • ZONE: o nome da zona do GKE onde o cluster está a ser executado, por exemplo, us-central1-a
  • CLUSTER_NAME: o nome do cluster

Distributed Cloud

gcloud container fleet memberships get-credentials \
    --location LOCATION \
    MEMBERSHIP_NAME

Substitua o seguinte:

  • LOCATION: a localização da associação da frota do cluster do GKE, por exemplo, global
  • MEMBERSHIP_NAME: o nome da subscrição da frota do cluster do GKE

Implemente a imagem de contentor

Implemente a imagem de contentor da seguinte forma:

  1. Configure as variáveis de ambiente:

    POD_NAME=POD_NAME
    IMAGE_PATH=IMAGE_PATH
    IMAGE_DIGEST=IMAGE_DIGEST
    

    Substitua o seguinte:

    • POD_NAME: o nome que quer usar para a carga de trabalho do GKE
    • IMAGE_PATH: caminho da imagem no Artifact Registry ou noutro registo.
    • IMAGE_DIGEST: o resumo do manifesto de imagens. Segue-se um exemplo:

      • Artifact Registry:
        • Caminho: us-docker.pkg.dev/google-samples/containers/gke/hello-app
        • Resumo: sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567

      Para saber como obter o resumo de uma imagem no Artifact Registry, consulte o artigo Gerir imagens.

  2. Implemente a imagem através do comando kubectl run.

    Tem de implementar a imagem através do resumo, em vez de uma etiqueta como 1.0 ou latest, uma vez que a autorização binária usa o resumo para procurar atestações.

    Para implementar a imagem, execute o seguinte comando kubectl:

    kubectl run ${POD_NAME} \
        --image ${IMAGE_PATH}@${IMAGE_DIGEST}
    

    Agora, valide se a implementação foi bloqueada pela autorização binária:

    kubectl get pods
    

    O seu Pod é apresentado.

Abertura em caso de falha

Se o GKE não conseguir alcançar o servidor de autorização binária por qualquer motivo ou se o servidor devolver um erro, o GKE não consegue determinar se a autorização binária permitiria ou recusaria a imagem. Neste caso, o GKE falha na abertura: por predefinição, permite a implementação da imagem, mas cria uma entrada de registo nos registos de auditoria do Google Cloud para registar o motivo pelo qual a imagem foi permitida.

A aplicação do GKE falha porque existe uma relação de compromisso entre a fiabilidade e a segurança. O GKE envia um pedido à autorização binária sempre que um pod é criado ou atualizado. Isto inclui cenários em que os pods são criados ou atualizados automaticamente por controladores de carga de trabalho do Kubernetes de nível superior, como ReplicaSets e StatefulSets. Se o GKE falhar e for fechado em vez de aberto, qualquer interrupção da autorização binária impede a execução destes pods. Além disso, quando os pods são recusados, a comutação por falha pode levar a falhas em cascata, uma vez que o tráfego redirecionado sobrecarrega os pods que ainda estão em execução. Qualquer indisponibilidade da autorização binária pode acionar uma indisponibilidade completa do cluster, mesmo sem implementar novas imagens.

Implementar imagens que violam a política

A autorização binária suporta uma funcionalidade conhecida como breakglass que permite a implementação de uma imagem, mesmo que viole a política.

Para mais informações, consulte o artigo Usar o acesso de emergência

Limpar

Para limpar, elimine o pod executando o seguinte comando:

  kubectl delete pod ${POD_NAME}
  

O que se segue?