|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
|
Esta é uma documentação não divulgada para Admission Controller 1.34-dev. |
Proteja webhooks com mTLS com K3s
Este guia mostra como ativar o protocolo TLS mútuo (mTLS) para webhooks do stack SUSE Security Admission Controller ao usar K3s como sua distribuição Kubernetes.
Para mais informações sobre como fortalecer os webhooks, consulte a página de referência.
Pré-requisitos
Antes de instalar o K3s, você precisa criar uma CA (autoridade certificadora) e um certificado de cliente. Você usa para proteger a comunicação entre os Admission Controller webhooks e o servidor API do Kubernetes.
Como primeiro passo, crie o diretório /etc/rancher/k3s/admission/certs:
sudo mkdir -p /etc/rancher/k3s/admission/certs
Crie uma CA raiz e o certificado de cliente
Como usuário root, mude o diretório para o diretório /etc/rancher/k3s/admission/certs e crie todos os certificados necessários:
export FQDN=mtls.kubewarden.io
# Create openssl config file
cat > openssl.cnf <<EOL
[ req ]
default_keyfile = rootCA.key
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
string_mask = utf8only
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
localityName = Locality Name (eg, city)
organizationName = Organization Name (eg, company)
commonName = Common Name (eg, your domain or your CA name)
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:1
keyUsage = critical, keyCertSign, cRLSign
EOL
# Create CA
openssl req -nodes -batch -x509 -sha256 -days 3650 -newkey rsa:4096 -keyout rootCA.key -out rootCA.crt \
-config openssl.cnf
# Create CSR
openssl req -nodes -batch -newkey rsa:4096 -keyout client.key -out client.csr \
-addext "subjectAltName = DNS:$FQDN" -config openssl.cnf
# Create CRT
openssl x509 -req -CA rootCA.crt -CAkey rootCA.key -in client.csr -out client.crt -days 3650 -CAcreateserial \
-extfile <(echo "subjectAltName=DNS:$FQDN")
# Print CRT
openssl x509 -text -noout -in client.crt
Isso cria os seguintes arquivos:
-
client.crt -
client.csr -
client.key -
rootCA.crt -
rootCA.key -
rootCA.srl
Crie o arquivo de configuração do Kubernetes
Crie o arquivo /etc/rancher/k3s/admission/admission.yaml com o seguinte conteúdo:
# /etc/rancher/k3s/admission/admission.yaml
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: ValidatingAdmissionWebhook
configuration:
apiVersion: apiserver.config.k8s.io/v1
kind: WebhookAdmissionConfiguration
kubeConfigFile: "/etc/rancher/k3s/admission/kubeconfig"
- name: MutatingAdmissionWebhook
configuration:
apiVersion: apiserver.config.k8s.io/v1
kind: WebhookAdmissionConfiguration
kubeConfigFile: "/etc/rancher/k3s/admission/kubeconfig"
Por fim, crie um arquivo kubeconfig em /etc/rancher/k3s/admission/kubeconfig:
# /etc/rancher/admission/kubeconfig
apiVersion: v1
kind: Config
users:
- name: "*.kubewarden.svc" # namespace where the kubewarden stack is deployed
user:
client-certificate: /etc/rancher/k3s/admission/certs/client.crt
client-key: /etc/rancher/k3s/admission/certs/client.key
Instale o K3s
Instale o K3s usando o seguinte comando:
curl -sfL https://get.k3s.io | sh -
Aguarde a conclusão da instalação.
Instale o Admission Controller stack
Pré-requisitos
O certificado da CA raiz, que emitiu o certificado do cliente Kubernetes, precisa estar disponível para o Admission Controller stack.
A CA raiz está disponível em /etc/rancher/k3s/admission/certs/rootCA.crt no nó Kubernetes. Você precisa do seu conteúdo em um ConfigMap sob o namespace kubewarden. Você armazena o conteúdo do arquivo rootCA.crt na chave chamada client-ca.crt.
Primeiro, crie o namespace kubewarden:
kubectl create namespace kubewarden
Depois, crie o ConfigMap nele. O seguinte comando, executado no nó Kubernetes, faz isso:
kubectl create configmap -n kubewarden api-server-mtls \
--from-file=client-ca.crt=/etc/rancher/k3s/admission/certs/rootCA.crt
O nome do ConfigMap resultante é api-server-mtls.
Instale o Admission Controller stack
Instale o Admission Controller stack conforme descrito no guia de início rápido. Siga todos os passos, mas ao instalar o chart Helm kubewarden-controller, certifique-se de habilitar os seguintes valores:
-
mTLS.enable: deve sertrue. -
mTLS.configMapName: deve ser o nome doConfigMapcriado anteriormente.
O nome do ConfigMap é api-server-mtls. O comando Helm para instalar o kubewarden-controller é:
helm install --wait -n kubewarden kubewarden-controller kubewarden/kubewarden-controller \
--set mTLS.enable=true \
--set mTLS.configMapName=api-server-mtls
Uma vez que este comando termine, o mTLS garante a instalação do Admission Controller stack e seus webhooks.