Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Utilizza Terraform per distribuire più cluster Kubernetes in diverse aree OCI utilizzando OKE e crea una rete mesh completa utilizzando RPC
Introduzione
In questa esercitazione verrà spiegato come creare più cluster Kubernetes utilizzando Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) e questi cluster verranno distribuiti in tre paesi diversi (regioni). Per accelerare la distribuzione e distribuire i cluster Kubernetes in modo coerente con la minor quantità di errori di configurazione, utilizzeremo Terraform e alcuni script bash personalizzati.
Abbiamo anche distribuito manualmente singoli cluster utilizzando il metodo di creazione rapida e il metodo di creazione personalizzata.
Questa esercitazione è un aggiornamento basato sulla presente documentazione: Distribuzione di più cluster Kubernetes su Oracle Cloud.
Obiettivi
- Prepareremo il nostro computer locale con gli strumenti necessari per le azioni Terraform nell'ambiente Oracle Cloud Infrastructure (OCI). Inoltre, configureremo l'ambiente OCI per autenticare le richieste dal nostro computer locale per le esecuzioni Terraform e creare script Terraform e shell per distribuire tre cluster Kubernetes in OKE in aree diverse. Garantiremo la comunicazione tra cluster configurando le connessioni RPC (Remote Peering Connections) nei gateway di instradamento dinamico (DRG).
Task 1: Determinare la topologia (Star vs Mesh)
Stiamo creando questi cluster Kubernetes per distribuire un'applicazione basata su container distribuita in tutte le aree. Per consentire la comunicazione tra questi cluster Kubernetes, dobbiamo avere una qualche forma di comunicazione di rete. Per ora, questo è fuori dalla portata di questo tutorial, ma dobbiamo prendere alcune decisioni architettoniche in anticipo. Una di queste decisioni è quella di determinare se vogliamo consentire la comunicazione diretta tra tutte le regioni o se vogliamo utilizzare una regione come hub per tutte le comunicazioni e le altre come un discorso.
Topologia a stella: la topologia a stella consente la comunicazione tra le aree utilizzando un'unica area hub. Quindi, se i cluster Kubernetes a San Jose vogliono comunicare con i cluster Kubernetes a Dubai, utilizzeranno Amsterdam come hub di transito.
Topologia mesh: la topologia mesh consente la comunicazione diretta da e verso tutte le aree (cluster Kubernetes). Quindi, se i cluster Kubernetes a San Jose vogliono comunicare con i cluster Kubernetes a Dubai, possono comunicare direttamente.
In questa esercitazione verrà creata una topologia mesh e la connettività verrà eseguita utilizzando DRG e RPC.
Task 2: preparare l'ambiente per l'autenticazione ed eseguire gli script Terraform
Prima di utilizzare Terraform, dobbiamo preparare il nostro ambiente. Per utilizzare Terraform, aprire un terminale. In questo tutorial, stiamo utilizzando l'applicazione terminale OS X.
-
Eseguire il comando riportato di seguito per verificare che Terraform sia installato, aggiunto al percorso e la versione.
Last login: Thu Apr 4 08:50:38 on ttys000 iwhooge@iwhooge-mac ~ % terraform -v zsh: command not found: terraform iwhooge@iwhooge-mac ~ %
-
Si può vedere che il comando non è stato trovato, questo significa che Terraform non è installato o che non è stato aggiunto alla variabile di percorso.
Come puoi vedere Terraform non è installato, quindi dobbiamo installarlo. Noterai che non solo sta installando Terraform, ma sono necessari più passi per distribuire l'applicazione Terraform e preparare l'ambiente per la nostra soluzione di scripting end-to-end completa per distribuire tre cluster Kubernetes in tre aree diverse.
L'immagine seguente fornisce indicazioni sulle attività necessarie da eseguire.
Task 2.1: Installa Homebrew
Terraform può essere installato con metodi diversi. In questa esercitazione verrà installato Terraform utilizzando Homebrew.
Homebrew è un gestore di pacchetti per MacOS (e Linux) che può essere utilizzato per installare le applicazioni e le loro dipendenze richieste sono come apt
o yum
.
-
Installare Homebrew.
-
Eseguire il comando riportato di seguito per installare Homebrew.
iwhooge@iwhooge-mac ~ % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ==> Checking for `sudo` access (which may request your password)... Password: ==> This script will install: /opt/homebrew/bin/brew /opt/homebrew/share/doc/homebrew /opt/homebrew/share/man/man1/brew.1 /opt/homebrew/share/zsh/site-functions/_brew /opt/homebrew/etc/bash_completion.d/brew /opt/homebrew ==> The following new directories will be created: /opt/homebrew/Caskroom Press RETURN/ENTER to continue or any other key to abort: ==> /usr/bin/sudo /bin/mkdir -p /opt/homebrew/Caskroom ==> /usr/bin/sudo /bin/chmod ug=rwx /opt/homebrew/Caskroom ==> /usr/bin/sudo /usr/sbin/chown iwhooge /opt/homebrew/Caskroom ==> /usr/bin/sudo /usr/bin/chgrp admin /opt/homebrew/Caskroom ==> /usr/bin/sudo /usr/sbin/chown -R iwhooge:admin /opt/homebrew ==> Downloading and installing Homebrew... remote: Enumerating objects: 8902, done. remote: Counting objects: 100% (4704/4704), done. remote: Compressing objects: 100% (931/931), done. remote: Total 8902 (delta 3862), reused 4508 (delta 3719), pack-reused 4198 Receiving objects: 100% (8902/8902), 4.72 MiB | 11.67 MiB/s, done. Resolving deltas: 100% (5474/5474), completed with 597 local objects. From https://github.com/Homebrew/brew * [new branch] analytics_command_run_test_bot -> origin/analytics_command_run_test_bot * [new branch] brew_runtime_error_restore -> origin/brew_runtime_error_restore * [new branch] bump_skip_repology -> origin/bump_skip_repology * [new branch] bye-byebug -> origin/bye-byebug * [new branch] dependabot/bundler/Library/Homebrew/json_schemer-2.2.1 -> origin/dependabot/bundler/Library/Homebrew/json_schemer-2.2.1 * [new branch] load-internal-cask-json-v3 -> origin/load-internal-cask-json-v3 392cc15a7d..2fe08b139e master -> origin/master * [new branch] neon-proxy-5201 -> origin/neon-proxy-5201 * [new branch] strict-parser -> origin/strict-parser * [new tag] 4.2.10 -> 4.2.10 * [new tag] 4.2.11 -> 4.2.11 * [new tag] 4.2.12 -> 4.2.12 * [new tag] 4.2.13 -> 4.2.13 * [new tag] 4.2.15 -> 4.2.15 * [new tag] 4.2.16 -> 4.2.16 * [new tag] 4.2.7 -> 4.2.7 * [new tag] 4.2.8 -> 4.2.8 * [new tag] 4.2.9 -> 4.2.9 remote: Enumerating objects: 15, done. remote: Counting objects: 100% (9/9), done. remote: Total 15 (delta 9), reused 9 (delta 9), pack-reused 6 Unpacking objects: 100% (15/15), 2.23 KiB | 104.00 KiB/s, done. From https://github.com/Homebrew/brew * [new tag] 4.2.14 -> 4.2.14 Reset branch 'stable' ==> Updating Homebrew... Updated 2 taps (homebrew/core and homebrew/cask). ==> Installation successful! ==> Homebrew has enabled anonymous aggregate formulae and cask analytics. Read the analytics documentation (and how to opt-out) here: https://docs.brew.sh/Analytics No analytics data has been sent yet (nor will any be during this install run). ==> Homebrew is run entirely by unpaid volunteers. Please consider donating: https://github.com/Homebrew/brew#donations ==> Next steps: - Run these two commands in your terminal to add Homebrew to your PATH: (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/iwhooge/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" - Run brew help to get started - Further documentation: https://docs.brew.sh iwhooge@iwhooge-mac ~ %
-
Fare clic su RETURN/ENTER per continuare l'installazione.
- Si noti che l'installazione è stata completata correttamente.
- Copiare i comandi aggiuntivi per aggiungere Homebrew alla variabile di percorso.
-
-
Eseguire il comando seguente per aggiungere Homebrew alla variabile di percorso.
iwhooge@iwhooge-mac ~ % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/iwhooge/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
Task 2.2: Usa Homebrew per installare Terraform
In questo task, verrà utilizzato Homebrew per installare il pacchetto Terraform.
-
Eseguire il comando riportato di seguito per installare il pacchetto Terraform.
iwhooge@iwhooge-mac ~ % brew install terraform ==> Downloading https://ghcr.io/v2/homebrew/core/terraform/manifests/1.5.7 ######################################################################### 100.0% ==> Fetching terraform ==> Downloading https://ghcr.io/v2/homebrew/core/terraform/blobs/sha256:f43afa7c ######################################################################### 100.0% ==> Pouring terraform--1.5.7.arm64_sonoma.bottle.tar.gz 🍺 /opt/homebrew/Cellar/terraform/1.5.7: 6 files, 69.7MB ==> Running `brew cleanup terraform`... Disable this behavior by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). iwhooge@iwhooge-mac ~ %
-
Eseguire il comando seguente per verificare se Terraform è installato e la versione.
iwhooge@iwhooge-mac ~ % terraform -v Terraform v1.5.7 on darwin_arm64 Your version of Terraform is out of date! The latest version is 1.7.5. You can update by downloading from https://www.terraform.io/downloads.html iwhooge@iwhooge-mac ~ %
-
Tenere presente che Homebrew è installato con Terraform versione
1.5.7
. -
Si noti che si tratta di una versione precedente. Per aggiornare la versione Terraform, vedere Installa Terraform.
-
Per aggiornare Terraform, è necessario aggiungere il repository Hashicorp a Homebrew. eseguire il comando seguente.
iwhooge@iwhooge-mac ~ % brew tap hashicorp/tap
-
Eseguire il comando riportato di seguito per installare Terraform dal repository Hashicorp.
iwhooge@iwhooge-mac ~ % brew install hashicorp/tap/terraform terraform 1.5.7 is already installed but outdated (so it will be upgraded). ==> Fetching hashicorp/tap/terraform ==> Downloading https://releases.hashicorp.com/terraform/1.7.5/terraform_1.7.5_d ######################################################################### 100.0% ==> Upgrading hashicorp/tap/terraform 1.5.7 -> 1.7.5 🍺 /opt/homebrew/Cellar/terraform/1.7.5: 3 files, 88.7MB, built in 4 seconds ==> Running `brew cleanup terraform`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). Removing: /opt/homebrew/Cellar/terraform/1.5.7... (6 files, 69.7MB) Removing: /Users/iwhooge/Library/Caches/Homebrew/terraform_bottle_manifest--1.5.7... (9KB) Removing: /Users/iwhooge/Library/Caches/Homebrew/terraform--1.5.7... (19.6MB) iwhooge@iwhooge-mac ~ %
-
Si noti che Terraform viene aggiornato dalla versione
1.5.7
alla versione1.7.5
.
-
Eseguire il comando riportato di seguito per verificare che la versione di Terraform sia la più recente.
iwhooge@iwhooge-mac ~ % terraform -v Terraform v1.7.5 on darwin_arm64 iwhooge@iwhooge-mac ~ %
-
La nuova versione è
1.7.5
.
-
Task 2.3: Creare chiavi RSA locali per l'autenticazione OCI
Per consentire l'autenticazione con OCI utilizzando una chiave API, è necessario generare una nuova chiave privata e pubblica solo a questo scopo.
-
Eseguire il comando seguente per modificare la directory nella directory home.
iwhooge@iwhooge-mac ~ % cd ~/
-
Eseguire il comando seguente per verificare di trovarsi nella directory home.
iwhooge@iwhooge-mac ~ % pwd
-
Verificare che la directory home sia corretta.
/Users/iwhooge
-
Eseguire il comando seguente per creare una nuova directory che conterrà le informazioni da autenticare con OCI.
iwhooge@iwhooge-mac ~ % mkdir .oci
-
Eseguire il comando riportato di seguito per generare una chiave RSA privata.
iwhooge@iwhooge-mac ~ % openssl genrsa -out ~/.oci/4-4-2023-rsa-key.pem 2048 Generating RSA private key, 2048 bit long modulus .........................................................................................................................................+++++ ......+++++ e is 65537 (0x10001)
-
Eseguire il comando seguente per rendere leggibile il file delle chiavi private.
iwhooge@iwhooge-mac ~ % chmod 600 ~/.oci/4-4-2023-rsa-key.pem
-
Eseguire il comando riportato di seguito per generare una chiave RSA pubblica dalla chiave privata.
iwhooge@iwhooge-mac ~ % openssl rsa -pubout -in ~/.oci/4-4-2023-rsa-key.pem -out ~/.oci/4-4-2023-rsa-key-public.pem
-
Verificare che la scrittura della chiave sia stata completata.
writing RSA key
-
Eseguire il comando riportato di seguito per esaminare il contenuto della chiave RSA privata.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key.pem
-
Verificare il contenuto della chiave RSA privata.
-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA52+LJ+gp3MAJGtXTeQ/dmqq6Xh1zufK0yurLt/0w/DuxqEsL RT7x+Znz6EOVLx34Ul27QnHk7bhXaDCuwInnaOTOiS97AnLuFM08tvFksglnJssA JsszfTzUMNf0w4wtuLsJ5oRaPbVUa01TIm6HdwKAloIKYSn6z8gcvfLLItkyvPRo XXX w3yip+Yxr1YN3LjpDbZk4WTagKWoVQzp5nrfZlyU7ToZcMpUn/fIUsI= -----END RSA PRIVATE KEY-----
-
Eseguire il comando riportato di seguito per esaminare il contenuto della chiave RSA pubblica.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key-public.pem
-
Verificare il contenuto della chiave RSA pubblica.
----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA52+LJ+gp3MAJGtXTeQ/d XXX mtHVtjLM1ftjYlaRSG5Xl/xdKMC8LH0bxpy3XXzLmDrYCP3LrhrIG8Xmuzsji6Hw TQIDAQAB -----END PUBLIC KEY----- iwhooge@iwhooge-mac ~ %
Task 2.4: generazione di chiavi SSH locali per l'autenticazione host bastion
È inoltre necessario creare chiavi SSH locali per eseguire l'autenticazione con l'host Bastion. Questa è un'altra chiave che stiamo utilizzando per l'autenticazione con OCI Console (API).
-
Eseguire il comando seguente per modificare la directory nella directory SSH.
iwhooge@iwhooge-mac ~ % cd ~/.ssh/
-
Eseguire il comando riportato di seguito per verificare di disporre di una chiave SSH pubblica e privata utilizzabile.
iwhooge@iwhooge-mac .ssh % ls -l -a
-
Non è disponibile alcuna coppia di chiavi SSH. In questa esercitazione verrà generata una nuova coppia di chiavi SSH.
total 16 drwx------ 4 iwhooge staff 128 Feb 8 12:48 . drwxr-x---+ 30 iwhooge staff 960 Apr 4 11:03 .. -rw-------@ 1 iwhooge staff 2614 Feb 28 11:49 known_hosts -rw-------@ 1 iwhooge staff 1773 Feb 8 12:48 known_hosts.old
-
Eseguire il comando seguente per generare una nuova coppia di chiavi SSH.
iwhooge@iwhooge-mac .ssh % ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/iwhooge/.ssh/id_rsa):
-
Lasciare vuota la passphrase e fare clic su ENTER.
Enter passphrase (empty for no passphrase):
-
Lasciare vuota la passphrase e fare clic su ENTER.
Enter same passphrase again:
-
Tenere presente che la nuova coppia di chiavi SSH viene salvata nelle posizioni fornite.
Your identification has been saved in /Users/iwhooge/.ssh/id_rsa Your public key has been saved in /Users/iwhooge/.ssh/id_rsa.pub The key fingerprint is: SHA256:2E7jD5Cvt0C3pArp+u5Q3BWDBDwfbtxp5T6eez75DPc iwhooge@iwhooge-mac The key's randomart image is: +---[RSA 3072]----+ | ..o..o | | o o o. | | = o.+ | | . .=.++. | | o...=.S | | . . . Xoo | |. o o.*o... | | o . . o+o++ . | |.== . ..o=ooo E | +----[SHA256]-----+ iwhooge@iwhooge-mac .ssh %
Task 2.5: creare una chiave API nella console OCI e aggiungere la chiave pubblica all'account OCI
-
La chiave RSA è stata creata nel task 2.3. È possibile utilizzare tale chiave RSA pubblica per creare una chiave API nella console OCI per l'autenticazione OCI.
- Fare clic su profilo.
- Selezionare Profilo personale.
-
Scorri in basso.
- Selezionare Chiavi API.
- Fare clic su Aggiungi chiave API.
- Selezionare Incolla nella chiave pubblica.
- Incollare la chiave pubblica creata nel task 2.3.
- Fare clic su Aggiungi.
- Prendere nota del percorso e del file in cui deve essere incollata la configurazione di autenticazione API generata.
- Prendere nota dell'impronta della chiave API per la chiave API appena creata.
- Prendere nota della configurazione dell'autenticazione API.
- Fare clic su Copia.
- Fare clic su Chiudi.
-
Incollare la configurazione di autenticazione API in un file di testo temporaneo.
[DEFAULT] user=ocid1.user.oc1..aaaaaaaavgrXXX23aq fingerprint=30:XXX:ba:ee tenancy=ocid1.tenancy.oc1..aaaaaaaabh2XXXvq region=eu-frankfurt-1 key_file=<path to your private keyfile> # TODO
-
Aggiornare l'ultima riga della configurazione di autenticazione API e aggiungere il percorso corretto del file di chiavi private creato nel task 2.3.
[DEFAULT] user=ocid1.user.oc1..aaaaaaaavgxxxXX23aq fingerprint=30:XXX:ba:ee tenancy=ocid1.tenancy.oc1..aaaaaaaabh2XXXvq region=eu-frankfurt-1 key_file=~/.oci/4-4-2023-rsa-key.pem
-
Creare un file di configurazione dell'autenticazione API OCI.
iwhooge@iwhooge-mac ~ % nano ~/.oci/config iwhooge@iwhooge-mac ~ %
-
Copiare la configurazione di autenticazione API nel file. Usare
CTRL + X
per uscire da questo file. -
Immettere Y (Sì) per salvare il file.
-
Confermare il file che si desidera utilizzare per salvare la configurazione dell'autenticazione API.
-
Quando il file viene salvato correttamente, si tornerà al prompt del terminale.
Task 2.6: raccogliere le informazioni necessarie per l'ambiente OCI
Dobbiamo raccogliere alcune informazioni per i nostri file Terraform per l'autenticazione OCI utilizzando l'API. La maggior parte delle informazioni è già fornita nel file di configurazione dell'autenticazione API creato nel task 2.5.
-
Salvare le informazioni riportate di seguito per utilizzarle in un secondo momento.
OCID tenancy ocid1.tenancy.oc1..aaaaaaaabh2XXXvq OCID utente ocid1.user.oc1..aaaaaaaavgrXXX23aq Impronta digitale 30:XXX:ba:ee Area eu-frankfurt-1 Percorso chiave privata ~/.oci/4-4-2023-rsa-key.pem OCID compartimento ocid1.compartment.oc1..aaaaaaaabgXXXnuq -
L'unica cosa di cui abbiamo bisogno che non si trova nel file di configurazione dell'autenticazione API è l'OCID del compartimento.
-
Per ottenere l'OCID del compartimento, andare a Identità, Compartimenti e Dettagli compartimento.
-
Puoi vedere l'OCID del compartimento.
-
Fare clic su Copia per copiare l'OCID compartimento. Salvare per utilizzarlo successivamente.
-
Questo è il compartimento in cui distribuire i cluster Kubernetes.
Task 3: Creare script e file Terraform
Abbiamo completato la preparazione sul nostro computer locale, tra cui l'impostazione di chiavi Terraform, RSA e SSH, la configurazione dell'ambiente OCI (API) e la raccolta di tutte le informazioni essenziali necessarie per autenticare Terraform con OCI. Creare ora lo script Terraform.
In primo luogo, dobbiamo verificare di aver effettuato la sottoscrizione alle aree in cui stiamo distribuendo i nostri cluster Kubernetes. Se la distribuzione viene eseguita in un'area non sottoscritta, si verificherà un errore di autenticazione e la distribuzione non riuscirà.
Per questo tutorial, stiamo utilizzando le seguenti tre aree per la distribuzione: Amsterdam, San Jose e Dubai.
-
Fare clic sul menu di selezione area.
- Scorri in basso.
- Fare clic su Gestisci aree.
- Scorri in basso.
- Fare clic sulla freccia per visualizzare i 10 elementi successivi.
- Si noti che siamo iscritti ad Amsterdam.
- Fare clic sulla freccia per visualizzare i 10 elementi successivi.
- Si noti che siamo iscritti a Dubai.
- Si noti che siamo iscritti a San Jose.
- Fare clic sulla freccia per visualizzare i 10 elementi successivi.
-
Si noti che ci sono alcune regioni a cui non siamo iscritti. Ad esempio, se volevamo distribuire uno dei nostri cluster Kubernetes a Bogotà, dobbiamo prima sottoscrivere la regione di Bogotà.
-
L'immagine seguente illustra i risultati che stiamo cercando di ottenere con Terraform.
- Stiamo usando il computer remoto con Terraform.
- Questo computer remoto eseguirà l'autenticazione con OCI.
- Dopo l'autenticazione, utilizzeremo Terraform per distribuire i tre cluster Kubernetes seguenti utilizzando OKE.
- c1: Amsterdam
- c2: San José
- c3: Dubai
Abbiamo utilizzato gli alias c1, c2 e c3 per semplificare il nome dei componenti in OCI, in modo da facilitare il riconoscimento dei cluster in base al nome anziché a un nome generato in modo univoco.
-
Eseguire il comando seguente per assicurarsi di trovarsi nella directory home
iwhooge@iwhooge-mac ~ % pwd /Users/iwhooge
-
Eseguire il comando seguente per creare una nuova directory denominata
terraform-multi-oke
escripts
all'interno della directoryterraform-multi-oke
.iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke/scripts
-
Eseguire il comando seguente per verificare che la directory
terraform-multi-oke
sia stata creata.iwhooge@iwhooge-mac ~ % ls -l total 0 drwx------@ 5 iwhooge staff 160 Jan 2 06:25 Applications drwx------+ 4 iwhooge staff 128 Mar 27 08:15 Desktop drwx------@ 10 iwhooge staff 320 Mar 29 08:39 Documents drwx------@ 90 iwhooge staff 2880 Apr 3 14:16 Downloads drwx------@ 93 iwhooge staff 2976 Mar 16 15:49 Library drwx------ 5 iwhooge staff 160 Feb 14 08:18 Movies drwx------+ 4 iwhooge staff 128 Feb 21 20:00 Music drwxr-xr-x@ 6 iwhooge staff 192 Feb 9 08:36 Oracle Content drwx------+ 7 iwhooge staff 224 Feb 28 12:03 Pictures drwxr-xr-x+ 4 iwhooge staff 128 Dec 30 16:31 Public drwxr-xr-x 2 iwhooge staff 64 Apr 4 12:39 terraform-multi-oke
-
Eseguire il comando seguente per modificare il percorso della nuova directory
terraform-multi-oke
e assicurarsi che la directory sia vuota.iwhooge@iwhooge-mac ~ % cd terraform-multi-oke iwhooge@iwhooge-mac terraform-multi-oke % ls -l total 0 iwhooge@iwhooge-mac terraform-multi-oke %
-
Creare file nelle directory
terraform-multi-oke
eterraform-multi-oke/scripts
. I file e la struttura delle cartelle dovrebbero avere questo aspetto.iwhooge@iwhooge-mac terraform-multi-oke % tree . ├── c1.tf ├── c2.tf ├── c3.tf ├── contexts.tf ├── locals.tf ├── outputs.tf ├── providers.tf ├── scripts │ ├── cloud-init.sh │ ├── generate_kubeconfig.template.sh │ ├── kubeconfig_set_credentials.template.sh │ ├── set_alias.template.sh │ └── token_helper.template.sh ├── templates.tf ├── terraform.tfstate ├── terraform.tfstate.backup ├── terraform.tfvars ├── variables.tf └── versions.tf
Nota: è inoltre possibile scaricare i file dal repository GitHub: oci-oke-terraform.
-
Aggiornare il file
terraform.tfvars
con i parametri raccolti nel task 2.6.# ===================================================================== # START - UPDATE THIS SECTION WITH OWN PARAMETERS # provider api_fingerprint = "<use your own API fingerprint>" api_private_key_path = "<use your own OCI RSA private key path>" home_region = "<use your own home region>" # Use short form e.g. Ashburn from location column https://docs.oracle.com/en-us/iaas/Content/General/Concepts/regions.htm tenancy_id = "<use your own Tenancy OCID>" user_id = "<use your own User OCID>" compartment_id = "<use your own Compartement OCID>" # ssh ssh_private_key_path = "<use your own SSH private key path>" ssh_public_key_path = "<use your own SSH public key path>" # END - UPDATE THIS SECTION WITH OWN PARAMETERS # =====================================================================
-
Se desideri distribuire meno o più cluster Kubernetes o vuoi modificare le aree, puoi anche farlo modificando le aree nei file
terraform.tfvars
,contexts.tf
eproviders.tf
. Trovare c1, c2 e c3 e apportare le modifiche desiderate.-
terraform.tfvars
(Aggiungere o rimuovere i cluster qui, assicurarsi che quando si aggiungono cluster, utilizzare blocchi CIDR univoci).clusters = { c1 = { region = "amsterdam", vcn = "10.1.0.0/16", pods = "10.201.0.0/16", services = "10.101.0.0/16", enabled = true } c2 = { region = "bogota", vcn = "10.2.0.0/16", pods = "10.202.0.0/16", services = "10.102.0.0/16", enabled = true } c3 = { region = "sanjose", vcn = "10.3.0.0/16", pods = "10.203.0.0/16", services = "10.103.0.0/16", enabled = true } }
-
contexts.tf
(aggiungere o rimuovere i cluster nel parametrodepends_on
).resource "null_resource" "set_contexts" { depends_on = [module.c1, module.c2, module.c3] for_each = local.all_cluster_ids connection { host = local.operator_ip private_key = file(var.ssh_private_key_path) timeout = "40m" type = "ssh" user = "opc" bastion_host = local.bastion_ip bastion_user = "opc" bastion_private_key = file(var.ssh_private_key_path) }
-
providers.tf
(Aggiungere o rimuovere i cluster come provider, assicurarsi di modificare i parametri di area e alias).provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,var.home_region) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "home" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] } provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,lookup(lookup(var.clusters,"c1"),"region")) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "c1" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] } provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,lookup(lookup(var.clusters,"c2"),"region")) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "c2" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] } provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,lookup(lookup(var.clusters,"c3"),"region")) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "c3" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] }
Nota: è inoltre possibile scaricare i file dal repository GitHub: oci-oke-terraform.
-
Task 4: eseguire i cluster Terraform e OKE insieme alle risorse necessarie (VCN, subnet, DRG, RPC e così via)
Gli script Terraform sono disponibili con il parametro corretto. Ora esegui gli script e crea il nostro ambiente costituito da tre cluster Kubernetes in tre aree diverse.
-
Eseguire il comando seguente per passare alla directory
terraform-multi-oke
.Last login: Fri Apr 5 09:01:47 on ttys001 iwhooge@iwhooge-mac ~ % cd terraform-multi-oke
-
Eseguire il comando
terraform init
per inizializzare Terraform e per scaricare i moduli Terraform necessari per distribuire gli script Terraform.Assicurarsi che l'inizializzazione di Terraform sia riuscita.
-
Eseguire il comando
terraform plan
per pianificare Terraform per eseguire un controllo preliminare della validità del codice Terraform e verificare cosa verrà distribuito (non è ancora la distribuzione reale). -
Terraform aggiungerà 229 nuove risorse in OCI e questi oggetti sono tutti correlati ai tre cluster Kubernetes che stiamo pianificando di distribuire.
-
Eseguire il comando
terraform apply
per applicare Terraform e distribuire tre cluster Kubernetes. -
Immettere sì per approvare la distribuzione. Il completamento dello script Terraform richiederà circa 30 minuti.
- Tenere presente che la richiesta è stata completata e che vengono aggiunte 229 nuove risorse.
- Copiare l'output del comando SSH per accedere al bastion e agli host operatore per i task di gestione del cluster Kubernetes.
-
L'immagine riportata di seguito illustra la distribuzione corrente con Terraform.
-
Eseguire il comando SSH per eseguire il login all'host dell'operatore Kubernetes.
iwhooge@iwhooge-mac terraform-multi-oke % ssh -o ProxyCommand='ssh -W %h:%p -i ~/.ssh/id_rsa opc@143.47.183.243' -i ~/.ssh/id_rsa opc@10.1.0.12 The authenticity of host '143.47.183.243 (143.47.183.243)' can't be established. ED25519 key fingerprint is SHA256:hMVDzms+n0nEmsh/rTe0Y/MLSSSk6OKMSipoVlQyNfU. This key is not known by any other names.
-
Immettere sì per continuare per l'host bastion.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '143.47.183.243' (ED25519) to the list of known hosts. The authenticity of host '10.1.0.12 (<no hostip for proxy command>)' can't be established. ED25519 key fingerprint is SHA256:AIUmsHHGONNxuJsnCDDSyPCrJyoJPKYgdODX3qGe0Tw. This key is not known by any other names.
-
Immettere sì per continuare di nuovo per l'host operatore.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '10.1.0.12' (ED25519) to the list of known hosts. Activate the web console with: systemctl enable --now cockpit.socket Last login: Fri Apr 5 07:31:38 2024 from 10.1.0.2
-
Tenere presente che è stato eseguito il login all'operatore.
-
-
Eseguire il comando riportato di seguito per verificare i cluster Kubernetes distribuiti ed in esecuzione dall'host operatore.
[opc@o-tmcntm ~]$ kubectx c1 c2 c3 [opc@o-tmcntm ~]$
L'immagine seguente illustra da dove si sta impostando la connessione SSH all'host bastion e dall'host bastion all'host operatore.
Ora, abbiamo implementato tre cluster Kubernetes nelle diverse aree. Dai un'occhiata alle risorse distribuite da un livello elevato in OCI Console.
-
Verifica della console OCI (Amsterdam).
- Selezionare Amsterdam come Regione.
- Passare alla pagina Networking e alla VCN.
- Verificare che la VCN c1 sia stata creata qui.
- Passare a Developer Services e Kubernetes Clusters (OKE).
- Verificare che il cluster Kubernetes c1 sia stato creato qui.
- Passare a Computazione e Istanze.
- Controllare che l'host bastion e i due nodi di lavoro appartenenti al cluster Kubernetes c1 vengano creati qui.
- Passare a Networking, Connettività cliente e Gateway di instradamento dinamico.
- Verificare che il DRG venga creato qui.
- Passare a Identità e Criteri.
- Verificare che tre criteri di identità siano stati creati qui.
-
Verifica della console OCI (San Jose).
- Selezionare San Jose come regione.
- Passare alla pagina Networking e alla VCN.
- Verificare che la VCN c2 sia stata creata qui.
- Passare a Developer Services e Kubernetes Clusters (OKE).
- Verificare che il cluster Kubernetes c2 sia stato creato qui.
- Passare a Computazione e Istanze.
- Verificare che i due nodi di lavoro appartenenti al cluster Kubernetes c2 vengano creati qui.
- Passare a Networking, Connettività cliente e Gateway di instradamento dinamico.
- Verificare che il DRG venga creato qui.
- Passare a Identità e Criteri.
- Verificare che tre criteri di identità siano stati creati qui.
-
Verifica console OCI (Dubai)
- Selezionare Dubai come area.
- Passare alla pagina Networking e alla VCN.
- Verificare che la VCN c3 sia stata creata qui.
- Passare a Developer Services e Kubernetes Clusters (OKE).
- Verificare che il cluster Kubernetes c3 sia stato creato qui.
- Passare a Computazione e Istanze.
- Verificare che i due nodi di lavoro appartenenti al cluster Kubernetes c3 vengano creati qui.
- Passare a Networking, Connettività cliente e Gateway di instradamento dinamico.
- Verificare che il DRG venga creato qui.
- Passare a Identità e Criteri.
- Verificare che tre criteri di identità siano stati creati qui.
Task 5: Stabilire connessioni RPC
Stabilire le connessioni tra i vari allegati RPC. Esaminiamo innanzitutto questi aspetti nelle diverse regioni.
-
Collegamenti a connessione peering remoto in Amsterdam.
Assicurati di essere connesso all'area Amsterdam.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c1.
- Fare clic su Collegamenti di connessione peering remoto.
- Tenere presente che sono configurati due collegamenti di connessione al peering remoto.
- Tenere presente che entrambi i collegamenti di connessione peering remoto sono nuovi e non sottoposti a peering.
-
Collegamenti a connessione peering remoto in San Jose.
Assicurarsi di essere connessi all'area San Jose.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c2.
- Fare clic su Collegamenti di connessione peering remoto.
- Tenere presente che sono configurati due collegamenti di connessione al peering remoto.
- Tenere presente che entrambi i collegamenti di connessione peering remoto sono nuovi e non sottoposti a peering.
-
Collegamenti a connessione peering remoto in Dubai.
Assicurarsi di essere connessi all'area Dubai.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c3.
- Fare clic su Collegamenti di connessione peering remoto.
- Tenere presente che sono configurati due collegamenti di connessione al peering remoto.
- Tenere presente che entrambi i collegamenti di connessione peering remoto sono nuovi e non sottoposti a peering.
Raccoglie tutti gli OCID RPC
-
Per configurare le connessioni peering RPC tra tutte le aree, è necessario raccogliere l'OCID di questi collegamenti di connessione peering RPC.
- Assicurati di essere connesso all'area Amsterdam.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c1.
- Fare clic su Collegamenti di connessione peering remoto.
- Fare clic sulla connessione peering remoto (
rpc-to-c2
).
-
Fare clic su Mostra.
-
Fare clic su Copia.
Ripetere il processo per tutte le connessioni peering remote in tutte le aree di tutti i DRG e salvarle.
Ora sono stati raccolti i seguenti OCID di connessione peering remoto:
-
c1 RPC DRG
RPC locale OCID RPC locale RPC remoto C1: da rpc a c2 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaxxxxxxxxuxfq C2: da rpc a c1 C1: da rpc a c3 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaaaxxxxxXs4ya C3: da rpc a c1 -
c2 RPC DRG
RPC locale OCID RPC locale RPC remoto C2: da rpc a c1 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaxxxxXXXvmya C1: da rpc a c2 C2: da rpc a c3 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaaxxxxXXen2a C3: da rpc a c2 -
c3 RPC DRG
RPC locale OCID RPC locale RPC remoto C3: da rpc a c1 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaapxxxXXXcosq C1: da rpc a c3 C3: da rpc a c2 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaaxxxpXXXs5tq C2: da rpc a c3
Crea peer RPC
Configurare il peering su C1 in C2 e C3. Questa operazione configurerà automaticamente il peering per C1 sul lato C2 e C3 e la configurazione del peering su C2 in C3 configurerà automaticamente il peering per C2 sul lato C3.
Configura C1 Peerings (Amsterdam).
-
La seguente immagine mostra quali RPC stiamo configurando.
- Assicurati di essere connesso all'area Amsterdam.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c1.
- Fare clic su Collegamenti di connessione peering remoto.
- Fare clic sul primo collegamento di connessione peering remoto (
rpc-to-c2
). Qui si configura la connessione verso San Jose.
-
Fare clic su Stabilisci connessione.
- Selezionare l'area San Jose.
- Immettere l'OCID RPC del lato San Jose creato per c1 (Amsterdam).
- Fare clic su Stabilisci connessione.
- Lo stato del peering verrà modificato in In sospeso e il completamento richiederà un minuto.
- Fare clic sul secondo collegamento di connessione peering remoto (
rpc-to-c3
). Qui configurerai il collegamento verso Dubai.
-
Fare clic su Stabilisci connessione.
- Selezionare l'area Dubai.
- Immettere l'OCID RPC del lato Dubai creato per c1 (Amsterdam).
- Fare clic su Stabilisci connessione.
Configurare il peering C2 (San Jose).
-
La seguente immagine mostra quali RPC stiamo configurando.
- Lo stato del peering verrà modificato in In sospeso e il completamento richiederà un minuto.
- Fai clic sul menu Regioni e passa da Amsterdam alla regione di San Jose.
- Selezionare l'area San Jose.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c2.
- Fare clic su Collegamenti di connessione peering remoto.
- Si noti che il collegamento tra Amsterdam e San Jose è ora in peering. Questo è fatto dalla parte di Amsterdam.
- Si noti che lo stato di peering da San Jose (c2) a Dubai (c3) è ancora nuovo.
- Fare clic sul secondo collegamento di connessione peering remoto (
rpc-to-c3
). Qui configurerai il collegamento verso Dubai.
-
Fare clic su Stabilisci connessione.
- Selezionare l'area Dubai.
- Immettere l'OCID RPC del lato Dubai creato per c2 (San Jose).
- Fare clic su Stabilisci connessione.
-
Lo stato del peering verrà modificato in In sospeso e il completamento richiederà un minuto.
L'immagine seguente illustra il peering RPC mesh completo che abbiamo eseguito.
-
Verificare il peering delle connessioni.
- Assicurarsi di essere connessi all'area San Jose.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c1.
- Fare clic su Collegamenti di connessione peering remoto.
- Tenere presente che entrambi i collegamenti di connessione peering remoto hanno lo stato peering.
- Assicurarsi di essere connessi all'area San Jose.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c2.
- Fare clic su Collegamenti di connessione peering remoto.
- Tenere presente che entrambi i collegamenti di connessione peering remoto hanno lo stato peering.
- Assicurarsi di essere connessi all'area Dubai.
- Passare a Networking, Connettività cliente, Dynamic Routing Gateway e c3.
- Fare clic su Collegamenti di connessione peering remoto.
- Tenere presente che entrambi i collegamenti di connessione peering remoto hanno lo stato peering.
Task 6: utilizzare Network Visualizer per verificare le connessioni RPC
Eseguire un controllo aggiuntivo per verificare che l'RPC sia stato configurato correttamente con Network Visualizer.
- Fare clic sul menu hamburger nell'angolo superiore sinistro.
- Fare clic su Networking.
- Fare clic su Network Visualizer.
- Assicurati di essere connesso all'area Amsterdam.
- Si noti che la regione di Amsterdam è c1.
- Prendi nota dei collegamenti da Amsterdam a San Jose e Dubai.
- Assicurarsi di essere connessi all'area San Jose.
- Si noti che la regione di San Jose è c2.
- Prendi nota dei collegamenti da San Jose a Amsterdam e Dubai.
- Assicurarsi di essere connessi all'area Dubai.
- Si noti che la regione di Dubai è c3.
- Prendi nota dei collegamenti da Dubai a Amsterdam e San Jose.
Task 7: Utilizzare il bastion e l'operatore per controllare il funzionamento della connettività
Abbiamo creato i cluster Kubernetes (in tutte e tre le region diverse) e connesso le region utilizzando RPC. Ora possiamo utilizzare l'host operatore per verificare che l'operatore sia in grado di gestire i cluster Kubernetes.
-
Eseguire il comando seguente (che è stato fornito dopo il completamento del comando
terraform plan
).Last login: Fri Apr 5 09:10:01 on ttys000 iwhooge@iwhooge-mac ~ % ssh -o ProxyCommand='ssh -W %h:%p -i ~/.ssh/id_rsa opc@143.47.183.243' -i ~/.ssh/id_rsa opc@10.1.0.12 Activate the web console with: systemctl enable --now cockpit.socket Last login: Fri Apr 5 07:34:13 2024 from 10.1.0.2 [opc@o-tmcntm ~]$
-
Eseguire il comando seguente che itererà utilizzando un loop per in ogni cluster Kubernetes (c1, c2 e c3) e recuperare lo stato dei nodi di lavoro.
[opc@o-tmcntm ~]$ for c in c1 c2 c3; do > kubectx $c > kubectl get nodes > done Switched to context "c1". NAME STATUS ROLES AGE VERSION 10.1.113.144 Ready node 76m v1.28.2 10.1.125.54 Ready node 76m v1.28.2 Switched to context "c2". NAME STATUS ROLES AGE VERSION 10.2.65.174 Ready node 78m v1.28.2 10.2.98.54 Ready node 78m v1.28.2 Switched to context "c3". NAME STATUS ROLES AGE VERSION 10.3.118.212 Ready node 73m v1.28.2 10.3.127.119 Ready node 73m v1.28.2 [opc@o-tmcntm ~]$
Eseguire il comando seguente nel terminale dopo la connessione all'host operatore.
for c in c1 c2 c3; do kubectx $c kubectl get nodes done
-
Prendere nota dell'output di tutti i nodi per tutti i cluster Kubernetes distribuiti utilizzando lo script Terraform.
Eseguire il comando kubectl get all -n kube-system
con il loop for.
[opc@o-tmcntm ~]$ for c in c1 c2 c3; do
> kubectx $c
> kubectl get all -n kube-system
> done
Switched to context "c1".
NAME READY STATUS RESTARTS AGE
pod/coredns-844b4886f-8b4k6 1/1 Running 0 118m
pod/coredns-844b4886f-g8gbm 1/1 Running 0 122m
pod/csi-oci-node-5xzdg 1/1 Running 0 119m
pod/csi-oci-node-nsdg4 1/1 Running 1 (118m ago) 119m
pod/kube-dns-autoscaler-74f78468bf-l9644 1/1 Running 0 122m
pod/kube-flannel-ds-5hsp7 1/1 Running 0 119m
pod/kube-flannel-ds-wk7xl 1/1 Running 0 119m
pod/kube-proxy-gpvv2 1/1 Running 0 119m
pod/kube-proxy-vgtf7 1/1 Running 0 119m
pod/proxymux-client-nt59j 1/1 Running 0 119m
pod/proxymux-client-slk9j 1/1 Running 0 119m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.101.5.5 <none> 53/UDP,53/TCP,9153/TCP 122m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/csi-oci-node 2 2 2 2 2 <none> 122m
daemonset.apps/kube-flannel-ds 2 2 2 2 2 <none> 122m
daemonset.apps/kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 122m
daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 122m
daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 122m
daemonset.apps/proxymux-client 2 2 2 2 2 node.info.ds_proxymux_client=true 122m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 122m
deployment.apps/kube-dns-autoscaler 1/1 1 1 122m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-844b4886f 2 2 2 122m
replicaset.apps/kube-dns-autoscaler-74f78468bf 1 1 1 122m
Switched to context "c2".
NAME READY STATUS RESTARTS AGE
pod/coredns-84bd9cd884-4fqvr 1/1 Running 0 120m
pod/coredns-84bd9cd884-lmgz2 1/1 Running 0 124m
pod/csi-oci-node-4zl9l 1/1 Running 0 122m
pod/csi-oci-node-xjzfd 1/1 Running 1 (120m ago) 122m
pod/kube-dns-autoscaler-59575f8674-m6j2z 1/1 Running 0 124m
pod/kube-flannel-ds-llhhq 1/1 Running 0 122m
pod/kube-flannel-ds-sm6fg 1/1 Running 0 122m
pod/kube-proxy-7ppw8 1/1 Running 0 122m
pod/kube-proxy-vqfgb 1/1 Running 0 122m
pod/proxymux-client-cnkph 1/1 Running 0 122m
pod/proxymux-client-k5k6n 1/1 Running 0 122m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.102.5.5 <none> 53/UDP,53/TCP,9153/TCP 124m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/csi-oci-node 2 2 2 2 2 <none> 124m
daemonset.apps/kube-flannel-ds 2 2 2 2 2 <none> 124m
daemonset.apps/kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 124m
daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 124m
daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 124m
daemonset.apps/proxymux-client 2 2 2 2 2 node.info.ds_proxymux_client=true 124m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 124m
deployment.apps/kube-dns-autoscaler 1/1 1 1 124m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-84bd9cd884 2 2 2 124m
replicaset.apps/kube-dns-autoscaler-59575f8674 1 1 1 124m
Switched to context "c3".
NAME READY STATUS RESTARTS AGE
pod/coredns-56c7ffc89c-jt85k 1/1 Running 0 115m
pod/coredns-56c7ffc89c-lsqcg 1/1 Running 0 121m
pod/csi-oci-node-gfswn 1/1 Running 0 116m
pod/csi-oci-node-xpwbp 1/1 Running 0 116m
pod/kube-dns-autoscaler-6b69bf765c-fxjvc 1/1 Running 0 121m
pod/kube-flannel-ds-2sqbk 1/1 Running 0 116m
pod/kube-flannel-ds-l7sdz 1/1 Running 0 116m
pod/kube-proxy-4qcmb 1/1 Running 0 116m
pod/kube-proxy-zcrk4 1/1 Running 0 116m
pod/proxymux-client-4lgg7 1/1 Running 0 116m
pod/proxymux-client-zbcrg 1/1 Running 0 116m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.103.5.5 <none> 53/UDP,53/TCP,9153/TCP 121m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/csi-oci-node 2 2 2 2 2 <none> 122m
daemonset.apps/kube-flannel-ds 2 2 2 2 2 <none> 121m
daemonset.apps/kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 121m
daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 121m
daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 122m
daemonset.apps/proxymux-client 2 2 2 2 2 node.info.ds_proxymux_client=true 122m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 121m
deployment.apps/kube-dns-autoscaler 1/1 1 1 121m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-56c7ffc89c 2 2 2 121m
replicaset.apps/kube-dns-autoscaler-6b69bf765c 1 1 1 121m
[opc@o-tmcntm ~]$
Task 8: eliminare i cluster OKE utilizzando Terraform
Abbiamo utilizzato Terraform per la nostra distribuzione in modo da poter utilizzare anche Terraform per eliminare la distribuzione completa.
-
Eseguire il comando
terraform destroy
per eliminare tutte le risorse correlate ai tre cluster Kubernetes. -
Inserire sì per approvare il processo di eliminazione. Ci vorranno alcuni minuti per finire.
-
Si noti che la distruzione è completata e tutte le 229 risorse vengono distrutte.
Conferme
-
Autore - Iwan Hoogendoorn (esperto di rete OCI)
-
Collaboratore - Ali Mukadam
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Use Terraform to Deploy Multiple Kubernetes Clusters across different OCI Regions using OKE and Create a Full Mesh Network using RPC
F96818-01
April 2024