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, os 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 de DNS do Kubernetes. Com o recurso de SANs extras do certificado do servidor da API personalizado, é possível adicionar outros domínios, subdomínios e endereços IP como SANs ao certificado do servidor da API Kubernetes para o cluster.
Para especificar SANs personalizados para o certificado do servidor da 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. Você pode adicionar e
atualizar esse campo ao criar um cluster ou a qualquer momento depois.
...
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 especificados adicionais quando o cluster fica disponível.
Adicionar ou atualizar domínios de um cluster
Como o campo apiServerCertExtraSANs
é mutável, você pode 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 da API para incluir os domínios extras modificados.
Os controladores do 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 eles estejam em conformidade com as convenções de nome de domínio do 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 mudança é propagada para os servidores da 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
É possível que haja inatividade ao atualizar o campo SANs extra do certificado do servidor da API em um cluster em execução:
Em clusters de alta disponibilidade (HA), as instâncias do servidor da 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ê veja uma resposta indicando que o servidor da API está sendo encerrado. Se você receber essa resposta, tente 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 mudança leva de 5 a 20 minutos para ser propagada a todos os servidores de API, dependendo do número de nós do plano de controle no cluster e da carga dele.