Criptografar dados da carga de trabalho em uso com Confidential GKE Nodes

Nesta página, mostramos como aplicar a criptografia de dados em uso nos seus nós e cargas de trabalho usando nós confidenciais do Google Kubernetes Engine. Aplicar a criptografia pode ajudar a aumentar a segurança das cargas de trabalho.

Esta página é destinada a especialistas em segurança que implementam medidas de segurança no GKE. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e papéis de usuário comuns do GKE.

Antes de ler esta página, você precisa conhecer o conceito de dados em uso.

O que são Confidential GKE Nodes?

É possível criptografar suas cargas de trabalho com Confidential GKE Nodes ou com o modo confidencial para o Hyperdisk Balanced.

Confidential GKE Nodes

Os Confidential GKE Nodes usam a VM confidencial do Compute Engine para proteger dados em uso com criptografia de memória baseada em hardware. Os Confidential GKE Nodes são compatíveis com as seguintes tecnologias de computação confidencial:

  • Virtualização criptografada segura (SEV) da AMD
  • AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP)
  • Intel Trust Domain Extensions (TDX)

Para mais informações sobre essas tecnologias e ajuda para escolher a ideal para seus requisitos, consulte a Visão geral de VMs confidenciais.

Os Confidential GKE Nodes não alteram as medidas de segurança que o GKE aplica aos planos de controle do cluster. Para saber mais sobre essas medidas, consulte Segurança do plano de controle. Para ter visibilidade sobre quem acessa os planos de controle nos seus projetos do Google Cloud, use a Transparência no acesso.

É possível ativar os Confidential GKE Nodes para clusters inteiros, para pools de nós específicos ou para cargas de trabalho específicas. A tabela a seguir descreve esses métodos de ativação:

Configuração dos Confidential GKE Nodes Descrição Comportamento
Nível de carga de trabalho Configure os nós confidenciais do GKE em uma ComputeClass e selecione essa ComputeClass em uma carga de trabalho. O GKE cria nós que usam essa configuração para executar os pods.

A configuração de carga de trabalho é compatível com qualquer uma das seguintes tecnologias de computação confidencial, independentemente do modo de cluster ou do tipo de pool de nós:

  • AMD SEV
  • AMD SEV-SNP
  • Intel TDX
Nível do cluster Essa configuração é irreversível.

Ative os Confidential GKE Nodes ao criar um novo cluster do Autopilot ou Standard. Todos os nós no cluster usam Confidential GKE Nodes. Não é possível modificar a configuração do cluster para pools de nós ou cargas de trabalho individuais.

As tecnologias compatíveis no nível do cluster dependem do modo de operação do cluster, da seguinte maneira:

  • Clusters do Autopilot:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
  • Clusters padrão:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
Nível do pool de nós Ative os Confidential GKE Nodes ao criar um novo pool de nós em um cluster Standard. Só é possível usar esse método se os Confidential GKE Nodes estiverem desativados no nível do cluster.

As tecnologias compatíveis no nível do pool de nós dependem do uso do provisionamento automático de nós pelo pool, da seguinte maneira:

  • Pools de nós criados manualmente:
    • AMD SEV
    • AMD SEV-SNP
    • Intel TDX
  • Pools de nós com provisionamento automático:
    • AMD SEV
    • AMD SEV-SNP

Modo confidencial para Hyperdisk Balanced

Também é possível ativar o modo confidencial para o Hyperdisk Balanced no armazenamento do disco de inicialização, que criptografa seus dados em enclaves adicionais com suporte de hardware.

É possível ativar o modo confidencial para o Hyperdisk Balanced ao realizar uma das seguintes ações:

  • Criar um novo cluster
  • Criar um novo pool de nós

Não é possível atualizar um cluster ou um pool de nós para alterar a configuração do modo confidencial para o Hyperdisk Balanced.

A tabela a seguir mostra o comportamento do GKE que se aplica quando você ativa o modo confidencial para a configuração do Hyperdisk Balanced no nível do cluster ou do pool de nós:

Configuração do modo confidencial para o Hyperdisk Balanced Como configurar Comportamento
Nível do cluster Criar um novo cluster Somente o pool de nós padrão no cluster usará o modo confidencial para a configuração do Hyperdisk Balanced. Não é possível fazer o seguinte:
  • Desativar o modo confidencial para a configuração do Hyperdisk Balanced em um pool de nós atual no cluster
  • Ativar o modo confidencial para a configuração do Hyperdisk Balanced em clusters atuais
