Saiba como autenticar os serviços do Knative serving com a Federação de Identidade da Carga de Trabalho para GKE para acessar as APIs doGoogle Cloud , como as APIs do Compute, APIs Storage e Database ou APIs de machine learning.
Para autenticar os serviços do Knative serving, você precisa fazer o seguinte:
- Ativar a Federação de Identidade da Carga de Trabalho para GKE no cluster
- Crie uma conta de serviço do Kubernetes e conceda a ela os papéis necessários do IAM.
Depois de seguir essas etapas, implante um novo serviço do Knative serving que usa a identidade que você criou.
Como ativar a Federação de Identidade da Carga de Trabalho para GKE no cluster
Para configurar a federação de identidade da carga de trabalho para GKE com a exibição do Knative, configure a federação de identidade da carga de trabalho da frota em vez de usar um arquivo JSON da conta de serviço do Google Cloud .
Configurar permissões para ativar todas as métricas
Para ativar métricas, como a geração de relatórios de contagem de solicitações ou de latência para o
Google Cloud Observability, é necessário conceder as permissões de gravação do Cloud Monitoring. Por
exemplo, é possível conceder o
papel de gravador de métricas do Monitoring
(roles/monitoring.metricWriter) à conta de serviço do Kubernetes
associada ao Knative serving, porque ele inclui as permissões
necessárias para gravar dados de monitoramento.
Como conceder papéis do IAM a uma conta de serviço do Kubernetes
Qualquer serviço do Knative serving executado como a conta de serviço do Kubernetes que você configurar será autenticado automaticamente com a identidade federada ao acessar as APIs Google Cloud . A conta de serviço do Kubernetes precisa existir no cluster e no namespace do serviço de exibição do Knative em que você quer usar a Federação de Identidade da Carga de Trabalho para GKE.
Se não houver uma conta de serviço do Kubernetes, crie uma no mesmo namespace do Kubernetes que o serviço do Knative serving. Caso contrário, pule para a próxima etapa:
kubectl create serviceaccount --namespace K8S_NAMESPACE KUBERNETES_SERVICEACCOUNT
Conceda os papéis do IAM necessários diretamente à sua conta de serviço do Kubernetes:
gcloud projects add-iam-policy-binding RESOURCE_PROJECT_ID \ --member "principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/K8S_NAMESPACE/sa/KUBERNETES_SERVICEACCOUNT" \ --role "ROLE_NAME" \ --condition=None
Substitua:
- RESOURCE_PROJECT_ID com o ID do projeto Google Cloud em que os recursos Google Cloud de destino estão localizados.
- PROJECT_NUMBER com o número do projeto Google Cloud do cluster em que a conta de serviço do Kubernetes e os serviços do Knative serving estão localizados.
- PROJECT_ID com o ID do projeto Google Cloud para o cluster em que a conta de serviço do Kubernetes e os serviços do Knative serving estão localizados.
- K8S_NAMESPACE e KUBERNETES_SERVICEACCOUNT com o namespace e o nome da sua conta de serviço do Kubernetes.
- ROLE_NAME com o papel do IAM a ser atribuído à sua
conta de serviço do Kubernetes, como
roles/monitoring.metricWriter.
Implantação de um novo serviço para usar a Federação de Identidade da Carga de Trabalho para GKE
Implante um novo serviço do Knative serving que use a Federação de Identidade da Carga de Trabalho para GKE que você criou.
Console
Acesse o Knative serving no Google Cloud console:
Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar uma nova revisão.
Em Configurações avançadas, clique em Contêiner.
Clique no menu suspenso Conta de serviço e selecione a conta de serviço desejada.
Clique em Avançar para acessar a próxima seção.
Na seção Configurar como este serviço é acionado, selecione qual conectividade você quer usar para invocar o serviço.
Clique em Criar para implantar a imagem no Knative serving e aguarde até que a implantação seja concluída.
Linha de comando
Para os serviços atuais, defina a conta de serviço do Kubernetes executando o comando
gcloud run services updatecom os seguintes parâmetros:gcloud run services update SERVICE --service-account KUBERNETES_SERVICEACCOUNT
Substitua:
- SERVICE pelo nome do serviço do Knative serving.
- KUBERNETES_SERVICEACCOUNT com a conta de serviço do Kubernetes usada para criar a identidade da carga de trabalho.
Para novos serviços, defina a conta de serviço do Kubernetes executando o comando
gcloud run deploycom o parâmetro--service-account:gcloud run deploy --image IMAGE_URL --service-account KUBERNETES_SERVICEACCOUNT
Substitua:
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
gcr.io/cloudrun/hello. - KUBERNETES_SERVICEACCOUNT com a conta de serviço do Kubernetes usada para criar a identidade da carga de trabalho.
- IMAGE_URL por uma referência à imagem de contêiner. Por
exemplo,
YAML
Faça o download da configuração de um serviço existente para um
arquivo YAML com o comando gcloud run services describe usando a
sinalização --format=export.
Em seguida, modifique o arquivo YAML e implante
essas alterações com o comando gcloud run services replace.
Modifique apenas os atributos especificados.
Faça o download da configuração do serviço em um arquivo chamado
service.yamlno espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço do Knative serving.
No seu arquivo local, atualize o atributo
serviceAccountName::apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: serviceAccountName: KUBERNETES_SERVICEACCOUNT
Substituir
- SERVICE pelo nome do serviço do Knative serving.
- KUBERNETES_SERVICEACCOUNT com a conta de serviço do Kubernetes que você usou para criar a identidade da carga de trabalho.
Implante a configuração no serviço do Knative serving executando o seguinte comando:
gcloud run services replace service.yaml
Migrar serviços atuais para usar a Federação de Identidade da Carga de Trabalho para GKE
Se você ativou a Federação de Identidade da Carga de Trabalho para GKE em um cluster atual, cada serviço nesse cluster que você quer usar com a Federação de Identidade da Carga de Trabalho para GKE precisa ser migrado. Saiba como migrar serviços existentes.
Próximas etapas
Saiba como gerenciar o acesso aos seus serviços.