Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Utiliser Terraform pour déployer plusieurs grappes Kubernetes sur différentes régions OCI à l'aide d'OKE et créer un réseau maillé complet à l'aide d'une connexion d'appairage distant
Présentation
Dans ce tutoriel, nous expliquerons comment créer plusieurs grappes Kubernetes à l'aide d'Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) et comment déployer ces grappes dans trois pays (régions) différents. Pour accélérer le déploiement et déployer les grappes Kubernetes de manière constante avec le moins d'erreurs de configuration possible, nous utiliserons Terraform et certains scripts bash personnalisés.
Nous avons également déployé manuellement des grappes uniques à l'aide de la méthode de création rapide et de la méthode de création personnalisée.
Ce tutoriel est une mise à jour basée sur cette documentation : Déploiement de plusieurs grappes Kubernetes sur Oracle Cloud.
Objectifs
- Nous préparerons notre ordinateur local avec les outils nécessaires aux actions Terraform dans l'environnement Oracle Cloud Infrastructure (OCI). Nous configurerons également l'environnement OCI pour authentifier les demandes provenant de notre ordinateur local pour les exécutions Terraform et créerons des scripts Terraform et d'interpréteur de commandes afin de déployer trois grappes Kubernetes sur OKE dans différentes régions. Nous assurerons la communication entre les clusters en configurant les connexions d'appairage distant (RPC) sur les passerelles de routage dynamique (DRG).
Tâche 1 : Déterminer la topologie (Star vs Mesh)
Nous créons ces grappes Kubernetes pour déployer une application basée sur des conteneurs déployée dans toutes les régions. Pour permettre la communication entre ces grappes Kubernetes, nous devons avoir une forme de communication réseau. Pour l'instant, cela n'entre pas dans le cadre de ce tutoriel, mais nous devons prendre certaines décisions architecturales à l'avance. L'une de ces décisions consiste à déterminer si nous voulons permettre la communication directe entre toutes les régions ou si nous voulons utiliser une région comme centre de toutes les communications et les autres comme satellite.
Topologie en étoile : La topologie en étoile permet la communication entre les régions à l'aide d'une seule région en étoile. Donc, si les clusters Kubernetes à San Jose veulent communiquer avec les clusters Kubernetes à Dubaï, il utilisera Amsterdam comme centre de transit.
Topologie de mise en forme : La topologie de maillage permet une communication directe vers et depuis toutes les régions (grappes Kubernetes). Ainsi, si les clusters Kubernetes à San Jose veulent communiquer avec les clusters Kubernetes à Dubaï, ils peuvent communiquer directement.
Dans ce tutoriel, nous allons créer une topologie de maillage, et cette connectivité sera effectuée à l'aide de DRG et de RPC.
Tâche 2 : Préparer votre environnement pour l'authentification et exécuter des scripts Terraform
Avant d'utiliser Terraform, nous devons préparer notre environnement. Pour utiliser Terraform, ouvrez un terminal. Dans ce tutoriel, nous utilisons l'application de terminal OS X.
-
Exécutez la commande suivante pour vérifier que Terraform est installé, ajouté à votre chemin et quelle est la version.
Last login: Thu Apr 4 08:50:38 on ttys000 iwhooge@iwhooge-mac ~ % terraform -v zsh: command not found: terraform iwhooge@iwhooge-mac ~ %
-
Vous pouvez voir que la commande est introuvable, ce qui signifie que Terraform n'est pas installé ou qu'elle n'est pas ajoutée à la variable de chemin.
Comme vous pouvez le constater, Terraform n'est pas installé, nous devons l'installer. Vous remarquerez qu'il ne s'agit pas seulement de l'installation de Terraform, mais qu'il y a plusieurs étapes requises pour déployer l'application Terraform et préparer l'environnement pour notre solution complète de script de bout en bout afin de déployer trois grappes Kubernetes dans trois régions différentes.
L'image suivante fournit des conseils sur les tâches à suivre.
Tâche 2.1 : Installer Homebrew
Terraform peut être installé à l'aide de différentes méthodes. Dans ce tutoriel, nous allons installer Terraform à l'aide de Homebrew.
Homebrew est un gestionnaire d'ensembles pour MacOS (et Linux) qui peut être utilisé pour installer des applications et leurs dépendances requises sont telles que apt
ou yum
.
-
Installez Homebrew.
-
Exécutez la commande suivante pour installer 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 ~ %
-
Cliquez sur RETURN/ENTER pour continuer l'installation.
- Notez que l'installation est terminée.
- Copiez les commandes supplémentaires pour ajouter Homebrew à votre variable de chemin.
-
-
Exécutez la commande suivante pour ajouter Homebrew à votre variable de chemin.
iwhooge@iwhooge-mac ~ % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/iwhooge/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
Tâche 2.2 : Utiliser Homebrew pour installer Terraform
Dans cette tâche, nous allons utiliser Homebrew pour installer l'ensemble Terraform.
-
Exécutez la commande suivante pour installer l'ensemble 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 ~ %
-
Exécutez la commande suivante pour vérifier si Terraform est installé et la version.
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 ~ %
-
Notez que Homebrew est installé avec la version Terraform
1.5.7
. -
Notez qu'il s'agit d'une ancienne version. Pour mettre à niveau la version de Terraform, voir Installer Terraform.
-
Pour mettre à niveau Terraform, nous devons ajouter le référentiel Hashicorp à Homebrew. Exécutez la commande suivante .
iwhooge@iwhooge-mac ~ % brew tap hashicorp/tap
-
Exécutez la commande suivante pour installer Terraform à partir du référentiel 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 ~ %
-
Notez que Terraform est en cours de mise à niveau de
1.5.7
vers la version1.7.5
.
-
Exécutez la commande suivante pour vérifier que la version de Terraform est la plus récente.
iwhooge@iwhooge-mac ~ % terraform -v Terraform v1.7.5 on darwin_arm64 iwhooge@iwhooge-mac ~ %
-
Notez que la nouvelle version est
1.7.5
.
-
Tâche 2.3 : Créer des clés RSA locales pour l'authentification OCI
Pour permettre l'authentification avec OCI à l'aide d'une clé d'API, nous devons générer une nouvelle clé privée et publique uniquement à cette fin.
-
Exécutez la commande suivante pour remplacer le répertoire par votre répertoire de base.
iwhooge@iwhooge-mac ~ % cd ~/
-
Exécutez la commande suivante pour vérifier que vous êtes dans votre répertoire de base.
iwhooge@iwhooge-mac ~ % pwd
-
Vérifiez que votre répertoire de base est correct.
/Users/iwhooge
-
Exécutez la commande suivante pour créer un répertoire contenant les informations d'authentification auprès d'OCI.
iwhooge@iwhooge-mac ~ % mkdir .oci
-
Exécutez la commande suivante pour générer une clé RSA privée.
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)
-
Exécutez la commande suivante pour rendre le fichier de clé privée lisible.
iwhooge@iwhooge-mac ~ % chmod 600 ~/.oci/4-4-2023-rsa-key.pem
-
Exécutez la commande suivante pour générer une clé RSA publique à partir de la clé privée.
iwhooge@iwhooge-mac ~ % openssl rsa -pubout -in ~/.oci/4-4-2023-rsa-key.pem -out ~/.oci/4-4-2023-rsa-key-public.pem
-
Vérifiez que l'écriture de la clé est terminée.
writing RSA key
-
Exécutez la commande suivante pour examiner le contenu de la clé RSA privée.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key.pem
-
Vérifiez le contenu de la clé RSA privée.
-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA52+LJ+gp3MAJGtXTeQ/dmqq6Xh1zufK0yurLt/0w/DuxqEsL RT7x+Znz6EOVLx34Ul27QnHk7bhXaDCuwInnaOTOiS97AnLuFM08tvFksglnJssA JsszfTzUMNf0w4wtuLsJ5oRaPbVUa01TIm6HdwKAloIKYSn6z8gcvfLLItkyvPRo XXX w3yip+Yxr1YN3LjpDbZk4WTagKWoVQzp5nrfZlyU7ToZcMpUn/fIUsI= -----END RSA PRIVATE KEY-----
-
Exécutez la commande suivante pour examiner le contenu de la clé RSA publique.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key-public.pem
-
Vérifiez le contenu de la clé RSA publique.
----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA52+LJ+gp3MAJGtXTeQ/d XXX mtHVtjLM1ftjYlaRSG5Xl/xdKMC8LH0bxpy3XXzLmDrYCP3LrhrIG8Xmuzsji6Hw TQIDAQAB -----END PUBLIC KEY----- iwhooge@iwhooge-mac ~ %
Tâche 2.4 : Générer des clés SSH locales pour l'authentification d'hôte bastion
Nous devons également créer des clés SSH locales pour nous authentifier auprès de l'hôte bastion. Il s'agit d'une autre clé que nous utilisons pour l'authentification à l'aide de la console OCI (API).
-
Exécutez la commande suivante pour remplacer le répertoire par votre répertoire SSH.
iwhooge@iwhooge-mac ~ % cd ~/.ssh/
-
Exécutez la commande suivante pour vérifier que vous disposez d'une clé SSH publique et privée pouvant être utilisée.
iwhooge@iwhooge-mac .ssh % ls -l -a
-
Notez que nous n'avons aucune paire de clés SSH. Dans ce tutoriel, nous allons générer une nouvelle paire de clés 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
-
Exécutez la commande suivante pour générer une nouvelle paire de clés 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):
-
Laissez la phrase secrète vide et cliquez sur ENTRER.
Enter passphrase (empty for no passphrase):
-
Laissez la phrase secrète vide et cliquez sur ENTRER.
Enter same passphrase again:
-
Notez que la nouvelle paire de clés SSH est enregistrée dans les emplacements fournis.
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 %
Tâche 2.5 : Créer une clé d'API dans la console OCI et ajouter la clé publique à votre compte OCI
-
La clé RSA a été créée au cours de la tâche 2.3. Nous pouvons utiliser cette clé RSA publique pour créer une clé d'API dans la console OCI pour l'authentification OCI.
- Cliquez sur profil.
- Sélectionnez Mon profil.
-
Descendre.
- Sélectionnez des clés d'API.
- Cliquez sur Ajouter une clé d'API.
- Sélectionnez Coller dans la clé publique.
- Collez la clé publique créée dans la tâche 2.3.
- Cliquez sur Add (Ajouter).
- Notez le chemin et le fichier dans lesquels la configuration d'authentification d'API générée doit être collée.
- Notez l'empreinte numérique de la clé d'API que vous venez de créer.
- Notez la configuration de l'authentification d'API.
- Cliquez sur Copier.
- Cliquer sur Fermer.
-
Collez la configuration d'authentification d'API dans un fichier texte temporaire.
[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
-
Mettez à jour la dernière ligne de la configuration d'authentification d'API et ajoutez le chemin correct du fichier de clé privée créé dans la tâche 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
-
Créez un fichier de configuration d'authentification d'API OCI.
iwhooge@iwhooge-mac ~ % nano ~/.oci/config iwhooge@iwhooge-mac ~ %
-
Copiez la configuration d'authentification d'API dans le fichier. Utilisez
CTRL + X
pour quitter ce fichier. -
Entrez O (Oui) pour enregistrer le fichier.
-
Confirmez le fichier que vous voulez utiliser pour enregistrer la configuration d'authentification d'API.
-
Lorsque le fichier est enregistré avec succès, vous revenez à l'invite de terminal.
Tâche 2.6 : Collecter les informations requises pour votre environnement OCI
Nous devons collecter des informations pour nos fichiers Terraform pour l'authentification OCI à l'aide de l'API. La plupart des informations sont déjà fournies dans le fichier de configuration de l'authentification d'API créé dans la tâche 2.5.
-
Enregistrez les informations suivantes pour une utilisation ultérieure.
OCID de la location ocid1.tenancy.oc1..aaaaaaaabh2XXXvq OCID d'utilisateur ocid1.user.oc1..aaaaaaaavgrXXX23aq Empreinte numérique 30 :XXX:ba:ee Région eu-frankfurt-1 Chemin de la clé privée ~/.oci/4-4-2023-rsa-key.pem OCID du compartiment. ocid1.compartment.oc1..aaaaaaaabgXXXnuq -
La seule chose dont nous avons besoin et qui ne se trouve pas dans le fichier de configuration de l'authentification d'API est l'OCID du compartiment.
-
Pour obtenir l'OCID du compartiment, naviguez jusqu'à Identité, Compartiments et Détails du compartiment.
-
Vous pouvez voir l'OCID du compartiment.
-
Cliquez sur Copier pour copier l'OCID du compartiment. Enregistrez-le pour une utilisation ultérieure.
-
Il s'agit du compartiment dans lequel vous allez déployer vos grappes Kubernetes.
Tâche 3 : Créer des scripts et des fichiers Terraform
Nous avons terminé la préparation sur notre machine locale, notamment la configuration des clés Terraform, RSA et SSH, la configuration de l'environnement OCI (API) et la collecte de toutes les informations essentielles nécessaires pour authentifier Terraform avec OCI. Créez maintenant le script Terraform.
Tout d'abord, nous devons vérifier que nous sommes abonnés aux régions sur lesquelles nous déployons nos grappes Kubernetes. Si nous procédons au déploiement vers une région non abonnée, une erreur d'authentification s'affiche et le déploiement échoue.
Pour ce tutoriel, nous utiliserons les trois régions suivantes pour le déploiement : Amsterdam, San Jose et Dubaï.
-
Cliquez sur le menu de sélection de région.
- Descendre.
- Cliquez sur Manage Regions.
- Descendre.
- Cliquez sur flèche pour voir les 10 éléments suivants.
- Notez que nous sommes abonnés à Amsterdam.
- Cliquez sur flèche pour voir les 10 éléments suivants.
- Notez que nous sommes abonnés à Dubaï.
- Notez que nous sommes abonnés à San Jose.
- Cliquez sur flèche pour voir les 10 éléments suivants.
-
Notez qu'il y a quelques régions auxquelles nous ne sommes pas abonnés. Par exemple, si nous voulions déployer une de nos grappes Kubernetes à Bogota, nous devons d'abord nous abonner à la région de Bogota.
-
L'image suivante illustre ce que nous essayons d'obtenir avec Terraform.
- Nous utilisons l'ordinateur distant avec Terraform.
- Cet ordinateur distant s'authentifiera auprès d'OCI.
- Après l'authentification, nous utiliserons Terraform pour déployer les trois grappes Kubernetes suivantes à l'aide d'OKE.
- c1 : Amsterdam
- c2 : San José
- c3 : Dubaï
Nous avons utilisé les alias c1, c2 et c3 pour faciliter le nom des composants dans OCI, afin qu'il soit plus facile de reconnaître les grappes en fonction du nom au lieu d'un nom généré de manière unique.
-
Exécutez la commande suivante pour vous assurer que vous êtes dans votre répertoire de base
iwhooge@iwhooge-mac ~ % pwd /Users/iwhooge
-
Exécutez la commande suivante pour créer un nouveau répertoire nommé
terraform-multi-oke
etscripts
dans le répertoireterraform-multi-oke
.iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke/scripts
-
Exécutez la commande suivante pour vérifier que le répertoire
terraform-multi-oke
est créé.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
-
Exécutez la commande suivante pour modifier le chemin d'accès au nouveau répertoire
terraform-multi-oke
et assurez-vous que le répertoire est vide.iwhooge@iwhooge-mac ~ % cd terraform-multi-oke iwhooge@iwhooge-mac terraform-multi-oke % ls -l total 0 iwhooge@iwhooge-mac terraform-multi-oke %
-
Créez des fichiers dans les répertoires
terraform-multi-oke
etterraform-multi-oke/scripts
. La structure des fichiers et des dossiers doit ressembler à ceci.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
Note : Vous pouvez également télécharger les fichiers à partir du référentiel GitHub : oci-oke-terraform.
-
Mettez à jour le fichier
terraform.tfvars
avec les paramètres collectés dans la tâche 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 # =====================================================================
-
Si vous voulez déployer moins ou plus de grappes Kubernetes ou modifier les régions, vous pouvez également le faire en modifiant les régions dans les fichiers
terraform.tfvars
,contexts.tf
etproviders.tf
. Recherchez c1, c2 et c3 et apportez des modifications.-
terraform.tfvars
(Ajoutez ou supprimez des grappes ici, assurez-vous que lorsque vous ajoutez des grappes, utilisez des blocs CIDR uniques.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
(Ajoutez ou supprimez des grappes dans le paramètredepends_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
(Ajoutez ou supprimez des grappes en tant que fournisseur, assurez-vous de modifier les paramètres de région et d'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"] }
Note : Vous pouvez également télécharger les fichiers à partir du référentiel GitHub : oci-oke-terraform.
-
Tâche 4 : Exécuter des grappes Terraform et OKE avec les ressources nécessaires (VCN, sous-réseaux, passerelles DRG, connexions d'appairage distant, etc.)
Des scripts Terraform sont en place avec le bon paramètre. Maintenant, exécutez les scripts et créez notre environnement composé de trois grappes Kubernetes dans trois régions différentes.
-
Exécutez la commande suivante pour remplacer le répertoire par le répertoire
terraform-multi-oke
.Last login: Fri Apr 5 09:01:47 on ttys001 iwhooge@iwhooge-mac ~ % cd terraform-multi-oke
-
Exécutez la commande
terraform init
pour initialiser Terraform et télécharger les modules Terraform requis pour déployer les scripts Terraform.Assurez-vous que Terraform a été initialisé.
-
Exécutez la commande
terraform plan
pour planifier Terraform afin d'effectuer une vérification préalable si votre code Terraform est valide et vérifiez ce qui sera déployé (il ne s'agit pas encore du déploiement réel). -
Notez que Terraform ajoutera 229 nouvelles ressources dans OCI, et que ces objets sont tous liés aux trois grappes Kubernetes que nous prévoyons de déployer.
-
Exécutez la commande
terraform apply
pour appliquer Terraform et déployer trois grappes Kubernetes. -
Entrez oui pour approuver le déploiement. La fin du script Terraform prendra environ 30 minutes.
- Notez que l'application est terminée et que 229 nouvelles ressources sont ajoutées.
- Copiez la sortie de la commande SSH pour accéder à l'hôte bastion et aux hôtes opérateurs pour les tâches de gestion de grappe Kubernetes.
-
L'image suivante illustre le déploiement courant avec Terraform.
-
Exécutez la commande SSH pour vous connecter à l'hôte de l'opérateur 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.
-
Entrez oui pour continuer pour l'hôte 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.
-
Entrez Oui pour continuer pour l'hôte de l'opérateur.
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
-
Notez que vous êtes maintenant connecté à l'opérateur.
-
-
Exécutez la commande suivante pour vérifier les grappes Kubernetes déployées et en cours d'exécution à partir de l'hôte de l'opérateur.
[opc@o-tmcntm ~]$ kubectx c1 c2 c3 [opc@o-tmcntm ~]$
L'image suivante illustre l'endroit où vous configurez la connexion SSH à l'hôte bastion et de l'hôte bastion à l'hôte de l'opérateur.
Nous avons maintenant déployé trois grappes Kubernetes dans les différentes régions. Examinez les ressources déployées de haut niveau dans la console OCI.
-
Vérification de la console OCI (Amsterdam).
- Sélectionnez Amsterdam comme région.
- Naviguez jusqu'à Réseau et VCN.
- Vérifiez que le VCN c1 est créé ici.
- Naviguez jusqu'à Services de développement et Grappes Kubernetes (OKE).
- Vérifiez que la grappe Kubernetes c1 est créée ici.
- Naviguez jusqu'à Calcul et Instances.
- Vérifiez que l'hôte bastion et les deux noeuds de travail appartenant à la grappe Kubernetes c1 sont créés ici.
- Naviguez jusqu'à Réseau, Connectivité client et Passerelle de routage dynamique.
- Vérifiez que la passerelle DRG est créée ici.
- Naviguez jusqu'à Identité et Politiques.
- Vérifiez que trois politiques d'identité sont créées ici.
-
Vérification de la console OCI (San Jose).
- Sélectionnez San Jose comme région.
- Naviguez jusqu'à Réseau et VCN.
- Vérifiez que le VCN c2 est créé ici.
- Naviguez jusqu'à Services de développement et Grappes Kubernetes (OKE).
- Vérifiez que la grappe Kubernetes c2 est créée ici.
- Naviguez jusqu'à Calcul et Instances.
- Vérifiez que les deux noeuds de travail appartenant à la grappe Kubernetes c2 sont créés ici.
- Naviguez jusqu'à Réseau, Connectivité client et Passerelle de routage dynamique.
- Vérifiez que la passerelle DRG est créée ici.
- Naviguez jusqu'à Identité et Politiques.
- Vérifiez que trois politiques d'identité sont créées ici.
-
Vérification de la console OCI (Dubaï)
- Sélectionnez Dubaï comme région.
- Naviguez jusqu'à Réseau et VCN.
- Vérifiez que le VCN c3 est créé ici.
- Naviguez jusqu'à Services de développement et Grappes Kubernetes (OKE).
- Vérifiez que la grappe Kubernetes c3 est créée ici.
- Naviguez jusqu'à Calcul et Instances.
- Vérifiez que les deux noeuds de travail appartenant à la grappe Kubernetes c3 sont créés ici.
- Naviguez jusqu'à Réseau, Connectivité client et Passerelle de routage dynamique.
- Vérifiez que la passerelle DRG est créée ici.
- Naviguez jusqu'à Identité et Politiques.
- Vérifiez que trois politiques d'identité sont créées ici.
Tâche 5 : Établir des connexions RPC
Établissez les connexions entre les divers attachements de connexion d'appairage distant. Examinons d'abord ces questions dans les différentes régions.
-
Attachements de connexion d'appairage distant à Amsterdam.
Assurez-vous d'être connecté à la région Amsterdam.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage distant.
- Notez que deux attachements de connexion d'appairage distant sont configurés.
- Notez que les deux attachements de connexion d'appairage distant sont nouveaux et ne sont pas appairés.
-
Attachements de connexion d'appairage distant dans San Jose.
Assurez-vous d'être connecté à la région San Jose.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c2.
- Cliquez sur Attachements de connexion d'appairage distant.
- Notez que deux attachements de connexion d'appairage distant sont configurés.
- Notez que les deux attachements de connexion d'appairage distant sont nouveaux et ne sont pas appairés.
-
Attachements de connexion d'appairage distant dans Dubai.
Assurez-vous d'être connecté à la région Dubaï.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c3.
- Cliquez sur Attachements de connexion d'appairage distant.
- Notez que deux attachements de connexion d'appairage distant sont configurés.
- Notez que les deux attachements de connexion d'appairage distant sont nouveaux et ne sont pas appairés.
Collecter tous les OCID de connexion d'appairage distant
-
Pour configurer les connexions d'appairage RPC entre toutes les régions, nous devons collecter l'OCID de ces attachements de connexion d'appairage RPC.
- Assurez-vous d'être connecté à la région Amsterdam.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage distant.
- Cliquez sur la connexion d'appairage distant (
rpc-to-c2
).
-
Cliquer sur Afficher.
-
Cliquez sur Copier.
Répétez le processus pour toutes les connexions d'appairage distant sur toutes les régions de toutes les passerelles de routage dynamique et enregistrez-les.
Maintenant, nous avons collecté les OCID de connexion d'appairage distant suivants :
-
c1 RPC DRG
RPC local OCID de la connexion d'appairage distant locale RPC distant C1 : RPC à c2 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaxxxxxxuxfq C2 : RPC à c1 C1 : RPC à c3 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaaaxxxxxXs4ya C3 : RPC à c1 -
c2 RPC DRG
RPC local OCID de la connexion d'appairage distant locale RPC distant C2 : RPC à c1 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaxxxxXXXvmya C1 : RPC à c2 C2 : RPC à c3 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaaxxxxXXen2a C3 : RPC à c2 -
c3 RPC DRG
RPC local OCID de la connexion d'appairage distant locale RPC distant C3 : RPC à c1 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaapxxxXXXcosq C1 : RPC à c3 C3 : RPC à c2 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaaxxxpXXXs5tq C2 : RPC à c3
Créer des pairs RPC
Configurez l'appairage sur C1 sur C2 et C3. Cela configure automatiquement l'appairage pour C1 du côté C2 et C3, et la configuration de l'appairage sur C2 sur C3 configure automatiquement l'appairage pour C2 du côté C3.
Configurez les pairs C1 (Amsterdam).
-
L'image suivante montre les connexions d'appairage distant que nous configurons.
- Assurez-vous d'être connecté à la région Amsterdam.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage distant.
- Cliquez sur le premier attachement de connexion d'appairage distant (
rpc-to-c2
). Ici, vous allez configurer la connexion vers San Jose.
-
Cliquez sur Établir la connexion.
- Sélectionnez la région San Jose.
- Entrez l'OCID RPC du côté San Jose créé pour c1 (Amsterdam).
- Cliquez sur Établir la connexion.
- Le statut de l'appairage passera à En attente, et cela prendra une minute.
- Cliquez sur le deuxième attachement de connexion d'appairage distant (
rpc-to-c3
). Ici, vous allez configurer la connexion vers Dubaï.
-
Cliquez sur Établir la connexion.
- Sélectionnez la région Dubaï.
- Entrez l'OCID RPC du côté Dubaï créé pour c1 (Amsterdam).
- Cliquez sur Établir la connexion.
Configurez l'appairage C2 (San Jose).
-
L'image suivante montre les connexions d'appairage distant que nous configurons.
- Le statut de l'appairage passera à En attente, et cela prendra une minute.
- Cliquez sur le menu des régions et passez d'Amsterdam à San Jose.
- Sélectionnez la région San Jose.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c2.
- Cliquez sur Attachements de connexion d'appairage distant.
- Notez que la connexion entre Amsterdam et San Jose est maintenant appairée. Cela se fait du côté d'Amsterdam.
- Notez que le statut d'appairage de San Jose (c2) à Dubaï (c3) est toujours nouveau.
- Cliquez sur le deuxième attachement de connexion d'appairage distant (
rpc-to-c3
). Ici, vous allez configurer la connexion vers Dubaï.
-
Cliquez sur Établir la connexion.
- Sélectionnez la région Dubaï.
- Entrez l'OCID RPC du côté Dubaï créé pour c2 (San Jose).
- Cliquez sur Établir la connexion.
-
Le statut de l'appairage passera à En attente, et cela prendra une minute.
L'image suivante illustre l'appairage RPC maillé complet que nous avons effectué.
-
Vérifiez l'appairage des connexions.
- Assurez-vous d'être connecté à la région San Jose.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage distant.
- Notez que les deux attachements de connexion d'appairage distant ont le statut Appairé.
- Assurez-vous d'être connecté à la région San Jose.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c2.
- Cliquez sur Attachements de connexion d'appairage distant.
- Notez que les deux attachements de connexion d'appairage distant ont le statut Appairé.
- Assurez-vous d'être connecté à la région Dubaï.
- Naviguez jusqu'à Réseau, Connectivité client, Passerelles de routage dynamique et c3.
- Cliquez sur Attachements de connexion d'appairage distant.
- Notez que les deux attachements de connexion d'appairage distant ont le statut Appairé.
Tâche 6 : Utiliser le visualiseur de réseau pour vérifier les connexions RPC
Effectuez une vérification supplémentaire pour vous assurer que la connexion d'appairage distant a été configurée correctement avec Network Visualizer.
- Cliquez sur le menu hamburger dans le coin supérieur gauche.
- Cliquez sur Réseau.
- Cliquez sur Visualiseur de réseau.
- Assurez-vous d'être connecté à la région Amsterdam.
- Notez que la région d'Amsterdam est c1.
- Notez les connexions de Amsterdam à San Jose et Dubaï.
- Assurez-vous d'être connecté à la région San Jose.
- Notez que la région de San Jose est c2.
- Notez les connexions de San Jose à Amsterdam et Dubaï.
- Assurez-vous d'être connecté à la région Dubaï.
- Notez que la région de Dubaï est c3.
- Notez les connexions de Dubaï à Amsterdam et San Jose.
Tâche 7 : Utiliser l'hôte bastion et l'opérateur pour vérifier le fonctionnement de la connectivité
Nous avons créé des grappes Kubernetes (sur les trois régions différentes) et connecté les régions à l'aide d'une connexion d'appairage distant. Nous pouvons maintenant utiliser l'hôte de l'opérateur pour vérifier qu'il peut gérer les grappes Kubernetes.
-
Exécutez la commande suivante (qui a été fournie après l'exécution de la commande
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 ~]$
-
Exécutez la commande suivante pour effectuer une itération à l'aide d'une boucle for dans chaque grappe Kubernetes (c1, c2 et c3) et extraire le statut des noeuds de travail.
[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 ~]$
Exécutez la commande suivante dans le terminal après vous être connecté à l'hôte de l'opérateur.
for c in c1 c2 c3; do kubectx $c kubectl get nodes done
-
Notez la sortie de tous les noeuds pour toutes les grappes Kubernetes déployées à l'aide du script Terraform.
Exécutez la commande kubectl get all -n kube-system
avec la boucle 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 ~]$
Tâche 8 : Supprimer les grappes OKE à l'aide de Terraform
Nous avons utilisé Terraform pour notre déploiement afin de pouvoir également utiliser Terraform pour supprimer le déploiement complet.
-
Exécutez la commande
terraform destroy
pour supprimer toutes les ressources liées aux trois grappes Kubernetes. -
Entrez oui pour approuver le processus de suppression. Il faudra quelques minutes pour terminer.
-
Notez que la destruction est terminée et que les 229 ressources sont détruites.
Confirmation
-
Auteur - Iwan Hoogendoorn (spécialiste du réseau OCI)
-
Contributeur - Ali Mukadam
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Use Terraform to Deploy Multiple Kubernetes Clusters across different OCI Regions using OKE and Create a Full Mesh Network using RPC
F96816-01
April 2024