Nível do pool de nós Criar um novo pool de nós É possível configurar o modo confidencial para o Hyperdisk Balanced em qualquer novo pool de nós no momento da criação. Não é possível atualizar os pools de nós atuais para usar o modo confidencial na configuração do Hyperdisk Balanced.

Preços

Os preços a seguir se aplicam, dependendo de como você configura os Confidential GKE Nodes:

Preços dos Confidential GKE Nodes
Nível de carga de trabalho

Nas cargas de trabalho do Autopilot, os dois custos a seguir se aplicam:

  • Faturamento com base em nós do Autopilot para a série de máquinas do Compute Engine em que os pods são executados. Para mais informações, consulte a seção "Pods com requisitos de hardware específicos" em Preços do Google Kubernetes Engine.
  • Preços dos Confidential GKE Nodes. Para mais informações, consulte a seção "Preços dos Confidential GKE Nodes no Autopilot" em Preços de VMs confidenciais.

Nas cargas de trabalho Standard, os dois custos a seguir se aplicam:

Nível do cluster

Nos clusters do Autopilot, os dois custos a seguir se aplicam:

  • Preços da classe de computação equilibrada, porque a série de máquinas padrão no cluster muda para N2D. Para mais informações, consulte a seção "Pods de classe de computação balanceada e de escalonamento horizontal" em Preços do Google Kubernetes Engine.
  • Preços dos Confidential GKE Nodes. Para mais informações, consulte a seção "Preços dos Confidential GKE Nodes no Autopilot" em Preços de VMs confidenciais.

Nos clusters Standard, os dois custos a seguir se aplicam:

Nível do pool de nós

Nos pools de nós padrão, os seguintes custos se aplicam:

Além disso, os Confidential GKE Nodes podem gerar um pouco mais de dados de registro na inicialização do que os nós que não são Confidential GKE Nodes. Para mais informações sobre preços de registros, consulte Preços do Google Cloud Observability.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ative a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Para usar a Google Cloud CLI nesta tarefa, instale e inicialize a CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão mais recente executando o comando gcloud components update. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.

Requisitos

Os Confidential GKE Nodes têm os seguintes requisitos:

  • Os clusters do Autopilot precisam executar a seguinte versão do GKE:
    • Para o AMD SEV, o cluster precisa executar a versão 1.30.2 ou posterior.
    • Para AMD SEV-SNP e Intel TDX, o cluster precisa executar a versão 1.35.2-gke.1485000 ou posterior.
  • Os clusters padrão precisam executar uma das seguintes versões do GKE, dependendo da tecnologia de Computação confidencial e do sistema operacional do nó que você escolher:

    • Container-Optimized OS:

      • AMD SEV: qualquer versão do GKE.
      • AMD SEV-SNP: 1.32.2-gke.1297000 ou mais recente.
      • Intel TDX: 1.32.2-gke.1297000 ou mais recente.
    • Ubuntu:

      • AMD SEV: 1.33.5-gke.1350000 ou posterior e 1.34.1-gke.2037000 ou posterior.
      • AMD SEV-SNP: 1.33.5-gke.1350000 ou posterior e 1.34.1-gke.2037000 ou posterior.
      • Intel TDX: 1.33.5-gke.1697000 ou posterior e 1.34.1-gke.2909000 ou posterior.
  • Para ativar os nós confidenciais do GKE no nível da carga de trabalho, os clusters do Autopilot e Standard precisam executar o GKE versão 1.33.3-gke.1392000 ou mais recente.

  • Os nós precisam usar um tipo de máquina compatível com a tecnologia de Computação Confidencial que você escolher. Para mais informações, consulte Tipos de máquinas.

  • Os planos de controle e os nós do cluster precisam estar em um local compatível com a tecnologia de Computação confidencial que você escolher. Para mais informações, consulte Zonas.

Configurar Confidential GKE Nodes no nível da carga de trabalho

Para ativar os nós confidenciais do GKE em cargas de trabalho individuais, use uma ComputeClass. As ComputeClasses são recursos personalizados do Kubernetes que permitem definir os atributos de novos nós criados pelo GKE e controlar o comportamento de fallback se o hardware não estiver disponível. As ComputeClasses são compatíveis com todas as tecnologias de Computação confidencial disponíveis para o GKE, mesmo que uma tecnologia específica não seja compatível no nível do cluster ou do pool de nós.

