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:
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
- Caminho:
Para saber como obter o resumo de uma imagem no Artifact Registry, consulte o artigo Gerir imagens.
- Artifact Registry:
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
oulatest
, 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?
- Saiba mais sobre o modo de teste.
- Saiba como usar o CV.
- Saiba como usar a validação contínua antiga (descontinuada).
- Saiba como usar resumos de imagens em manifestos do Kubernetes.