In questo articolo viene fornita una panoramica degli account di servizio e di come operano. Una parte cruciale di Kubernetes che fornisce un accesso sicuro al server API è l'account di servizio. Un'interazione con un cluster Kubernetes richiede la comunicazione con il server API. Le richieste vengono fatte al server API per comunicare. Quando un server API riceve una richiesta, tenta prima di autenticarla. Se questa autenticazione fallisce, la richiesta è considerata anonima. Ciò significa che ogni processo, sia che faccia parte del cluster o meno, deve autenticarsi prima di inviare una richiesta al server API, incluso un utente che digita kubectl sul suo desktop e il processo di kubelet che funziona su un nodo. Questo contesto descrive i tipi di account Kubernetes e come configurare un account di servizio con esempi di base.
Tipi di account in Kubernetes
In Kubernetes, ci sono due tipi di account menzionati nel seguente:
Account utente
È utilizzato dagli umani che possono essere utenti amministrativi o sviluppatori che stanno cercando di accedere alle risorse a livello di cluster e accedere al cluster Kubernetes. Tali utenti possono gestire l'esterno del cluster, ma il cluster Kubernetes ne è consapevole. L'account utente non ha uno spazio dei nomi specifico.
Account di servizio
Questi sono gli account a livello di macchina. I processi attivi nei pod del cluster sono rappresentati dagli account di servizio. Il server API autentica il pod utilizzando un account di servizio prima che possa accedere al cluster.
Cos'è un account di servizio Kubernetes?
Viene applicato per autenticare i processi a livello della macchina per consentire loro di accedere al nostro cluster Kubernetes. Il server API è incaricato di fare tale autenticazione per i processi che eseguono nel pod. Il cluster Kubernetes gestisce gli account di servizio. Gli account di servizio hanno uno spazio dei nomi specifico. Questi sono generati automaticamente dal server API o manualmente tramite chiamate API.
Come funziona l'account di servizio Kubernetes?
Spiegheremo come funziona in uno scenario in cui un'applicazione di una terza parte cerca di connettersi ai server API del cluster Kubernetes.
Diciamo che esiste un sito Web, la mia pagina web, che deve recuperare i dati da un server API situato nel cluster Kubernetes, come illustrato nella figura precedente, per visualizzare un elenco di oggetti. Per accedere ai dati dai server cluster e autenticarli, richiediamo un account di servizio che funge da ponte reso disponibile dai server API cluster.
Prerequisiti
Prima di lavorare con la sonda di avvio, i prerequisiti sono un cluster Kubernetes con due nodi che non agiscono come host e software di riga di comando kubectl che devono essere configurati per comunicare tra cluster. Se non hai creato un cluster, puoi utilizzare il minikube per creare un cluster. Ci sono altre opzioni di Kubernetes Playground disponibili online che puoi utilizzare per creare il cluster.
Crea un account di servizio
Dobbiamo ora creare un account di servizio seguendo le istruzioni passo-passo per accedere al cluster Kubernetes. Cominciamo!
Passaggio 1: avvia il minikube
Innanzitutto, avvia il cluster minikube in modo da poter utilizzare i comandi Kubectl ed eseguire l'applicazione. Il cluster Minikube ti consente di distribuire i tuoi nodi, i baccelli e persino il cluster nell'ambiente Kubernetes. Quindi, è essenziale mantenere il minikube in modalità attivo usando il seguente comando:
> Minikube Start
Questo attiva il cluster minikube e rende pronto l'ambiente Kubernetes.
Passaggio 2: utilizzare l'account di servizio predefinito per accedere al servizio API
I pod si autenticano come un determinato account di servizio quando comunicano con il server API. L'account di servizio predefinito per ciascun spazio dei nomi di Kubernetes, per impostazione predefinita, è presente in ogni spazio dei nomi e costituisce il numero minimo di account di servizio. Quando si crea un pod, Kubernetes alloca automaticamente l'account di servizio chiamato impostazione predefinita in quello spazio dei nomi se non si specifica uno.
È possibile recuperare le informazioni per un pod generato eseguendo il seguente comando:
> Kubectl ottieni manutenici
Passaggio 3: output della credenziale API Automo
Il file manifest dell'account di servizio YAML dovrebbe essere aperto per primo.
> Nano ServiceACCOUNT.Yaml
Invece del kubelet per montare automaticamente le credenziali API di ServiceACCOUNT, puoi scegliere di modificare il comportamento normale.
Passaggio 4: creare un account di servizio aggiuntivo
Gli oggetti dell'account di servizio aggiuntivi possono essere creati nel modo seguente come menzionato:
> kubectl applica -f serviceaccount.Yaml
Passaggio 5: utilizzare più account di servizio
In questo contesto, ogni pod generato nel cluster Kubernetes con uno spazio dei nomi specifico produce un account di servizio per impostazione predefinita con il nome predefinito. Il token di servizio e l'oggetto segreto necessario vengono creati automaticamente dall'account di servizio predefinito.
Eseguendo il seguente comando, è possibile elencare ogni risorsa ServiceACCOUNT nello spazio dei nomi correnti:
> Kubectl ottieni manutenici
Passaggio 6: ottenere un dump dell'account di servizio
Se l'oggetto account di servizio viene completamente scaricato, sembra il seguente screenshot. È fatto con il comando allegato qui:
> Kubectl Ottieni ServiceAccunts/build -robot -o yaml
Passaggio 7: pulire l'account di servizio
Elimina l'account in esecuzione prima di configurare l'account di servizio build-robot con il seguente comando:
> Kubectl Elimina ServiceACCOUNT/build-robot
Passaggio 8: crea un token API
Supponiamo di avere già il nome dell'account del servizio "build-robot" come menzionato nell'esempio precedente. Utilizzando il seguente comando, è possibile ottenere un breve token API per quell'account di servizio:
> kubectl crea demo token1
L'output del comando precedente viene portato all'autenticazione per quell'account di servizio. Usando il comando implica la durata, è possibile generare una durata del token unica.
Passaggio 9: creare un token API di lunga durata per account di servizio
Crea un nuovo segreto con un'annotazione unica se si desidera ottenere un token API per un account di servizio. Ecco il seguente comando:
> Nano segreto.Yaml
Ecco il file di configurazione completo:
Nello screenshot allegato, puoi vedere che un account di servizio viene creato correttamente.
Passaggio 10: Visualizza i dettagli dell'oggetto segreto
È necessario utilizzare il seguente comando per rendere visibile il contenuto di un articolo segreto:
> kubectl Descrivi i segreti/demo1
Come puoi vedere, il token API di "build-robot" ServiceACCOUNT è ora presente nell'oggetto segreto.
Eseguindo il comando sopra menzionato, è possibile vedere il valore di tastie di hash codificato del token che viene visualizzato nell'immagine precedente.
Pertanto, questo oggetto segreto predefinito può essere utilizzato per concedere un accesso ai server API che si trovano nello stesso spazio dei nomi dei cluster per la nostra applicazione, che è distribuita nel pod dello stesso spazio dei nomi.
Passaggio 11: aggiungi ImagePullSecrets a un account di servizio
Crea un imagepullsecret. Quindi, assicurati che sia stato generato. Per questo, il comando è il seguente:
> kubectl crea segreto docker-registry myregisterkey ---docker-server = dummy_server \ ---docker-username = dummy_username ---docker-password = dammy_docker_password \-docker-email = dummy_docker_email_email
Assicurati che sia creato. Puoi verificarlo con il comando indicato qui:
> kubectl ottieni segreti myregistery
Passaggio 12: Aggiungi ImagePullSecret a un account di servizio
Altera l'account di servizio predefinito dello spazio dei nomi in modo tale da utilizzare questo segreto come ImagePullSecret. Il comando è dato come segue:
> kubectl patch serviceaccount predefinito -p '"imagepullsecrets": ["name": "myregistrykey"]
Conclusione
Abbiamo appreso l'account del servizio che, offrendo autenticazione, autorizzazione e controllo dell'amministrazione, consente al server API di rendere sicura l'applicazione. Per autenticare la comunicazione tra programmi esterni e API, l'account del servizio funge da collegamento a un processo che funziona in un pod. L'esempio di pratica per creare l'account del servizio e configurarlo con un semplice esempio è implementato in questo articolo.