Para configurar os Confidential GKE Nodes no nível da carga de trabalho, siga estas etapas:

  1. Opcional: para clusters do GKE Standard, ative o provisionamento automático de nós para o cluster. Para clusters do Autopilot, pule esta etapa.

    Se você optar por usar ComputeClasses apenas com pools de nós criados manualmente, também será necessário configurar manualmente taints e rótulos de nó nesses pools de nós. Essa configuração manual extra pode fazer com que você perceba menos benefícios ao usar uma ComputeClass para criar Confidential GKE Nodes.

  2. Salve o manifesto ComputeClass a seguir como um arquivo YAML. Para mais informações sobre os campos e valores compatíveis com ComputeClasses, consulte CustomResourceDefinition de ComputeClass.

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: COMPUTE_CLASS
    spec:
      nodePoolConfig:
        confidentialNodeType: CONFIDENTIAL_COMPUTE_TECHNOLOGY
      nodePoolAutoCreation:
        enabled: true
      activeMigration:
        optimizeRulePriority: true
      priorityDefaults:
        location:
          zones: ['ZONE1','ZONE2']
      priorities:
      - machineFamily: MACHINE_SERIES
      - machineType: MACHINE_TYPE
      whenUnsatisfiable: DoNotScaleUp
    

    Substitua:

    • COMPUTE_CLASS: um nome para a nova classe de computação.
    • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de Computação Confidencial a ser usada. Os valores a seguir são compatíveis:

      • SEV para AMD SEV
      • SEV_SNP para AMD SEV-SNP
      • TDX para Intel TDX
    • ZONE1,ZONE2,...: as zonas em que os nós serão criados, como ['us-central1-a','us-central1-b']. Especifique zonas compatíveis com a tecnologia de Computação confidencial que você especificou. Para mais informações, consulte Zonas.

      Opcional: se você estiver provisionando VMs de TPU, use uma zona de IA, como us-central1-ai1a. As zonas de IA são locais especializados e otimizados para cargas de trabalho de IA/ML em regiões do Google Cloud .

    • MACHINE_SERIES: a série de máquinas para os nós, como n2d. Especifique uma série de máquinas compatível com a tecnologia de Computação Confidencial que você especificou. Para mais informações, consulte Tipos de máquinas.

    • MACHINE_TYPE o tipo de máquina dos nós, como n2d-standard-4. Especifique um tipo de máquina compatível com a tecnologia de Computação Confidencial que você especificou. Para mais informações, consulte Tipos de máquinas.

    Esse manifesto inclui o campo spec.nodePoolAutoCreation com um valor de enabled: true, que permite ao GKE criar novos pools de nós usando o provisionamento automático de nós.

  3. Crie a ComputeClass no cluster:

    kubectl apply -f PATH_TO_COMPUTE_CLASS_MANIFEST
    

    Substitua PATH_TO_COMPUTE_CLASS_MANIFEST pelo caminho para o arquivo de manifesto ComputeClass.

  4. Salve o seguinte manifesto de implantação como um arquivo YAML:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
      template:
        metadata:
          labels:
            app: hello
        spec:
          nodeSelector:
            # Replace with the name of a compute class
            cloud.google.com/compute-class: COMPUTE_CLASS 
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            resources:
              requests:
                cpu: "250m"
                memory: "1Gi"

  5. Crie a implantação:

    kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
    

    Substitua PATH_TO_DEPLOYMENT_MANIFEST pelo caminho para o arquivo de manifesto da implantação.

Os novos nós que o GKE cria para essa carga de trabalho usam a tecnologia de Computação confidencial que você especificou. Esses nós são executados em uma das zonas selecionadas, em um tipo de máquina definido na ComputeClass. O GKE adiciona taints e rótulos de nó para que apenas os pods que selecionam a mesma ComputeClass possam ser executados nos nós.

Configurar os Confidential GKE Nodes no nível do cluster

É possível ativar os Confidential GKE Nodes para um cluster inteiro do Autopilot ou do Standard, o que significa que todos os nós nos clusters usam Confidential GKE Nodes. Como resultado, todas as cargas de trabalho implantadas nesse cluster são executadas em Confidential GKE Nodes. Não é possível substituir a configuração do cluster em cargas de trabalho ou pools de nós individuais.

Criar um cluster do Autopilot

Os clusters do Autopilot são compatíveis com os Confidential GKE Nodes apenas no nível do cluster. Quando você ativa os Confidential GKE Nodes, a série de máquinas padrão no cluster do Autopilot muda com base na tecnologia de computação confidencial. Todas as cargas de trabalho são executadas nesses nós confidenciais sem que seja necessário alterar os manifestos de carga de trabalho. As séries de máquinas padrão para cada tecnologia de Computação Confidencial são as seguintes:

  • SEV: a série de máquinas padrão é N2D.
  • SEV_SNP: a série de máquinas padrão é N2D.
  • TDX: a série de máquinas padrão é C3.

