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.