Impostazione dell'accesso al cluster
Scopri i passi per impostare l'accesso ai cluster creati utilizzando Kubernetes Engine (OKE). Dopo aver completato i passi, è possibile iniziare a utilizzare kubectl per gestire il cluster.
Per accedere a un cluster utilizzando kubectl, è necessario impostare un file di configurazione Kubernetes (comunemente noto come file 'kubeconfig') per il cluster. Il file kubeconfig (di default denominato config
e memorizzato nella directory $HOME/.kube
) fornisce i dettagli necessari per accedere al cluster. Dopo aver impostato il file kubeconfig, è possibile iniziare a utilizzare kubectl per gestire il cluster.
I passaggi da seguire per configurare il file kubeconfig dipendono dalla modalità di accesso al cluster:
-
Per accedere al cluster utilizzando kubectl in Cloud Shell, eseguire un comando CLI di Oracle Cloud Infrastructure nella finestra Cloud Shell per impostare il file kubeconfig.
-
Per accedere al cluster utilizzando un'installazione locale di kubectl:
- Generare una coppia di chiavi di firma API (se non è già disponibile).
- Caricare la chiave pubblica della coppia di chiavi di firma API.
- Installare e configurare l'interfaccia CLI di Oracle Cloud Infrastructure.
- Configurare il file kubeconfig.
Impostazione dell'accesso Cloud Shell ai cluster
Quando l'endpoint API Kubernetes di un cluster dispone di un indirizzo IP pubblico, è possibile accedere al cluster in Cloud Shell impostando un file kubeconfig.
Per accedere a un cluster con un endpoint API Kubernetes privato in Cloud Shell, è possibile configurare un bastion utilizzando il servizio Oracle Cloud Infrastructure Bastion. Per ulteriori informazioni, vedere Impostazione di un bastion per l'accesso al cluster.
Per configurare il file kubeconfig:
- Aprire il menu di navigazione e selezionare Developer Services. In Container e artifact, selezionare Cluster Kubernetes (OKE).
- Scegliere un compartimento in cui si dispone dell'autorizzazione per lavorare.
- Nella pagina Elenco cluster, fare clic sul nome del cluster a cui si desidera accedere utilizzando kubectl. La pagina Cluster mostra i dettagli del cluster.
- Fare clic sul pulsante Accedi al cluster per visualizzare la finestra di dialogo Accedi al cluster.
- Fare clic su Accesso Cloud Shell.
- Fare clic su Avvia Cloud Shell per visualizzare la finestra Cloud Shell. Per ulteriori informazioni su Cloud Shell (incluso il criterio IAM richiesto), vedere Cloud Shell.
-
Eseguire il comando CLI di Oracle Cloud Infrastructure per impostare il file kubeconfig e salvarlo in una posizione accessibile a kubectl.
Ad esempio, immettere il comando seguente (o copiarlo e incollarlo dalla finestra di dialogo Accedi al cluster) nella finestra Cloud Shell:
oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT
Dove:
ocid1.cluster.oc1.phx.aaaaaaaaae...
è l'OCID del cluster corrente. Per comodità, il comando nella finestra di dialogo Accedi al cluster include già l'OCID del cluster.--kube-endpoint PUBLIC_ENDPOINT
specifica di aggiungere l'indirizzo IP pubblico dell'endpoint API Kubernetes del cluster al file kubeconfig. Per ulteriori informazioni, consulta il piano di controllo cluster Kubernetes e l'API Kubernetes.
Se nella posizione specificata esiste già un file kubeconfig, i dettagli sul cluster verranno aggiunti come nuovo contesto al file kubeconfig esistente. L'elemento
current-context:
nel file kubeconfig verrà impostato in modo da puntare al contesto appena aggiunto.Suggerimento
Per le operazioni degli Appunti nella finestra Cloud Shell, gli utenti di Windows possono utilizzare Ctrl-C o Ctrl-Inserisci per copiare e Maiusc-Inserisci per incollare. Per gli utenti di Mac OS, utilizzare Cmd-C per copiare e Cmd-V per incollare. -
Se il file kubeconfig non viene salvato nella posizione predefinita (
$HOME/.kube
) o con il nome predefinito (config
), impostare il valore della variabile d'ambiente KUBECONFIG in modo che punti al nome e alla posizione del file kubeconfig. Ad esempio, immettere il comando seguente nella finestra Cloud Shell:export KUBECONFIG=$HOME/.kube/config
Verificare che kubectl possa connettersi al cluster immettendo il seguente comando nella finestra Cloud Shell:
$ kubectl get nodes
Vengono visualizzate informazioni sui nodi nel cluster.
Ora è possibile utilizzare kubectl per eseguire operazioni sul cluster.
Impostazione dell'accesso locale ai cluster
Quando l'endpoint API Kubernetes di un cluster non dispone di un indirizzo IP pubblico, è possibile accedere al cluster da un terminale locale se la rete è sottoposta a peering con la VCN del cluster.
Per accedere a un cluster con un endpoint API Kubernetes privato da un terminale locale, puoi anche configurare un bastion utilizzando il servizio Oracle Cloud Infrastructure Bastion. Per ulteriori informazioni, vedere Impostazione di un bastion per l'accesso al cluster.
Per configurare il file kubeconfig:
Se hai già una coppia di chiavi di firma API, vai direttamente al passo successivo. In caso contrario:
- Utilizzare i comandi OpenSSL per generare la coppia di chiavi nel formato PEM richiesto. Se si utilizza Windows, sarà necessario installare Git Bash per Windows ed eseguire i comandi con tale strumento. Vedere How to Generate a API Signing Key.
-
Copiare il contenuto della chiave pubblica negli appunti (in seguito sarà necessario incollare il valore nella console).
-
Per visualizzare i dettagli: nel menu di navigazione selezionare il menu Profilo
e quindi selezionare Impostazioni utente o Profilo personale, a seconda dell'opzione visualizzata.
-
Fare clic su Aggiungi chiave pubblica.
-
Incollare il valore della chiave pubblica nella finestra e fare clic su Aggiungi.
La chiave viene caricata e viene visualizzata la relativa impronta digitale (ad esempio, d1:b2:32:53:d3:5f:cf:68:2d:6f:8b:5f:77:8f:07:13).
-
Installare l'interfaccia CLI di Oracle Cloud Infrastructure versione 2.6.4 (o successiva). Vedere Installazione dell'interfaccia CLI.
- Configurare l'interfaccia CLI di Oracle Cloud Infrastructure. Vedere Configurazione dell'interfaccia CLI.
- Aprire il menu di navigazione e selezionare Developer Services. In Container e artifact, selezionare Cluster Kubernetes (OKE).
- Scegliere un compartimento in cui si dispone dell'autorizzazione per lavorare.
- Nella pagina Elenco cluster, fare clic sul nome del cluster a cui si desidera accedere utilizzando kubectl. La pagina Cluster mostra i dettagli del cluster.
-
Fare clic sul pulsante Accedi al cluster per visualizzare la finestra di dialogo Accedi al cluster.
- Fare clic su Accesso locale.
-
Creare una directory in cui collocare il file kubeconfig. Per impostazione predefinita, il nome di directory previsto è
$HOME/.kube
.Ad esempio, in Linux, immettere il comando seguente (o copiarlo e incollarlo dalla finestra di dialogo Accedi al cluster) in una finestra del terminale locale:
mkdir -p $HOME/.kube
-
Eseguire il comando CLI di Oracle Cloud Infrastructure per impostare il file kubeconfig e salvarlo in una posizione accessibile a kubectl.
Ad esempio, in Linux, immettere il comando seguente (o copiarlo e incollarlo dalla finestra di dialogo Accedi al cluster) in una finestra del terminale locale:
oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.phx.aaaaaaaaae... --file $HOME/.kube/config --region us-phoenix-1 --token-version 2.0.0 --kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT
Dove:
ocid1.cluster.oc1.phx.aaaaaaaaae...
è l'OCID del cluster corrente. Per comodità, il comando nella finestra di dialogo Accedi al cluster include già l'OCID del cluster.--kube-endpoint PRIVATE_ENDPOINT|PUBLIC_ENDPOINT
specifica se aggiungere l'indirizzo IP privato o l'indirizzo IP pubblico dell'endpoint API Kubernetes del cluster al file kubeconfig. Per ulteriori informazioni, consulta il piano di controllo cluster Kubernetes e l'API Kubernetes.
Se nella posizione specificata esiste già un file kubeconfig, i dettagli sul cluster verranno aggiunti come nuovo contesto al file kubeconfig esistente. L'elemento
current-context:
nel file kubeconfig verrà impostato in modo da puntare al contesto appena aggiunto. -
Se il file kubeconfig non viene salvato nella posizione predefinita (
$HOME/.kube
) o con il nome predefinito (config
), impostare il valore della variabile d'ambiente KUBECONFIG in modo che punti al nome e alla posizione del file kubeconfig. Ad esempio, in Linux, immettere il comando seguente (o copiarlo e incollarlo dalla finestra di dialogo Accedi al cluster) in una finestra del terminale locale:export KUBECONFIG=$HOME/.kube/config
-
Per verificare che kubectl sia disponibile, immettere il comando seguente in una finestra di terminale locale:
kubectl version
La risposta mostra:
- la versione di kubectl installata ed eseguita localmente
- la versione di Kubernetes (in senso stretto, la versione di kube-apiserver) in esecuzione sui nodi del piano di controllo del cluster
Si noti che la versione kubectl deve essere inclusa in una versione secondaria (più vecchia o più recente) della versione Kubernetes in esecuzione sui nodi del piano di controllo. Se kubectl è più di una versione secondaria precedente o più recente, installare una versione appropriata di kubectl. Vedere Criterio di supporto disallineamento versione e versione Kubernetes nella documentazione di Kubernetes.
Se il comando restituisce un errore indicante che kubectl non è disponibile, installare kubectl (vedere la documentazione di kubectl) e ripetere questa operazione.
-
Verificare che kubectl possa connettersi al cluster immettendo il seguente comando in una finestra di terminale locale:
kubectl get nodes
Vengono visualizzate informazioni sui nodi nel cluster.
Ora è possibile utilizzare kubectl per eseguire operazioni sul cluster.
Note sui file Kubeconfig
Di seguito sono riportate informazioni sui file kubeconfig.
- Un singolo file kubeconfig può includere i dettagli per più cluster, come più contesti. Il cluster su cui verranno eseguite le operazioni è specificato dall'elemento
current-context:
nel file kubeconfig. - Un file kubeconfig include un comando CLI di Oracle Cloud Infrastructure che genera dinamicamente un token di autenticazione e lo inserisce quando si esegue un comando kubectl. L'interfaccia CLI di Oracle Cloud Infrastructure deve essere disponibile nel percorso eseguibile della shell (ad esempio, $PATH su Linux).
- I token di autenticazione generati dal comando CLI di Oracle Cloud Infrastructure nel file kubeconfig sono di breve durata, con ambito cluster e specifici per i singoli utenti. Di conseguenza, non è possibile condividere i file kubeconfig tra gli utenti per accedere ai cluster Kubernetes.
-
Il comando CLI di Oracle Cloud Infrastructure nel file kubeconfig utilizza il profilo CLI corrente durante la generazione di un token di autenticazione. Se nel file di configurazione dell'interfaccia CLI sono stati definiti più profili in tenancy diverse (ad esempio, in ~/.oci/config), specificare il profilo da utilizzare durante la generazione del token di autenticazione come indicato di seguito. In entrambi i casi,
<profile-name>
è il nome del profilo definito nel file di configurazione dell'interfaccia CLI.-
Aggiungere
--profile
alla sezioneargs:
del file kubeconfig come indicato di seguito.user: exec: apiVersion: client.authentication.k8s.io/v1beta1 args: - ce - cluster - generate-token - --cluster-id - <cluster ocid> - --profile - <profile-name> command: oci env: []
-
Prima di eseguire i comandi kubectl, impostare la variabile di ambiente OCI_CLI_PROFILE sul nome del profilo definito nel file di configurazione dell'interfaccia CLI. Ad esempio:
export OCI_CLI_PROFILE=<profile-name>
kubectl get nodes
-
- I token di autenticazione generati dal comando CLI di Oracle Cloud Infrastructure nel file kubeconfig sono appropriati per autenticare i singoli utenti che accedono al cluster utilizzando kubectl. Tuttavia, i token di autenticazione generati non sono adatti se si desidera che altri processi e strumenti accedano al cluster, come gli strumenti di integrazione continua e distribuzione continua (CI/CD). In questo caso, si consiglia di creare un account di servizio Kubernetes e di aggiungere il token di autenticazione associato al file kubeconfig. Per maggiori informazioni, vedere Adding a Service Account Authentication Token to a Kubeconfig File.
-
È possibile che sia stato definito un criterio IAM per limitare l'accesso al cluster solo agli utenti che sono stati verificati con l'autenticazione con più fattori (MFA). Se esiste un criterio di questo tipo, è necessario aggiungere gli argomenti
--profile
e--auth
al file kubeconfig per consentire a un utente verificato MFA di accedere al cluster utilizzando kubectl, come indicato di seguito. In entrambi i casi,<profile-name>
è il nome del profilo utente verificato MFA definito nel file di configurazione dell'interfaccia CLI di Oracle Cloud Infrastructure:-
Aggiungere gli argomenti seguenti alla sezione
args:
del file kubeconfig:- --profile - <profile-name> - --auth - security_token
Ad esempio:
user: exec: apiVersion: client.authentication.k8s.io/v1beta1 args: - ce - cluster - generate-token - --cluster-id - <cluster ocid> - --profile - <profile-name> - --auth - security_token command: oci env: []
-
Prima di eseguire i comandi kubectl, impostare la variabile di ambiente OCI_CLI_PROFILE sul nome del profilo dell'utente verificato con MFA definito nel file di configurazione dell'interfaccia CLI. Ad esempio:
export OCI_CLI_PROFILE=<profile-name>
kubectl get nodes
Dopo aver aggiornato il file kubeconfig, l'utente utilizzato per accedere al cluster deve essere verificato con MFA. Se si tenta di accedere al cluster utilizzando un utente non sottoposto a verifica MFA, viene visualizzato il messaggio
error: You must be logged in to the server (Unauthorized)
.Per ulteriori informazioni sugli utenti sottoposti a verifica MFA, vedere Gestione dell'autenticazione con più fattori.
-
Aggiornamento dei file Kubeconfig dalla versione 1.0.0 alla versione 2.0.0
I miglioramenti apportati ai file kubeconfig versione 2.0.0 offrono miglioramenti alla sicurezza per l'ambiente Kubernetes, inclusi i token con ambito cluster di breve durata con aggiornamento automatico e il supporto, ad esempio, dei principal delle istanze per accedere ai cluster Kubernetes. Inoltre, i token di autenticazione vengono generati su richiesta per ogni cluster, pertanto i file kubeconfig versione 2.0.0 non possono essere condivisi tra gli utenti per accedere ai cluster Kubernetes (a differenza dei file kubeconfig versione 1.0.0).
Tenere presente che i file kubeconfig versione 2.0.0 non sono compatibili con le versioni kubectl precedenti alla versione 1.11.9. Se si utilizza kubectl versione 1.10.x o precedente, aggiornare kubectl alla versione 1.11.9 o successiva. Per ulteriori informazioni sulla compatibilità tra le diverse versioni di kubernetes e kubectl, consulta la documentazione di Kubernetes.
Seguire le istruzioni riportate di seguito per determinare la versione corrente dei file kubeconfig e come aggiornare i file kubeconfig versione 1.0.0 rimanenti alla versione 2.0.0.
Determinare la versione del file kubeconfig
Per determinare la versione del file kubeconfig di un cluster:
1. In una finestra di terminale (la finestra Cloud Shell o una finestra di terminale locale, a seconda dei casi), immettere il comando seguente per visualizzare il formato del file kubeconfig attualmente puntato dalla variabile di ambiente KUBECONFIG:
kubectl config view
2. Se la versione del file kubeconfig è 1.0.0, viene visualizzata una risposta nel seguente formato:
users:
- name: <username>
user:
token: <token-value>
Se viene visualizzata una risposta nel formato precedente, è necessario aggiornare il file kubeconfig. Vedere Upgrading Kubeconfig Files from Version 1.0.0 to Version 2.0.0.
3. Se la versione del file kubeconfig è 2.0.0, viene visualizzata una risposta nel seguente formato:
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args:
- ce
- cluster
- generate-token
- --cluster-id
- <cluster ocid>
command: oci
env: []
Se viene visualizzata una risposta nel formato precedente, non sono necessarie ulteriori azioni.
Aggiornare un file kubeconfig versione 1.0.0 alla versione 2.0.0
Per aggiornare un file kubeconfig versione 1.0.0:
-
Nel caso di un'installazione locale di kubectl, confermare che l'interfaccia CLI di Oracle Cloud Infrastructure versione 2.6.4 (o successiva) è installata immettendo:
oci -version
Se la versione dell'interfaccia CLI di Oracle Cloud Infrastructure è precedente alla versione 2.6.4, eseguire l'upgrade dell'interfaccia CLI a una versione successiva. Vedere Upgrading the CLI.
-
Seguire le istruzioni appropriate per impostare il file kubeconfig da utilizzare in Cloud Shell o in locale (vedere Impostazione dell'accesso a Cloud Shell ai cluster o Impostazione dell'accesso locale ai cluster). L'esecuzione del comando
oci ce cluster create-kubeconfig
mostrato nella finestra di dialogo Accedi al cluster consente di aggiornare il file kubeconfig versione 1.0.0 esistente. Se si modifica il nome o la posizione del file kubeconfig, impostare la variabile d'ambiente KUBECONFIG in modo che punti al nuovo nome e alla nuova posizione del file. - Verificare che la versione del file kubeconfig sia la 2.0.0:
-
In una finestra del terminale (la finestra Cloud Shell o una finestra del terminale locale, a seconda dei casi), immettere:
kubectl config view
-
Verificare che il formato della risposta sia il seguente:
user: exec: apiVersion: client.authentication.k8s.io/v1beta1 args: - ce - cluster - generate-token - --cluster-id - <cluster ocid> command: oci env: []
-