Para criar um cluster do Autopilot que use Confidential GKE Nodes, selecione uma das seguintes opções:

gcloud

  • Execute este comando:
gcloud container clusters create-auto CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

Substitua:

  • CLUSTER_NAME: o nome do cluster do Autopilot.
  • CONTROL_PLANE_LOCATION: a região do Compute Engine para o plano de controle do cluster, como us-central1.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de Computação Confidencial a ser usada. Os valores a seguir são compatíveis:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

    Para o AMD SEV, o cluster precisa executar a versão 1.30.2 ou posterior.

    Para AMD SEV-SNP e Intel TDX, o cluster precisa executar a versão 1.35.2-gke.1485000 ou posterior.

Também é possível usar a flag --enable-confidential-nodes no comando de criação do cluster. Se você especificar apenas essa flag no comando, o cluster vai usar o AMD SEV. No entanto, se você especificar a flag --confidential-node-type no mesmo comando, o GKE vai usar o valor especificado na flag --confidential-node-type.

Console

  1. No console do Google Cloud , acesse a página Criar um cluster do Autopilot.

    Acessar "Criar um cluster do Autopilot"

  2. Na seção Princípios básicos do cluster, conclua o seguinte:

    1. Insira o Nome do cluster.
    2. Selecione uma região para o cluster.
  3. No menu de navegação, na seção Configurações avançadas, clique em Segurança.

  4. Marque a caixa de seleção Ativar o Confidential GKE Node.

  5. No menu Tipo, selecione a tecnologia de Computação Confidencial que você quer usar.

    Para o AMD SEV, o cluster precisa executar a versão 1.30.2 ou posterior.

    Para AMD SEV-SNP e Intel TDX, o cluster precisa executar a versão 1.35.2-gke.1485000 ou posterior.

  6. Clique em Criar.

Para mais informações, consulte Criar um cluster do Autopilot com um canal de lançamento e uma versão específicos.

Criar um novo cluster padrão

É possível especificar uma tecnologia de Computação Confidencial para os nós ao criar um cluster padrão. Especificar a tecnologia ao criar um cluster tem os seguintes efeitos:

  • Só é possível criar pools de nós ou cargas de trabalho que usem os Confidential GKE Nodes nesse cluster.
  • Não é possível atualizar o cluster para desativar os Confidential GKE Nodes.
  • Não é possível substituir a tecnologia de Computação Confidencial no nível do cluster em pools de nós ou cargas de trabalho individuais.

A configuração da Computação confidencial no nível do cluster é permanente. Por isso, considere os seguintes casos de uso antes de criar o cluster:

Para criar um cluster do modo Standard que use os nós Confidential GKE Node, selecione uma das seguintes opções:

gcloud

Ao criar um novo cluster, especifique a opção --confidential-node-type na CLI gcloud:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • LOCATION: o local do Compute Engine do plano de controle do cluster. O local precisa ser compatível com a tecnologia de Computação Confidencial que você especificar. Para mais informações, consulte a seção Disponibilidade.
  • MACHINE_TYPE: um tipo de máquina compatível com a tecnologia de Computação Confidencial que você especificar. Para mais informações, consulte a seção Disponibilidade.
  • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do plano de controle que oferecem suporte à nova tecnologia de computação confidencial. Para mais informações, consulte Zonas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de Computação Confidencial a ser usada. Os valores a seguir são compatíveis:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

Também é possível usar a flag --enable-confidential-nodes no comando de criação do cluster. Se você especificar apenas essa flag no comando, o cluster vai usar o AMD SEV. O tipo de máquina especificado no comando precisa ser compatível com o AMD SEV. No entanto, se você especificar a flag --confidential-node-type no mesmo comando, o GKE vai usar o valor especificado na flag --confidential-node-type.

