Autorità di certificazione personalizzata (CA) nel servizio Azure Kubernetes (AKS) (anteprima)
Questo articolo mostra come creare CA personalizzate e applicarle ai cluster del servizio Azure Kubernetes.
Prerequisiti
- Una sottoscrizione di Azure. Se non hai una sottoscrizione di Azure, crea un account gratuito.
- Interfaccia della riga di comando di Azure installata (versione 2.43.0 o superiore).
- Una stringa di certificato base64 encoded o un file di testo con certificato.
Limiti
- Questa funzionalità non è attualmente supportata per i pool di nodi Windows.
Installare l'estensione aks-preview
dell'interfaccia della riga di comando di Azure.
Importante
Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e opzionale. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Installare l'estensione aks-preview usando il comando
az extension add
.az extension add --name aks-preview
Eseguire l'aggiornamento alla versione più recente dell'estensione usando il comando
az extension update
.az extension update --name aks-preview
Registrare il flag di funzionalità CustomCATrustPreview
Registrare il flag di funzionalità
CustomCATrustPreview
usando il comandoaz feature register
.az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
Sono necessari alcuni minuti per visualizzare lo stato Registered.
Verificare lo stato della registrazione usando il comando
az feature show
.az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
Quando lo stato diventa Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando
az provider register
.az provider register --namespace Microsoft.ContainerService
Installazione della CA personalizzata nei pool di nodi del servizio Azure Kubernetes
Installare le CA nei pool di nodi del servizio Azure Kubernetes
Se per il corretto provisioning, l'ambiente richiede l'aggiunta di CA personalizzate all'archivio attendibilità del nodo, è necessario passare un file di testo contenente fino a 10 certificati separati da righe vuote durante le operazioni
az aks create
oaz aks update
. File di testo di esempio:-----BEGIN CERTIFICATE----- cert1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- cert2 -----END CERTIFICATE-----
Installare le CA durante la creazione del pool di nodi
Installare ca durante la creazione del pool di nodi usando il
az aks create
comando e specificando il file di testo per il--custom-ca-trust-certificates
parametro .az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
Rotazione della CA per la disponibilità durante l'avvio del pool di nodi
Aggiornare le CA passate al cluster durante l'avvio usando il comando
az aks update
e specificando il file di testo per il parametro--custom-ca-trust-certificates
.az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates pathToFileWithCAs
Nota
Questa operazione attiva un aggiornamento del modello, assicurando che i nuovi nodi dispongano delle CA più recenti necessarie per il provisioning corretto. Il servizio Azure Kubernetes crea nodi aggiuntivi, svuota quelli esistenti, li elimina e li sostituisce con nodi in cui è installato il nuovo set di CA.
Installare le CA dopo la creazione del pool di nodi
Se il provisioning dell'ambiente può essere eseguito correttamente senza le CA personalizzate, è possibile fornire le CA distribuendo un segreto nello spazio dei nomi kube-system
. Questo approccio consente la rotazione dei certificati senza la necessità di creare di nuovo i nodi.
Creare un manifesto YAML del segreto Kubernetes con la stringa di certificato con codifica Base64 nel
data
campo .apiVersion: v1 kind: Secret metadata: name: custom-ca-trust-secret namespace: kube-system type: Opaque data: ca1.crt: | {base64EncodedCertStringHere} ca2.crt: | {anotherBase64EncodedCertStringHere}
I dati di questo segreto vengono usati per aggiornare le CA in tutti i nodi. Assicurarsi che il segreto sia denominato
custom-ca-trust-secret
e che venga creato nello spazio dei nomikube-system
. L'installazione di CA tramite segreto nello spazio dei nomikube-system
consente la rotazione della CA senza la necessità di una nuova creazione dei nodi. Per aggiornare o rimuovere una CA, è possibile modificare e applicare il manifesto YAML. Il cluster esegue il polling delle modifiche e aggiorna i nodi di conseguenza. L'applicazione delle modifiche potrebbe richiedere alcuni minuti.Nota
Affinché le CA vengano ritirate correttamente, potrebbe essere necessario riavviare i containerd sul nodo. Se sembra che le CA non siano state aggiunte correttamente all'archivio attendibilità del nodo, è possibile attivare un riavvio usando il comando seguente dalla shell del nodo:
systemctl restart containerd
Configurare un nuovo cluster del servizio Azure Kubernetes per l'uso di una CA personalizzata
Configurare un nuovo cluster del servizio Azure Kubernetes per l'uso di una CA personalizzata usando il comando
az aks create
con il parametro--enable-custom-ca-trust
.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --generate-ssh-keys
Configurare un nuovo cluster del servizio Azure Kubernetes per l'uso di una CA personalizzata con CA installate prima dell'avvio del nodo
Configurare un nuovo cluster del servizio Azure Kubernetes per l'uso di CA personalizzate con CA installate prima dell'avvio del nodo usando il comando
az aks create
con i parametri--enable-custom-ca-trust
e--custom-ca-trust-certificates
.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
Configurare un cluster del servizio Azure Kubernetes esistente in modo che le CA personalizzate siano installate prima dell'avvio del nodo
Configurare un cluster del servizio Azure Kubernetes esistente in modo che le CA personalizzate siano aggiunte all'archivio attendibilità del nodo prima dell'avvio usando il comando
az aks update
con il parametro--custom-ca-trust-certificates
.az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates pathToFileWithCAs
Configurare un nuovo pool di nodi per l'uso di una CA personalizzata
Configurare un nuovo pool di nodi per utilizzare una CA personalizzata usando il comando
az aks nodepool add
con il parametro--enable-custom-ca-trust
.az aks nodepool add \ --cluster-name <cluster-name> \ --resource-group <resource-group-name> \ --name <node-pool-name> \ --enable-custom-ca-trust \ --os-type Linux
Se non esistono altri pool di nodi con la funzionalità abilitata, il cluster deve risolvere le differenze delle impostazioni per rendere effettive le modifiche. Questa operazione viene eseguita automaticamente come parte del ciclo del servizio Azure Kubernetes per risolvere le differenze. Prima dell'operazione, il set daemon e i pod non sono visualizzati nel cluster. È possibile attivare un'operazione immediata per risolvere le differenze usando il comando
az aks update
. Il set daemon e i pod vengono visualizzati al termine dell'aggiornamento.
Configurare un pool di nodi esistente per l'uso di una CA personalizzata
Configurare un pool di nodi esistente per usare una CA personalizzata usando il comando
az aks nodepool update
con il parametro--enable-custom-ca-trust
.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --enable-custom-ca-trust
Se non esistono altri pool di nodi con la funzionalità abilitata, il cluster deve risolvere le differenze delle impostazioni per rendere effettive le modifiche. Questa operazione viene eseguita automaticamente come parte del ciclo del servizio Azure Kubernetes per risolvere le differenze. Prima dell'operazione, il set daemon e i pod non sono visualizzati nel cluster. È possibile attivare un'operazione immediata per risolvere le differenze usando il comando
az aks update
. Il set daemon e i pod vengono visualizzati al termine dell'aggiornamento.
Disabilitare la CA personalizzata in un pool di nodi
Disabilitare la funzionalità CA personalizzata in un pool di nodi esistente usando il
az aks nodepool update
comando con il--disable-custom-ca-trust
parametro .az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --disable-custom-ca-trust
Risoluzione dei problemi
La funzionalità è abilitata e viene aggiunto il segreto con la CA; tuttavia le operazioni restituiscono l’errore Certificato X.509 firmato da autorità sconosciuta
Certificati formattati in modo non corretto passati nel segreto
Il servizio Azure Kubernetes richiede che i certificati passati nel segreto creato dall'utente siano formattati correttamente e base64 encoded. Assicurarsi che le CA passate siano codificate correttamente in base64 e che i file con CA non abbiano interruzioni di riga CR LF.
I certificati passati a --custom-ca-trust-certificates
non devono essere base64 encoded.
containerd non ha prelevato nuovi certificati
Dalla shell del nodo eseguire systemctl restart containerd
. Dopo il riavvio di containerd, i nuovi certificati vengono prelevati correttamente dal runtime del contenitore.
Passaggi successivi
Per altre informazioni sulle procedure consigliate per la sicurezza del servizio Azure Kubernetes, vedere Procedure consigliate per la sicurezza e gli aggiornamenti del cluster nel servizio Azure Kubernetes (AKS).
Azure Kubernetes Service