Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Utilisation de Terraform pour déployer plusieurs clusters Kubernetes dans différentes régions OCI à l'aide d'OKE et créer un réseau maillé complet à l'aide de RPC
Introduction
Dans ce tutoriel, nous allons expliquer comment créer plusieurs clusters Kubernetes à l'aide d'Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) et déployer ces clusters dans trois pays différents (régions). Pour accélérer le déploiement et déployer les clusters Kubernetes de manière cohérente avec le moins d'erreurs de configuration possibles, nous allons utiliser Terraform et certains scripts bash personnalisés.
Nous avons également déployé manuellement des clusters 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 la documentation suivante : Déploiement de plusieurs clusters 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 allons également configurer l'environnement OCI afin d'authentifier les demandes de notre ordinateur local pour les exécutions Terraform, et créer des scripts Terraform et shell pour déployer trois clusters Kubernetes sur OKE dans différentes régions. Nous assurerons la communication entre clusters en configurant des connexions d'appairage à distance (RPC) sur les passerelles de routage dynamique (DRG).
Tâche 1 : Déterminer la topologie (étoile ou maillage)
Nous créons ces clusters Kubernetes pour déployer une application basée sur un conteneur déployée dans toutes les régions. Pour permettre la communication entre ces clusters Kubernetes, nous devons disposer d'une certaine forme de communication réseau. Pour l'instant, ce tutoriel est hors de portée, mais nous devons prendre certaines décisions architecturales à l'avance. L'une de ces décisions consiste à déterminer si nous voulons permettre une communication directe entre toutes les régions ou si nous voulons utiliser une région comme plaque tournante pour toutes les communications et les autres comme un satellite.
Topologie en étoile : la topologie en étoile permet la communication entre les régions à l'aide d'une seule région de hub. Ainsi, si les clusters Kubernetes de San Jose veulent communiquer avec les clusters Kubernetes de Dubaï, ils utiliseront Amsterdam comme centre de transit.
Topologie de maillage : la topologie de maillage permet une communication directe depuis et vers toutes les régions (clusters Kubernetes). Ainsi, si les clusters Kubernetes de San Jose veulent communiquer avec les clusters Kubernetes de 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éparation de l'environnement pour l'authentification et exécution 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 constater que la commande est introuvable, ce qui signifie que Terraform n'est pas installé ou qu'il n'est pas ajouté à la variable de chemin.
Comme Terraform n'est pas installé, nous devons l'installer. Vous remarquerez qu'il ne s'agit pas seulement d'installer Terraform, mais qu'il faut effectuer plusieurs étapes pour déployer l'application Terraform et préparer l'environnement pour que notre solution complète de génération de script de bout en bout déploie trois clusters 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 de packages pour MacOS (et Linux) qui peut être utilisé pour installer des applications et leurs dépendances requises sont comme 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 poursuivre 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 le package Terraform.
-
Exécutez la commande suivante pour installer le package 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 sa 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 ~ %
-
Homebrew est installé avec la version
1.5.7
de Terraform. -
Notez qu'il s'agit d'une ancienne version. Pour mettre à niveau la version de Terraform, reportez-vous à Installation de 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 ~ %
-
Terraform est en cours de mise à niveau de la version
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 ~ %
-
La nouvelle version est
1.7.5
.
-
Tâche 2.3 : création de clés RSA locales pour l'authentification OCI
Pour autoriser l'authentification avec OCI à l'aide d'une clé d'API, nous devons générer une nouvelle clé privée et publique à cette fin uniquement.
-
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 personnel est correct.
/Users/iwhooge
-
Exécutez la commande suivante pour créer un répertoire contenant les informations à authentifier 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és privées 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ération de clés SSH locales pour l'authentification de l'hôte de 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 utilisable.
iwhooge@iwhooge-mac .ssh % ls -l -a
-
Notez que nous ne disposons d'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 de passe vide et cliquez sur ENTER.
Enter passphrase (empty for no passphrase):
-
Laissez la phrase de passe vide et cliquez sur ENTER.
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 dans 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.
-
Défiler vers le bas.
- Sélectionnez 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 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 de clé d'API que vous venez de créer.
- Notez la configuration de l'authentification d'API.
- Cliquez sur Copier.
- Cliquez 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és privées 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. -
Saisissez Y (Yes) pour enregistrer le fichier.
-
Confirmez le fichier à 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 : collecte des 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 d'authentification d'API créé dans la tâche 2.5.
-
Enregistrez les informations suivantes pour une utilisation ultérieure.
OCID de location ocid1.tenancy.oc1..aaaaaaaabh2XXXvq OCID utilisateur ocid1.user.oc1..aaaaaaaavgrXXX23aq Empreinte 30 :XXX:ba:ee Région eu-frankfurt-1 Chemin de clé privée ~/.oci/4-4-2023-rsa-key.pem OCID du compartiment. ocid1.compartment.oc1..aaaaaaaabgXXXnuq -
La seule chose dont nous avons besoin, qui ne figure pas dans le fichier de configuration d'authentification d'API, est l'OCID de compartiment.
-
Pour obtenir l'OCID de compartiment, accédez à Identité, Compartiments, Détails du compartiment.
-
Vous pouvez voir l'OCID de 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 clusters Kubernetes.
Tâche 3 : création de scripts et de fichiers Terraform
Nous avons terminé la préparation sur notre machine locale, notamment la configuration de 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. A présent, créez le script Terraform.
Nous devons d'abord vérifier que nous sommes abonnés aux régions sur lesquelles nous déployons nos clusters Kubernetes. Si nous effectuons le déploiement vers une région non abonnée, une erreur d'authentification est générée et le déploiement échoue.
Pour ce tutoriel, nous utilisons les trois régions suivantes pour le déploiement : Amsterdam, San Jose et Dubaï.
-
Cliquez sur le menu de sélection de région.
- Défiler vers le bas.
- Cliquez sur Gérer les régions.
- Défiler vers le bas.
- Cliquez sur la flèche pour afficher les 10 éléments suivants.
- Notez que nous sommes abonnés à Amsterdam.
- Cliquez sur la flèche pour afficher les 10 éléments suivants.
- Notez que nous sommes abonnés à Dubaï.
- Notez que nous sommes abonnés à San Jose.
- Cliquez sur la flèche pour afficher les 10 éléments suivants.
-
Nous ne sommes pas abonnés à certaines régions. Par exemple, si nous voulions déployer l'un de nos clusters Kubernetes vers Bogota, nous devons d'abord nous abonner à la région de Bogota.
-
L'image suivante illustre ce que nous essayons de réaliser 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 clusters Kubernetes suivants à l'aide d'OKE.
- c1 : Amsterdam
- c2 : San José
- c3 : Dubaï
Nous avons utilisé les alias c1, c2 et c3 pour faciliter l'attribution de noms aux composants dans OCI, de sorte qu'il est plus facile de reconnaître les clusters 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 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
. Les fichiers et la structure de dossiers doivent 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
Remarque : 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 # =====================================================================
-
Pour déployer moins de clusters Kubernetes ou modifier les régions, vous pouvez également modifier 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 enlevez des clusters ici. Lorsque vous ajoutez des clusters, 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 enlevez des clusters 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 enlevez des clusters en tant que fournisseur. Veillez à 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"] }
Remarque : vous pouvez également télécharger les fichiers à partir du référentiel GitHub : oci-oke-terraform.
-
Tâche 4 : exécution des clusters Terraform et OKE avec les ressources nécessaires (VCN, sous-réseaux, passerelles de routage dynamique, connexions d'appairage à distance, etc.)
Les scripts Terraform sont en place avec le paramètre correct. Exécutez maintenant les scripts et créez notre environnement composé de trois clusters 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 de procéder à une prévérification de la validité du code Terraform et vérifiez ce qui sera déployé (il ne s'agit pas encore du déploiement réel). -
Terraform ajoutera 229 nouvelles ressources dans OCI. Ces objets sont tous liés aux trois clusters Kubernetes que nous prévoyons de déployer.
-
Exécutez la commande
terraform apply
pour appliquer Terraform et déployer trois clusters Kubernetes. -
Saisissez yes pour approuver le déploiement. La fin du script Terraform prend environ 30 minutes.
- Notez que l'opération apply est terminée et que 229 nouvelles ressources sont ajoutées.
- Copiez la sortie de la commande SSH pour accéder aux hôtes de bastion et d'opérateur pour les tâches de gestion de cluster Kubernetes.
-
L'image suivante illustre le déploiement en cours 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.
-
Saisissez yes pour continuer pour l'hôte du 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.
-
Saisissez yes pour continuer sur 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 clusters Kubernetes déployés 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'emplacement de configuration de la connexion SSH à l'hôte du bastion et de l'hôte du bastion à l'hôte de l'opérateur.
Nous avons maintenant déployé trois clusters Kubernetes dans les différentes régions. Examinez les ressources déployées d'un haut niveau dans la console OCI.
-
Vérification de la console OCI (Amsterdam).
- Sélectionnez Amsterdam comme région.
- Accédez à Networking et VCN.
- Vérifiez que le VCN c1 est créé ici.
- Accédez à Services de développeur et à Clusters Kubernetes (OKE).
- Vérifiez que le cluster Kubernetes c1 est créé ici.
- Accédez à Compute et à Instances.
- Vérifiez que l'hôte du bastion et les deux noeuds de processus actif appartenant au cluster Kubernetes c1 sont créés ici.
- Accédez à Fonctions de réseau, Connectivité client et Passerelle de routage dynamique.
- Vérifiez que le DRG est créé ici.
- Accédez à Identité et à Stratégies.
- Vérifiez que trois stratégies d'identité sont créées ici.
-
Vérification de la console OCI (San José).
- Sélectionnez San José comme région.
- Accédez à Networking et VCN.
- Vérifiez que le VCN c2 est créé ici.
- Accédez à Services de développeur et à Clusters Kubernetes (OKE).
- Vérifiez que le cluster Kubernetes c2 est créé ici.
- Accédez à Compute et à Instances.
- Vérifiez que les deux noeuds de processus actif appartenant au cluster Kubernetes c2 sont créés ici.
- Accédez à Fonctions de réseau, Connectivité client et Passerelle de routage dynamique.
- Vérifiez que le DRG est créé ici.
- Accédez à Identité et à Stratégies.
- Vérifiez que trois stratégies d'identité sont créées ici.
-
Vérification de la console OCI (Dubaï)
- Sélectionnez Dubaï comme région.
- Accédez à Networking et VCN.
- Vérifiez que le VCN c3 est créé ici.
- Accédez à Services de développeur et à Clusters Kubernetes (OKE).
- Vérifiez que le cluster Kubernetes c3 est créé ici.
- Accédez à Compute et à Instances.
- Vérifiez que les deux noeuds de processus actif appartenant au cluster Kubernetes c3 sont créés ici.
- Accédez à Fonctions de réseau, Connectivité client et Passerelle de routage dynamique.
- Vérifiez que le DRG est créé ici.
- Accédez à Identité et à Stratégies.
- Vérifiez que trois stratégies d'identité sont créées ici.
Tâche 5 : établissement des connexions RPC
Etablissez les connexions entre les différentes pièces jointes RPC. Examinons-les d'abord dans les différentes régions.
-
Attachements de connexion d'appairage à distance dans Amsterdam.
Assurez-vous que vous êtes connecté à la région Amsterdam.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Deux attachements de connexion d'appairage à distance sont configurés.
- Les deux attachements de connexion d'appairage à distance sont nouveaux et non appairés.
-
Attachements de connexion d'appairage à distance dans San José.
Assurez-vous que vous êtes connecté à la région San José.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c2.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Deux attachements de connexion d'appairage à distance sont configurés.
- Les deux attachements de connexion d'appairage à distance sont nouveaux et non appairés.
-
Attachements de connexion d'appairage à distance dans Dubai.
Assurez-vous que vous êtes connecté à la région Dubaï.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c3.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Deux attachements de connexion d'appairage à distance sont configurés.
- Les deux attachements de connexion d'appairage à distance sont nouveaux et non appairés.
Collecter tous les OCID RPC
-
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 que vous êtes connecté à la région Amsterdam.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Cliquez sur la connexion d'appairage à distance (
rpc-to-c2
).
-
Cliquez sur Afficher.
-
Cliquez sur Copier.
Répétez le processus pour toutes les connexions d'appairage à distance 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 à distance suivants :
-
c1 RPC DRG
RPC local OCID RPC local RPC distant C1 : rpc-to-c2 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaxxxxxxuxfq C2 : rpc-to-c1 C1 : rpc-to-c3 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaaaxxxxxXs4ya C3 : rpc-to-c1 -
c2 RPC DRG
RPC local OCID RPC local RPC distant C2 : rpc-to-c1 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaxxxxXXXvmya C1 : rpc-to-c2 C2 : rpc-to-c3 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaaxxxxXXen2a C3 : rpc-to-c2 -
c3 RPC DRG
RPC local OCID RPC local RPC distant C3 : rpc-to-c1 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaapxxxXXXcosq C1 : rpc-to-c3 C3 : rpc-to-c2 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaaxxxpXXXs5tq C2 : rpc-to-c3
Création des homologues RPC
Configurez l'appairage sur C1 vers C2 et C3. Cette opération configure automatiquement l'appairage pour C1 côté C2 et C3, et la configuration de l'appairage sur C2 vers C3 configure automatiquement l'appairage pour C2 côté C3.
Configurez les homologues C1 (Amsterdam).
-
L'image suivante montre les connexions d'appairage à distance que nous configurons.
- Assurez-vous que vous êtes connecté à la région Amsterdam.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Cliquez sur la première connexion d'appairage à distance (
rpc-to-c2
). Ici, vous allez configurer la connexion vers San Jose.
-
Cliquez sur Etablir la connexion.
- Sélectionnez la région San José.
- Entrez l'OCID RPC du côté de San Jose créé pour c1 (Amsterdam).
- Cliquez sur Etablir la connexion.
- Le statut de l'appairage passe à En attente et l'opération prend quelques minutes.
- Cliquez sur la deuxième connexion d'appairage à distance (
rpc-to-c3
). Ici, vous configurerez la connexion vers Dubaï.
-
Cliquez sur Etablir la connexion.
- Sélectionnez la région Dubaï.
- Entrez l'OCID RPC du côté de Dubaï créé pour c1 (Amsterdam).
- Cliquez sur Etablir la connexion.
Configurez l'appairage C2 (San José).
-
L'image suivante montre les connexions d'appairage à distance que nous configurons.
- Le statut de l'appairage passe à En attente et l'opération prend quelques minutes.
- Cliquez sur le menu des régions et passez d'Amsterdam à San Jose.
- Sélectionnez la région San José.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c2.
- Cliquez sur Attachements de connexion d'appairage à distance.
- 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 de l'appairage de San Jose (c2) à Dubaï (c3) est toujours nouveau.
- Cliquez sur la deuxième connexion d'appairage à distance (
rpc-to-c3
). Ici, vous configurerez la connexion vers Dubaï.
-
Cliquez sur Etablir la connexion.
- Sélectionnez la région Dubaï.
- Entrez l'OCID RPC du côté de Dubaï créé pour c2 (San José).
- Cliquez sur Etablir la connexion.
-
Le statut de l'appairage passe à En attente et l'opération prend quelques minutes.
L'image suivante illustre l'appairage RPC à maillage complet que nous avons effectué.
-
Vérifiez l'appairage des connexions.
- Assurez-vous que vous êtes connecté à la région San José.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c1.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Les deux attachements de connexion d'appairage à distance ont le statut Appairé.
- Assurez-vous que vous êtes connecté à la région San José.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c2.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Les deux attachements de connexion d'appairage à distance ont le statut Appairé.
- Assurez-vous que vous êtes connecté à la région Dubaï.
- Accédez à Networking, Connectivité client, Passerelles de routage dynamique et c3.
- Cliquez sur Attachements de connexion d'appairage à distance.
- Les deux attachements de connexion d'appairage à distance 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 le RPC a été configuré correctement avec Network Visualizer.
- Cliquez sur le menu Hamburger dans l'angle supérieur gauche.
- Cliquez sur Fonctions de réseau.
- Cliquez sur Visualiseur de réseau.
- Assurez-vous que vous êtes connecté à la région Amsterdam.
- Notez que la région d'Amsterdam est c1.
- Notez les connexions d'Amsterdam à San Jose et Dubaï.
- Assurez-vous que vous êtes connecté à la région San José.
- La région de San Jose est c2.
- Notez les connexions de San Jose à Amsterdam et Dubaï.
- Assurez-vous que vous êtes 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 le bastion et l'opérateur pour vérifier le fonctionnement de la connectivité
Nous avons créé les clusters Kubernetes (sur les trois régions différentes) et connecté les régions à l'aide de la connexion d'appairage à distance. Nous pouvons désormais utiliser l'hôte de l'opérateur pour vérifier qu'il peut gérer les clusters Kubernetes.
-
Exécutez la commande suivante (qui a été fournie une fois la commande
terraform plan
terminée).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 cluster Kubernetes (c1, c2 et c3) et extraire le statut des noeuds de processus actif.
[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 tous les clusters Kubernetes déployés à 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 clusters OKE à l'aide de Terraform
Nous avons utilisé Terraform pour notre déploiement. Nous pouvons donc également utiliser Terraform pour supprimer l'ensemble du déploiement.
-
Exécutez la commande
terraform destroy
pour supprimer toutes les ressources associées aux trois clusters Kubernetes. -
Entrez yes pour approuver le processus de suppression. La fin de l'opération prend quelques minutes.
-
Notez que la destruction est terminée et que les 229 ressources sont détruites.
Remerciements
-
Auteur - Iwan Hoogendoorn (spécialiste du réseau OCI)
-
Contributeur - Ali Mukadam
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur 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
F96817-01
April 2024