Console

  1. No console do Google Cloud , acesse a página Criar um cluster do Kubernetes.

    Acessar "Criar um cluster do Kubernetes"

  2. No painel de navegação, clique em Configurações avançadas.

  3. Na linha Nós confidenciais, clique em Editar configuração.

  4. Marque a caixa de seleção Ativar o Confidential GKE Node.

  5. Na caixa de diálogo Alterações necessárias, clique em Fazer alterações.

  6. No menu Tipo, selecione a tecnologia de Computação Confidencial que você quer usar.

    Se a tecnologia selecionada exigir uma série de máquinas específica do Compute Engine, uma caixa de diálogo será exibida. Clique em Fazer alterações para atualizar a série de máquinas do pool de nós.

  7. Clique em Salvar.

  8. No menu de navegação, na seção Pools de nós, clique em default-pool.

  9. No painel Detalhes do pool de nós, faça o seguinte:

    1. Marque a caixa de seleção Especificar locais dos nós. Uma lista de zonas na região do cluster é exibida.
    2. Marque as caixas de seleção das zonas que oferecem suporte à tecnologia de Computação Confidencial que você selecionou para os nós. Para mais informações, consulte Zonas.
  10. Clique em Criar.

Para mais informações sobre como criar clusters, consulte Como criar um cluster regional.

Para qualquer pool de nós criado com o modo confidencial para a configuração do Hyperdisk Balanced, apenas os nós no pool de nós são restritos à configuração. Para novos pools de nós criados no cluster, é necessário configurar o modo confidencial na criação.

Configurar o provisionamento automático de nós

É possível configurar o provisionamento automático de nós para usar Confidential GKE Nodes em pools de nós provisionados automaticamente. O provisionamento automático de nós é compatível com as seguintes tecnologias de Computação confidencial:

  • AMD SEV
  • AMD SEV-SNP

Para usar os Confidential GKE Nodes com o provisionamento automático de nós, especifique a flag --enable-confidential-nodes da CLI gcloud ao criar um cluster. As seguintes considerações adicionais se aplicam:

  • Ao criar o cluster, escolha uma tecnologia de Computação Confidencial compatível com o provisionamento automático de nós. Essa escolha é irreversível no nível do cluster.
  • Ao ativar o provisionamento automático de nós em um cluster, ele já precisa usar uma tecnologia de Confidential GKE Nodes compatível com o provisionamento automático de nós.
  • Ao implantar cargas de trabalho, verifique se elas selecionam a tecnologia de Computação confidencial do cluster e uma série de máquinas compatível com essa tecnologia.

Configurar os Confidential GKE Nodes no nível do pool de nós

É possível ativar os Confidential GKE Nodes em pools de nós específicos se eles estiverem desativados no nível do cluster.

O modo confidencial para a configuração do Hyperdisk Balanced precisa ser especificado durante a solicitação de criação do pool de nós.

Criar um novo pool de nós

Para criar um novo pool de nós com os nós confidenciais do GKE ativados, selecione uma das seguintes opções:

gcloud

Execute este comando:

gcloud container node-pools create NODE_POOL_NAME \
    --location=LOCATION \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE \
    --node-locations=ZONE1,ZONE2,... \
    --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY

Substitua:

  • NODE_POOL_NAME: o nome do novo pool de nós.
  • LOCATION: o local do novo pool de nós. O local precisa ser compatível com a tecnologia de Computação confidencial que você especificar. Para mais detalhes, consulte a seção Disponibilidade.
  • CLUSTER_NAME: o nome do cluster.
  • MACHINE_TYPE: um tipo de máquina compatível com a tecnologia de Computação Confidencial que você especificar. Para mais detalhes, consulte a seção Disponibilidade.
  • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do cluster que são compatíveis com a nova tecnologia Computação confidencial. Para mais informações, consulte Zonas.
  • CONFIDENTIAL_COMPUTE_TECHNOLOGY: a tecnologia de Computação Confidencial a ser usada. Os valores a seguir são compatíveis:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

Também é possível usar a flag --enable-confidential-nodes no comando de criação do cluster. Se você especificar apenas essa flag no comando, o cluster vai usar o AMD SEV. O tipo de máquina especificado no comando precisa ser compatível com o AMD SEV. No entanto, se você especificar a flag --confidential-node-type no mesmo comando, o GKE vai usar o valor especificado na flag --confidential-node-type.

