Hilf mit, diese Seite zu verbessern
Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Sichere Workloads mit Kubernetes Zertifikate
Das Tool Kubernetes Certificates automatisiert die Bereitstellung von X.509-Anmeldeinformationen. APICertificateSigningRequest
(CSR) verwenden, um zu verlangen, dass ein benannter Unterzeichner das Zertifikat signiert. Ihre Anfragen werden entweder genehmigt oder abgelehnt, bevor sie signiert werden. Kubernetes unterstützt sowohl integrierte Unterzeichner als auch benutzerdefinierte Unterzeichner mit klar definiertem Verhalten. Auf diese Weise können Kunden vorhersagen, was mit ihren passiert. CSRs Weitere Informationen zur Zertifikatsignatur finden Sie unter Signieren von Anforderungen
Einer der integrierten Unterzeichner ist kubernetes.io/legacy-unknown
. The v1beta1
API of CSR Resource hat diesen noch unbekannten Unterzeichner geehrt. Die stabile Version v1
API von erlaubt es jedoch CSR nicht, auf gesetzt signerName
zu werden. kubernetes.io/legacy-unknown
In der EKS Amazon-Version 1.21
und früher war der legacy-unknown
Wert als signerName
in zulässig v1beta1
CSRAPI. APIDadurch kann die Amazon EKS Certificate Authority (CA) Zertifikate generieren. Jedoch in Kubernetes Version1.22
, die v1beta1
CSR API wurde durch die ersetzt v1
CSRAPI. Das signerName von „Legacy-Unknown“ wird API nicht unterstützt. Wenn Sie Amazon EKS CA für die Generierung von Zertifikaten auf Ihren Clustern verwenden möchten, müssen Sie einen benutzerdefinierten Unterzeichner verwenden. Es wurde in der EKS Amazon-Version eingeführt1.22
. Um die CSR v1
API Version zu verwenden und ein neues Zertifikat zu generieren, müssen Sie alle vorhandenen Manifeste und API Clients migrieren. Bestehende Zertifikate, die mit dem vorhandenen Zertifikat erstellt wurden, v1beta1
API sind gültig und funktionieren, bis das Zertifikat abläuft. Diese umfasst die folgenden Funktionen:
-
Vertrauensverteilung: keine. Für diesen Unterzeichner gibt es keine Standardvertrauensstellung oder -verteilung in einem Kubernetes Cluster.
-
Zulässige Themen: beliebig
-
Zulässige x509-Erweiterungen: Erlaubt subjectAltName Nutzungserweiterungen und verwirft andere Erweiterungen
-
Zulässige Schlüsselnutzung: Darf keine anderen Nutzungen als [„Schlüsselverschlüsselung“, „digitale Signatur“, „Serverauth“] enthalten
Anmerkung
Das Signieren von Clientzertifikaten wird nicht unterstützt.
-
Ablauf/Zertifikatslebensdauer: 1 Jahr (Standard und Maximum)
-
CA-Bit zulässig/unzulässig: unzulässig
Beispielgenerierung mit CSR signerName
Diese Schritte zeigen, wie Sie ein Serving-Zertifikat für die DNS myserver.default.svc
Namensverwendung generierensignerName:
beta.eks.amazonaws.com/app-serving
. Verwenden Sie dies als Leitfaden für Ihre eigene Umgebung.
-
Führen Sie den
openssl genrsa -out myserver.key 2048
Befehl aus, um einen RSA privaten Schlüssel zu generieren.openssl genrsa -out myserver.key 2048
-
Führen Sie den folgenden Befehl aus, um eine Zertifikatsanforderung zu erstellen.
openssl req -new -key myserver.key -out myserver.csr -subj "/CN=myserver.default.svc"
-
Generieren Sie einen
base64
Wert für die CSR Anfrage und speichern Sie ihn in einer Variablen, um ihn in einem späteren Schritt zu verwenden.base_64=$(cat myserver.csr | base64 -w 0 | tr -d "\n")
-
Führen Sie den folgenden Befehl aus, um eine Datei mit dem Namen
mycsr.yaml
zu erstellen. Im folgenden Beispiel istbeta.eks.amazonaws.com/app-serving
dersignerName
.cat >mycsr.yaml <<EOF apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: myserver spec: request: $base_64 signerName: beta.eks.amazonaws.com/app-serving usages: - digital signature - key encipherment - server auth EOF
-
Reichen Sie das einCSR.
kubectl apply -f mycsr.yaml
-
Genehmigen Sie das Bereitstellungszertifikat.
kubectl certificate approve myserver
-
Stellen Sie sicher, dass das Zertifikat ausgestellt wurde.
kubectl get csr myserver
Eine Beispielausgabe sieht wie folgt aus.
NAME AGE SIGNERNAME REQUESTOR CONDITION myserver 3m20s beta.eks.amazonaws.com/app-serving kubernetes-admin Approved,Issued
-
Exportieren Sie das ausgestellte Zertifikat.
kubectl get csr myserver -o jsonpath='{.status.certificate}'| base64 -d >
myserver.crt
Überlegungen zur Zertifikatsignierung vor dem Upgrade Ihres Clusters auf Kubernetes 1.24
In Kubernetes 1.23
und früher wurden kubelet
Serverzertifikate mit nicht überprüfbarer IP-Adresse und alternativen DNS Betreffnamen (SANs) automatisch mit nicht verifizierbaren Namen ausgestellt. SANs Sie SANs werden im bereitgestellten Zertifikat weggelassen. In Clustern 1.24
und neueren Versionen werden kubelet
keine Serverzertifikate ausgestellt, wenn ein Zertifikat nicht verifiziert werden SAN kann. Dadurch wird verhindert, dass die kubectl exec
- und kubectl logs
-Befehle funktionieren.
Stellen Sie vor dem Upgrade Ihres Clusters auf fest1.24
, ob Ihr Cluster über Zertifikatssignieranfragen (CSR) verfügt, die nicht genehmigt wurden, indem Sie die folgenden Schritte ausführen:
-
Führen Sie den folgenden Befehl aus.
kubectl get csr -A
Eine Beispielausgabe sieht wie folgt aus.
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION csr-
7znmf
90m kubernetes.io/kubelet-serving system:node:ip-192-168-42-149
.region
.compute.internal <none> Approved csr-9xx5q
90m kubernetes.io/kubelet-serving system:node:ip-192-168-65-38
.region
.compute.internal <none> Approved, IssuedWenn in der zurückgegebenen Ausgabe ein Zeichen CSR mit einem
kubernetes.io/kubelet-serving
Unterzeichner angezeigt wird, das Approved
aber nichtIssued
für einen Knoten bestimmt ist, müssen Sie die Anfrage genehmigen. -
Genehmigen Sie die CSR manuell. Ersetzen Sie
csr-
durch Ihren eigenen Wert.7znmf
kubectl certificate approve csr-
7znmf
Für die automatische Genehmigung CSRs in future empfehlen wir, dass Sie einen für die Genehmigung Verantwortlichen einrichten, der automatisch validieren und genehmigen kannCSRs, wenn diese IP-Adressen enthalten oder DNS SANs die Amazon nicht verifizieren EKS kann.