Configuração de Certificados CA para Kubernetes em Instalação Binária

Preparação das Ferrametnas de Criptografia

Para iniciar a infraestrutura de segurança, é necessário instalar o conjunto de utilitários cfssl em um dos nós de controle. Este processo cria os binários necessários para gerar e gerenciar certificados TLS.

[root@control-plane ~]# mkdir -p /opt/kubernetes/bin
[root@control-plane ~]# export CFSSL_URL="https://pkg.cfssl.org/R1.2"
[root@control-plane ~]# curl -L ${CFSSL_URL}/cfssl_linux-amd64 -o /opt/kubernetes/bin/cfssl
[root@control-plane ~]# curl -L ${CFSSL_URL}/cfssljson_linux-amd64 -o /opt/kubernetes/bin/cfssljson
[root@control-plane ~]# curl -L ${CFSSL_URL}/cfssl-certinfo_linux-amd64 -o /opt/kubernetes/bin/cfssl-certinfo
[root@control-plane ~]# chmod +x /opt/kubernetes/bin/*

Nota: Estes comandos devem ser executados exclusivamente no nó primário de controle.

Definição da Política da Autoridade Certificadora

A configuração da CA define perfis de assinatura que determinam a validade e o uso de cada certificado emitido. Crie um diretório de trabalho e gere os arquivos base para personalização.

[root@control-plane ~]# mkdir -p /opt/kubernetes/work
[root@control-plane ~]# cd /opt/kubernetes/work
[root@control-plane work]# cfssl print-defaults config > config.json
[root@control-plane work]# cfssl print-defaults csr > csr.json

Em seguida, defina o arquivo ca-config.json. Este arquivo especifica que os certificados assinados com o perfil kubernetes terão validade de 100 anos e permitirão autenticação mútua (servidor e cliente).

[root@control-plane work]# cat > ca-config.json <<eof auth="" encipherment="" eof=""></eof>
  • signing: Indica que este certificado pode assinar outros certificados (CA=TRUE).
  • server auth: Permite que clientes validem a identidade do servidor.
  • client auth: Permite que o servidor valide a identidade do cliente.

Criação da Solicitação de Certificado (CSR)

O arquivo de solicitação contém as informações da entidade que receberá o certificado raiz. É crucial que os campos de identificação sejam únicos para evitar conflitos de assinatura no futuro.

[root@control-plane work]# cat > ca-csr.json <<eof eof="" paulo=""></eof>

Detalhes dos campos:

  • CN: Nome comum, utilizado pelo kube-apiserver para identificar o usuário.
  • O: Organização, mapeada para o grupo do usuário no cluster.
  • C, ST, L: Informações geográficas (País, Estado, Localidade).

Geração dos Arquivos da CA

Com os arquivos de configuração e solicitação prontos, execute o comando para gerar a chave privada e o certificado público da autoridade raiz.

[root@control-plane work]# cfssl gencert -initca ca-csr.json | cfssljson -bare ca

Os arquivos ca.pem e ca-key.pem serão criados no diretório atual. Para que a autenticação mútua TLS funcione em todo o cluster, estes arquivos devem estar presentes em todos os nós.

Distribuição dos Certificados para os Nós

Utilize um script para copiar os arquivos gerados e a configuração para o diretório padrão de certificados em cada máquina do cluster.

[root@control-plane work]# source /root/environment.sh
[root@control-plane work]# for host in ${K8S_NODES[@]}; do
  echo ">>> Enviando para ${host}"
  ssh root@${host} "mkdir -p /etc/kubernetes/cert"
  scp ca*.pem ca-config.json root@${host}:/etc/kubernetes/cert
done

Nota: Certifique-se de que a variável de ambiente K8S_NODES contenha a lista correta de endereços IP de todos os servidores participantes.

Tags: kubernetes cfssl tls pki Segurança

Publicado em 8-21 12:22