Console

  1. No console do Google Cloud , acesse a página de clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique na guia Nós.

  4. Clique em Criar pool de nós gerenciado pelo usuário.

  5. No menu de navegação, clique em Segurança.

  6. No painel Segurança do nó, faça o seguinte:

    1. Marque a caixa de seleção Ativar o Confidential GKE Node.
    2. Na caixa de diálogo Alterações necessárias, clique em Fazer alterações.
    3. No menu Tipo, selecione a tecnologia de Computação Confidencial que você quer usar.

      Se a tecnologia selecionada exigir uma série de máquinas específica do Compute Engine, uma caixa de diálogo será exibida. Clique em Fazer alterações para atualizar a série de máquinas do pool de nós.

  7. No menu de navegação, clique em Detalhes do pool de nós.

  8. No painel Detalhes do pool de nós, faça o seguinte:

    1. Marque a caixa de seleção Especificar locais dos nós. Uma lista de zonas na região do cluster é exibida.
    2. Marque as caixas de seleção das zonas que oferecem suporte à tecnologia de Computação Confidencial que você selecionou para os nós. Para mais informações, consulte Zonas.
  9. Opcional: defina outras configurações para o pool de nós.

  10. Clique em Criar.

Atualizar um pool de nós

Essa mudança exige a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para detalhes sobre essa mudança específica, encontre a linha correspondente na tabela de mudanças manuais que recriam os nós usando uma estratégia de upgrade de nós sem respeitar as políticas de manutenção. Para saber mais sobre as atualizações de nós, consulte Como planejar interrupções de atualização de nós.

É possível atualizar os pools de nós atuais para usar os Confidential GKE Nodes ou mudar a tecnologia de Computação Confidencial usada pelos nós. O pool de nós precisa atender a todos os seguintes requisitos:

  • Os nós usam um tipo de máquina compatível com a tecnologia de Computação Confidencial escolhida.
  • Os nós são executados em zonas compatíveis com a tecnologia de Computação confidencial escolhida.

Como a disponibilidade do tipo de máquina e do local pode variar entre as tecnologias de Computação Confidencial, talvez seja necessário atualizar esses atributos para o pool de nós antes de ativar uma tecnologia específica de Computação Confidencial.

Para atualizar um pool de nós atual para usar os nós confidenciais do GKE, selecione uma das seguintes opções:

gcloud

Use a CLI gcloud para ativar os Confidential GKE Nodes em um pool de nós ou para alterar a tecnologia de Computação Confidencial dos nós.

  1. Se o pool de nós já usar Confidential GKE Nodes, desative-os. Aguarde a conclusão da operação de atualização do pool de nós.
  2. Altere o tipo de máquina do pool de nós e os locais dos nós para valores compatíveis com a nova tecnologia de Computação Confidencial:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --machine-type=MACHINE_TYPE \
        --node-locations=ZONE1,ZONE2,...
    

    Substitua:

    • NODE_POOL_NAME: o nome do pool de nós atual.
    • CLUSTER_NAME: o nome do cluster.
    • CLUSTER_LOCATION: O local do cluster.
    • MACHINE_TYPE: um tipo de máquina compatível com a nova tecnologia de Computação confidencial. Para mais informações, consulte a seção Disponibilidade.
    • ZONE1,ZONE2,...: uma lista separada por vírgulas de zonas na região do cluster que são compatíveis com a nova tecnologia Computação confidencial. Para mais informações, consulte Zonas.
  3. Atualize o pool de nós com a tecnologia de Computação confidencial que será usada:

    gcloud container node-pools update NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location=CLUSTER_LOCATION \
        --confidential-node-type=CONFIDENTIAL_COMPUTE_TECHNOLOGY
    

    Substitua CONFIDENTIAL_COMPUTE_TECHNOLOGY pela tecnologia de Computação Confidencial a ser usada. Os valores a seguir são compatíveis:

    • sev: AMD SEV
    • sev_snp: AMD SEV-SNP
    • tdx: Intel TDX

Console

É possível atualizar um pool de nós para usar os Confidential GKE Nodes somente se o tipo de máquina do pool de nós for compatível com a tecnologia de Computação Confidencial escolhida. Se os nós não usarem um tipo de máquina compatível, use as instruções da CLI gcloud nesta seção.

  1. No console do Google Cloud , acesse a página de clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique na guia Nós.

  4. Clique no nome do pool de nós que você quer modificar.

  5. Na página Detalhes do pool de nós, clique em Editar. O painel Editar pool de nós é aberto.

  6. Na seção Zonas, verifique se as zonas selecionadas são compatíveis com a tecnologia de Computação Confidencial. Para mais informações, consulte Zonas.

    Se uma zona selecionada não for compatível com a tecnologia, faça o seguinte:

    1. Desmarque a caixa de seleção da zona sem suporte.
    2. Opcional: marque as caixas de seleção de outras zonas compatíveis.
    3. Clique em Salvar. Aguarde a conclusão da operação de atualização do pool de nós.
    4. Clique em Editar para reabrir o painel Editar pool de nós.
  7. Na seção Segurança, marque a caixa de seleção Ativar Confidential GKE Nodes.

  8. No menu Tipo, selecione a tecnologia de Computação Confidencial para os nós.

  9. Clique em Salvar.

