|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
|
Dies ist eine unveröffentlichte Dokumentation für Admission Controller 1.34-dev. |
Sichern Sie Webhooks mit mutual Transport Layer Security (mTLS) mit K3s.
Diese Anleitung zeigt Ihnen, wie Sie die gegenseitige Transport Layer Security (mTLS) für Webhooks des SUSE Security Admission Controller-Stacks aktivieren, wenn Sie K3s als Ihre Kubernetes-Distribution verwenden.
Für weitere Informationen zur Absicherung der Webhooks, siehe die Referenzseite.
Voraussetzungen
Bevor Sie K3s installieren, müssen Sie eine Zertifizierungsstelle (CA) und ein Client-Zertifikat erstellen. Sie verwenden es, um die Kommunikation zwischen den Webhooks des Admission Controller und dem Kubernetes API-Server abzusichern.
Als ersten Schritt erstellen Sie das /etc/rancher/k3s/admission/certs-Verzeichnis:
sudo mkdir -p /etc/rancher/k3s/admission/certs
Erstellen Sie eine Root-CA und das Client-Zertifikat
Als root-Benutzer wechseln Sie in das /etc/rancher/k3s/admission/certs-Verzeichnis und erstellen alle benötigten Zertifikate:
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
Dies erstellt die folgenden Dateien:
-
client.crt -
client.csr -
client.key -
rootCA.crt -
rootCA.key -
rootCA.srl
Erstellen Sie die Kubernetes-Konfigurationsdatei
Erstellen Sie die /etc/rancher/k3s/admission/admission.yaml-Datei mit dem folgenden Inhalt:
# /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"
Erstellen Sie schließlich eine kubeconfig-Datei unter /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
Installieren Sie K3s
Installieren Sie K3s mit dem folgenden Befehl:
curl -sfL https://get.k3s.io | sh -
Warten Sie ab, bis die Installation abgeschlossen ist.
Installieren Sie den Admission Controller Stack
Voraussetzungen
Das Zertifikat der Root-CA, die das Kubernetes-Client-Zertifikat ausgestellt hat, muss dem Admission Controller Stack zur Verfügung stehen.
Die Root-CA ist unter /etc/rancher/k3s/admission/certs/rootCA.crt auf dem Kubernetes-Knoten verfügbar. Sie benötigen den Inhalt in einer ConfigMap im Namespace kubewarden. Sie speichern den Inhalt der rootCA.crt-Datei im Schlüssel mit dem Namen client-ca.crt.
Zuerst erstellen Sie den kubewarden Namespace:
kubectl create namespace kubewarden
Dann erstellen Sie den ConfigMap darin. Der folgende Befehl, der auf dem Kubernetes-Knoten ausgeführt wird, erledigt das:
kubectl create configmap -n kubewarden api-server-mtls \
--from-file=client-ca.crt=/etc/rancher/k3s/admission/certs/rootCA.crt
Der Name des resultierenden ConfigMap ist api-server-mtls.
Installieren Sie den Admission Controller Stack
Installieren Sie den Admission Controller Stack wie im Schnellstartleitfaden beschrieben. Befolgen Sie alle Schritte, aber stellen Sie beim Installieren des kubewarden-controller Helm-Charts sicher, dass Sie die folgenden Werte aktivieren:
-
mTLS.enable: musstruesein. -
mTLS.configMapName: muss der Name des zuvor erstelltenConfigMapsein.
Der ConfigMap Name ist api-server-mtls. Der Helm-Befehl zur Installation des kubewarden-controller lautet:
helm install --wait -n kubewarden kubewarden-controller kubewarden/kubewarden-controller \
--set mTLS.enable=true \
--set mTLS.configMapName=api-server-mtls
Sobald dieser Befehl abgeschlossen ist, sichert mTLS die Installation des Admission Controller Stacks und seiner Webhooks.