Cos'è il proxy kubectl?

Cos'è il proxy kubectl?
Un utente al di fuori di un cluster Kubernetes può utilizzare il proxy del server API Kubernetes per connettersi a IPS cluster che altrimenti non sarebbero disponibili. Questo, ad esempio, consente l'accesso a un servizio disponibile solo all'interno della rete del cluster. Tra l'utente e l'endpoint in-cluster, l'apiserver funziona come proxy e un bastione.

Abbiamo installato Ubuntu 20.04 sul nostro sistema operativo Linux per eseguire le istruzioni in Kubernetes. Puoi seguirlo. È inoltre necessario installare il cluster Minikube sul tuo computer per eseguire Kubernetes su Linux. Minikube semplifica i comandi e i programmi di test permettendoti di farlo in modo metodico. Di conseguenza, fornisce la migliore esperienza di apprendimento Kubernetes per i nuovi arrivati. Inizialmente, il cluster di minikube deve essere avviato. Quindi, in Ubuntu 20.04, vai al terminale della riga di comando appena installato. Puoi farlo premendo il tasto di scorciatoia Ctrl+Alt+T o digitando "Terminale" in Ubuntu 20.04 Casella di ricerca del sistema. Entrambe le tecniche di cui sopra inizieranno il terminale. Il minikube sarà avviato dopo. Digita "Minikube Start" nel terminale per avviare il minikube. Il cluster Kubernetes verrà lanciato dopo che è stata costruita una macchina virtuale in grado di gestire un singolo cluster di nodi. È anche compatibile con l'ambiente Kubectl. Questo verrà utilizzato per comunicare con il cluster all'inizio.

$ Minikube inizi

Per ottenere l'accesso a un cluster, dovrai sapere dove si trova e quali credenziali richiederai. Questo di solito viene eseguito automaticamente quando si seguono una guida iniziale o qualcun altro imposta il cluster e ti dà credenziali e una posizione. Il comando di vista config mostra dove Kubectl è a conoscenza della posizione e delle credenziali.

$ kubectl Config View

Come accedere direttamente all'API REST ?

Kubectl è responsabile della ricerca e dell'autenticazione dell'apiserver. In modalità proxy, eseguire kubectl.

  • È un metodo consigliato.
  • Viene utilizzata la posizione dell'apiserver salvato.
  • L'apiserver è autenticato.
  • Il bilanciamento del carico sul lato client intelligente e il failover potrebbero essere realizzabili in futuro.

Fornire direttamente al client HTTP la posizione e le credenziali.

  • È possibile una tecnica diversa.
  • Funziona con un determinato codice client che viene confuso quando viene utilizzato un proxy.
  • Per proteggersi contro MITM, dovrai importare un certificato di root nel tuo browser.

Usando il proxy Kubectl

Questo comando configura Kubectl per funzionare come proxy inverso. È responsabile di localizzare e autenticare l'apiserver. Assumi questo scenario:

$ kubectl proxy -port = 8080

Un esempio dell'output è il seguente:

Senza l'uso del proxy di kubectl

Per acquisire il token dell'account di servizio predefinito, eseguire kubectl descrivi segreto ... con grep/taglio.

$ kubectl Descrivi segreto

API e accesso programmatico

È annunciare che Kubernetes ora supporta GO e Python Client Libraries. Il client GO e il client Python possono utilizzare lo stesso file KubeConfig della CLI Kubectl per individuare e autenticare con l'apiserver.

Accedi all'API da un pod

Quando si contatta l'API da un pod, il processo di ricerca e autenticazione dell'apiserver differisce leggermente. Il modo migliore per individuare l'apiserver nel pod è usare i kubernetes.predefinito.Nome DNS SVC. Si risolve a un IP di servizio, e quindi, a sua volta, indirizzato a un apiserver.

Viene suggerito l'uso di una credenziale dell'account di servizio per l'autenticazione di Apiserver. Successivamente, un token per quell'account di servizio viene mantenuto nell'albero del filesystem del contenitore in quel pod. Un pacchetto di certificato viene inserito nell'albero del filesystem di ciascun contenitore AT/var/run/segreti/kubernetes.IO/ServiceACCOUNT/CA.CRT, se disponibile, e dovrebbe essere utilizzato per verificare il certificato di servizio dell'apiserver.

Infine, in ciascun contenitore, lo spazio dei nomi predefinito per le attività API spaziata Names viene archiviato in un file AT/VAR/RUN/SECRETS/KUBERNETES.IO/ServiceACCOUNT/Spazio dei nomi. Ecco alcune opzioni per la connessione a un'API all'interno di un pod:

Esegui il proxy Kubectl come processo di sfondo nel contenitore o come contenitore Sidecar POD. Ciò consente ad altri processi in uno qualsiasi dei contenitori del pod di accedere all'API Kubernetes utilizzando l'interfaccia locale del pod.

Crea un client combinando la libreria client Go con il codice. Kubernetes con inclusterConfig () Le funzioni newforconfig () e newforconfig () possono essere utilizzate per configurare un cluster. Sono incaricati di trovare e autenticando l'apiserver.

Conclusione

Qui abbiamo fornito linee guida sul proxy di kubectl. Qual è la vista configurazione kubectl comune e come è possibile accedere all'API REST con e senza proxy kubectl. Abbiamo anche fornito esempi per aiutarti a capire meglio il concetto.