Colocar cargas de trabalho apenas em pools de nós confidenciais

Se você ativar os Confidential GKE Nodes no nível do cluster, todas as cargas de trabalho serão executadas em nós confidenciais. Não é necessário fazer mudanças nos manifestos. No entanto, se você ativar os Confidential GKE Nodes apenas para pools de nós específicos do modo Standard no nível do pool de nós, será necessário expressar de maneira declarativa que as cargas de trabalho precisam ser executadas apenas em pools de nós com Confidential GKE Nodes.

  • Para exigir que uma carga de trabalho seja executada em uma tecnologia específica de Computação Confidencial, use um seletor de nós com o rótulo cloud.google.com/gke-confidential-nodes-instance-type, como no exemplo a seguir:

    apiVersion: v1
    kind: Pod
    spec:
    # For readability, lines are omitted from this example manifest
      nodeSelector:
        cloud.google.com/gke-confidential-nodes-instance-type: "CONFIDENTIAL_COMPUTE_SELECTOR"
    

    Substitua CONFIDENTIAL_COMPUTE_SELECTOR pelo nome da tecnologia que o pool de nós usa. Esse campo aceita os seguintes valores, que precisam ser especificados em letras maiúsculas:

    • SEV: AMD SEV
    • SEV_SNP: AMD SEV-SNP
    • TDX: Intel TDX
  • Para permitir que uma carga de trabalho seja executada em qualquer nó confidencial, independentemente da tecnologia de Computação Confidencial, use uma regra de afinidade de nó, como no exemplo a seguir:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: Exists
    
  • Para permitir que uma carga de trabalho seja executada em nós que usam apenas um subconjunto das tecnologias de Computação Confidencial disponíveis, use uma regra de afinidade de nó semelhante ao exemplo a seguir:

    apiVersion: v1
    kind: Pod
    spec:
      containers:
      - name: confidential-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.google.com/gke-confidential-nodes-instance-type
                operator: In
                values:
                - SEV
                - SEV_SNP
                - TDX
    

    No campo values, especifique apenas as tecnologias de Computação Confidencial em que você quer executar a carga de trabalho.

Verificar se os nós confidenciais do GKE estão ativados

Para verificar se os clusters ou nós usam Confidential GKE Nodes, inspecione os clusters, pools de nós, nós ou instâncias do Compute Engine.

Verificar clusters

Selecione uma das seguintes opções:

gcloud

Descreva o cluster:

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType)'

Se os Confidential GKE Nodes estiverem ativados, a saída será semelhante a esta:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Console

  1. No console do Google Cloud , acesse a página de clusters do Kubernetes.

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster que você quer inspecionar.

  3. Na seção Segurança, verifique se o campo Confidential GKE Nodes tem o valor Ativado.

Verificar pools de nós

Selecione uma das seguintes opções:

gcloud

Descreva o pool de nós:

gcloud container node-pools describe NODE_POOL_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='yaml(confidentialNodes.confidentialInstanceType,enableConfidentialStorage)'

Se os Confidential GKE Nodes estiverem ativados, a saída será semelhante a esta:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR

Se o modo confidencial para Hyperdisk Balanced também estiver ativado, a saída será semelhante a esta:

confidentialNodes:
  confidentialInstanceType: CONFIDENTIAL_COMPUTE_SELECTOR
enableConfidentialStorage: true

Console

  1. No console do Google Cloud , acesse a página de clusters do Kubernetes.

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster que você quer inspecionar.

  3. Clique no nome de um pool de nós.

  4. Na seção Segurança, verifique se o campo Confidential GKE Nodes tem o valor Ativado.

Verificar um nó específico

  1. Encontre o nome do nó:

    kubectl get nodes
    
  2. Descreva o nó:

    kubectl describe NODE_NAME
    

    Substitua NODE_NAME pelo nome de um nó a ser inspecionado.

    O resultado será o seguinte:

    Name:               gke-cluster-1-default-pool-affsf335r-asdf
    Roles:              <none>
    Labels:             cloud.google.com/gke-boot-disk=pd-balanced
                        cloud.google.com/gke-container-runtime=containerd
                        cloud.google.com/gke-confidential-nodes-instance-type=CONFIDENTIAL_COMPUTE_SELECTOR
                        cloud.google.com/gke-nodepool=default-pool
                        cloud.google.com/gke-os-distribution=cos
                        cloud.google.com/machine-family=e2
    # lines omitted for clarity
    

    Nessa saída, o rótulo de nó cloud.google.com/gke-confidential-nodes-instance-type indica que o nó é confidencial.

