Adicionar domínios ao certificado do servidor de API

Um nome alternativo do assunto (SAN, na sigla em inglês) é um recurso de certificados SSL que permite definir os nomes de domínio e subdomínios protegidos por um certificado. Em um cluster do Google Distributed Cloud, as SANs padrão do certificado do servidor da API Kubernetes incluem os endereços IP e VIP dos nós do plano de controle e os nomes DNS do Kubernetes. Com o recurso extra de SANs do certificado do servidor de API personalizado, é possível adicionar outros domínios, subdomínios e endereços IP como SANs ao certificado do servidor da API Kubernetes referente ao cluster.

Para especificar SANs personalizadas para o certificado do servidor de API, use o campo controlPlane.apiServerCertExtraSANs na especificação de configuração do cluster. Esse campo recebe uma lista de nomes de domínio e endereços IP. Este campo é opcional e mutável. É possível adicionar e atualizar esse campo ao criar um cluster ou a qualquer momento depois disso.

...
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 domínios durante a criação do cluster

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

Adicionar ou atualizar domínios para um cluster existente

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

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

  • Os controladores de cluster reiniciam o servidor da 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 (em inglês).

  • 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 da API 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
    
    

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

  • Em clusters de alta disponibilidade (HA, na sigla em inglês), 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, você pode ver uma resposta indicando que o servidor da API está sendo encerrado. Se você vir essa resposta, tente fazer a solicitação novamente.

  • Em clusters que não são de alta disponibilidade, pode ocorrer uma breve interrupção 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 da API, dependendo do número de nós do plano de controle no cluster e da carga do cluster.