Adicionar domínios ao certificado do servidor da API

Os nomes alternativos do sujeito (SANs, na sigla em inglês) personalizados permitem estender a cobertura do certificado do servidor de API para outros domínios, subdomínios e endereços IP. Em um cluster do Google Distributed Cloud, os SANs padrão incluem apenas os endereços IP e VIP dos nós do plano de controle e os nomes de DNS padrão do Kubernetes. É possível configurar SANs personalizadas usando o campo mutável controlPlane.apiServerCertExtraSANs no arquivo de configuração do cluster, durante a criação do cluster ou a qualquer momento depois.

Adicionar domínios durante a criação do cluster

Quando você adiciona SANs extras ao criar um cluster, o certificado do servidor de API Kubernetes inclui os domínios e endereços IP adicionais especificados quando o cluster fica disponível.

O exemplo a seguir mostra o campo apiServerCertExtraSANs em um arquivo de configuração de cluster:

...
kind: Cluster
metadata:
  name: sample001
  namespace: cluster-sample001
spec:
  type: user
  ...
  controlPlane:
    apiServerCertExtraSANs:
    - "demo-dns.example.com"
    - "sample-dns.com"
    nodePoolSpec:
      nodes:
      - address: 10.200.0.20
  clusterNetwork:
  ...

Adicionar ou atualizar domínios de um cluster atual

Como o campo apiServerCertExtraSANs é mutável, é possível adicionar ou atualizar o campo a qualquer momento para clusters atuais. Quando você modifica o campo apiServerCertExtraSANs no cluster, ele aciona as seguintes atividades:

  • Os controladores de cluster do Google Distributed Cloud regeneram o certificado do servidor de API para incluir os domínios extras modificados.

  • Os controladores do cluster reiniciam o servidor de API para recarregar o novo certificado.

  • Os novos valores de apiServerCertExtraSANs são verificados por um webhook para garantir que estejam em conformidade com as convenções de nome de domínio RFC 1035.

  • O pool de nós do plano de controle entra em um estado de reconciliação.

    Control Plane Node Pool Status:
      Anthos Bare Metal Version:  1.28.0-gke.435
      Anthos Bare Metal Versions:
        1.28.0-gke.435:  3
      Conditions:
        ...
        Last Transition Time:  2023-11-15T18:23:49Z
        Observed Generation:   1
        Reason:                Reconciling
        Status:                True
        Type:                  Reconciling
    
  • O pool de nós fica pronto depois que a alteração é propagada para os servidores de API do Kubernetes em cada nó do plano de controle.

    Control Plane Node Pool Status:
      Anthos Bare Metal Version:  1.28.0-gke.435
      Anthos Bare Metal Versions:
        1.28.0-gke.435:  3
      Conditions:
        . . .
        Last Transition Time:  2023-11-15T18:32:25Z
        Observed Generation:   1
        Reason:                ReconciliationCompleted
        Status:                False
        Type:                  Reconciling
    
    

Pode haver inatividade ao atualizar o campo de SANs extras do certificado do servidor de API em um cluster em execução:

  • Em clusters de alta disponibilidade (HA), as instâncias do servidor de API são reiniciadas sequencialmente. Ainda é possível interagir com o cluster durante a atualização do certificado, porque o balanceador de carga distribui solicitações para cada servidor de API. No entanto, talvez você receba uma resposta indicando que o servidor de API está sendo encerrado. Se você receber essa resposta, tente fazer a solicitação novamente.

  • Em clusters que não são de alta disponibilidade, pode haver uma breve interrupção de cerca de um minuto enquanto um servidor de API é reiniciado para recarregar o novo certificado.

A alteração leva de 5 a 20 minutos para ser propagada para todos os servidores de API, dependendo do número de nós do plano de controle no cluster e da carga do cluster.