Definir restrições da política da organização

Defina uma restrição de política da organização para garantir que todos os recursos da VM criados na sua organização sejam instâncias de VM confidenciais. No GKE, é possível personalizar a restrição Restringir a computação não confidencial para exigir que todos os novos clusters sejam criados com uma das tecnologias de computação confidencial disponíveis ativadas. Adicione o nome do serviço da API container.googleapis.com à lista de proibições ao aplicar restrições da política da organização. Por exemplo:

gcloud resource-manager org-policies deny \
    constraints/compute.restrictNonConfidentialComputing compute.googleapis.com container.googleapis.com \
    --project=PROJECT_ID

Substitua PROJECT_ID pelo ID do projeto.

Criar um PersistentVolume para o modo confidencial do Hyperdisk Balanced

Para orientações sobre os valores permitidos para capacidade ou IOPS, consulte Planejar o nível de desempenho do volume do Hyperdisk.

Os exemplos a seguir mostram como criar um modo confidencial para o StorageClass do Hyperdisk Balanced para cada tipo de Hyperdisk:

Hiperdisco equilibrado

  1. Salve o manifesto em um arquivo chamado confidential-hdb-example-class.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: balanced-storage
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
      provisioned-throughput-on-create: "250Mi"
      provisioned-iops-on-create: "7000"
      enable-confidential-storage: true
      disk-encryption-kms-key: "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/HSM_KEY_NAME"
    

    Substitua:

    • KMS_PROJECT_ID: o projeto proprietário da chave do Cloud KMS.
    • REGION: a região onde o disco está localizado.
    • KEY_RING: o nome do keyring que inclui a chave.
    • HSM_KEY_NAME: o nome da chave do HSM usada para criptografar o disco.
  2. Crie o StorageClass

    kubectl create -f hdb-example-class.yaml
    
  3. Crie uma reivindicação de volume permanente do Hyperdisk para o GKE que use o modo confidencial para o volume do Hyperdisk Balanced.

Para encontrar o nome das StorageClasses disponíveis no cluster, execute o seguinte comando:

kubectl get sc

Limitações

Os Confidential GKE Nodes têm as seguintes limitações:

O modo confidencial do Hyperdisk Balanced tem as seguintes limitações:

Limitações da migração em tempo real

A migração em tempo real está disponível apenas para determinados tipos de máquina de VM confidencial. Para mais informações, consulte a coluna "Suporte à migração em tempo real" em Tipos de máquina.

Se um evento de manutenção do host ocorrer em um nó que não oferece suporte à migração em tempo real, o nó entrará em um estado NotReady. Os pods em execução vão ter interrupções até que o nó fique pronto novamente. Se a manutenção levar mais de cinco minutos, o GKE poderá tentar recriar os pods em outros nós. Para mais informações sobre como reduzir o impacto nas cargas de trabalho, consulte Gerenciar interrupções em nós do GKE que não fazem migração em tempo real.

Desativar os Confidential GKE Nodes

Essa mudança exige a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para detalhes sobre essa mudança específica, encontre a linha correspondente na tabela de mudanças manuais que recriam os nós usando uma estratégia de upgrade de nós sem respeitar as políticas de manutenção. Para saber mais sobre as atualizações de nós, consulte Como planejar interrupções de atualização de nós.

Só é possível desativar os Confidential GKE Nodes em pools de nós do modo Standard. Se o pool de nós estiver em um cluster que usa Confidential GKE Nodes no nível do cluster, não será possível desativar o recurso no nível do pool de nós. Para desativar os Confidential GKE Nodes, selecione uma das seguintes opções:

gcloud

Execute este comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CLUSTER_LOCATION \
    --no-enable-confidential-nodes

Console

  1. No console do Google Cloud , acesse a página de clusters do Kubernetes:

    Acessar os clusters do Kubernetes

  2. Clique no nome do cluster padrão.

  3. Clique na guia Nós.

  4. Clique no nome do pool de nós que você quer modificar.

  5. Na página Detalhes do pool de nós, clique em Editar. O painel Editar pool de nós é aberto.

  6. Na seção Segurança, desmarque a caixa de seleção Ativar Confidential GKE Nodes.

  7. Clique em Salvar.

A seguir