Aiutaci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Proteggi i carichi di lavoro con Kubernetes certificates
Il Kubernetes I certificati automatizzano il provisioning delle credenziali X.509. APICertificateSigningRequest
(CSR) per richiedere che un firmatario indicato firmi il certificato. Le tue richieste vengono approvate o rifiutate prima di essere firmate. Kubernetes supporta sia i firmatari integrati che i firmatari personalizzati con comportamenti ben definiti. In questo modo, i clienti possono prevedere cosa succede ai loro. CSRs Per ulteriori informazioni sulla firma dei certificati, consulta firma delle richieste
Uno dei firmatari integrati è kubernetes.io/legacy-unknown
. The v1beta1
API of CSR Resource ha onorato questo firmatario sconosciuto per tradizione. Tuttavia, lo stable v1
API of CSR non consente di impostarlo su. signerName
kubernetes.io/legacy-unknown
EKSLa versione Amazon 1.21
e le versioni precedenti consentivano il legacy-unknown
valore come signerName
in v1beta1
CSRAPI. Ciò API consente ad Amazon EKS Certificate Authority (CA) di generare certificati. Tuttavia, in Kubernetes versione1.22
, è v1beta1
CSR API stata sostituita dalla v1
CSRAPI. Questo API non supporta l' signerName espressione «legacy-unknown». Se desideri utilizzare Amazon EKS CA per generare certificati sui tuoi cluster, devi utilizzare un firmatario personalizzato. È stato introdotto nella EKS versione Amazon1.22
. Per utilizzare la CSR v1
API versione e generare un nuovo certificato, è necessario migrare tutti i manifesti e API i client esistenti. I certificati esistenti creati con quello esistente v1beta1
API sono validi e funzionano fino alla scadenza del certificato. Questo include gli output seguenti:
-
Distribuzione di attendibilità: nessuna. Non esiste un tipo di trust o distribuzione standard per questo firmatario in un Kubernetes ammasso.
-
Argomenti consentiti: tutti
-
Estensioni x509 consentite: rispetta le estensioni di utilizzo delle chiavi subjectAltName e scarta le altre estensioni
-
Utilizzo delle chiavi consentite: non devono includere altri utilizzi oltre ["key encipherment", "digital signature", "server auth"]
Nota
La firma dei certificati client non è supportata.
-
Scadenza/durata del certificato: 1 anno (predefinita e massima)
-
Bit CA consentito/non consentito: non consentito
CSRGenerazione di esempi con signerName
Questi passaggi mostrano come generare un certificato di servizio per l'myserver.default.svc
utilizzo DNS del nomesignerName: beta.eks.amazonaws.com/app-serving
. Utilizzala come guida per il tuo ambiente.
-
Esegui il
openssl genrsa -out myserver.key 2048
comando per generare una chiave RSA privata.openssl genrsa -out myserver.key 2048
-
Utilizza il comando seguente per generare una richiesta di certificato.
openssl req -new -key myserver.key -out myserver.csr -subj "/CN=myserver.default.svc"
-
Genera un
base64
valore per la CSR richiesta e memorizzalo in una variabile da utilizzare in un passaggio successivo.base_64=$(cat myserver.csr | base64 -w 0 | tr -d "\n")
-
Per creare un file denominato
mycsr.yaml
, esegui il comando di seguito. Nell'esempio seguente,beta.eks.amazonaws.com/app-serving
èsignerName
.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
-
Invia ilCSR.
kubectl apply -f mycsr.yaml
-
Approva il certificato di servizio.
kubectl certificate approve myserver
-
Verifica l'emissione del certificato.
kubectl get csr myserver
Di seguito viene riportato un output di esempio:
NAME AGE SIGNERNAME REQUESTOR CONDITION myserver 3m20s beta.eks.amazonaws.com/app-serving kubernetes-admin Approved,Issued
-
Esporta il certificato emesso.
kubectl get csr myserver -o jsonpath='{.status.certificate}'| base64 -d > myserver.crt
Considerazioni sulla firma dei certificati prima di aggiornare il cluster a Kubernetes 1.24
In Kubernetes 1.23
e versioni precedenti, i certificati kubelet
di servizio con IP non verificabile e DNS Subject Alternative Names (SANs) vengono emessi automaticamente con non verificabile. SANs SANsVengono omessi dal certificato fornito. Nei cluster 1.24
e in quelli successivi, i certificati di kubelet
servizio non vengono emessi se non è SAN possibile verificarne uno. Ciò impedisce il funzionamento dei comandi kubectl exec
e kubectl logs
.
Prima di aggiornare il cluster a1.24
, stabilisci se nel cluster sono presenti richieste di firma dei certificati (CSR) che non sono state approvate completando i seguenti passaggi:
-
Esegui il comando seguente.
kubectl get csr -A
Di seguito viene riportato un output di esempio:
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, Issued
Se l'output restituito mostra un firmatario CSR con kubernetes.io/kubelet-serving
che si riferisce a un nodo Approved
ma nonIssued
a un nodo, devi approvare la richiesta. -
CSRApprova manualmente il. Sostituire
csr-
con il proprio valore.7znmf
kubectl certificate approve csr-7znmf
Per l'approvazione automatica CSRs in futuro, ti consigliamo di scrivere un controller di approvazione in grado di convalidare e approvare automaticamente che contenga IP o CSRs che DNS SANs Amazon non possa verificare. EKS