Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
Mit Terraform mehrere Kubernetes-Cluster über verschiedene OCI-Regionen hinweg mit OKE bereitstellen und ein vollständiges Mesh-Netzwerk mit RPC erstellen
Einführung
In diesem Tutorial wird erläutert, wie Sie mehrere Kubernetes-Cluster mit Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) erstellen. Diese Cluster werden in drei verschiedenen Ländern (Regionen) bereitgestellt. Um das Deployment zu beschleunigen und die Kubernetes-Cluster konsistent mit den wenigsten Konfigurationsfehlern bereitzustellen, verwenden wir Terraform und einige benutzerdefinierte bash-Skripte.
Wir haben auch einzelne Cluster manuell bereitgestellt, indem wir die Schnellerstellungsmethode und die benutzerdefinierte Erstellungsmethode verwendet haben.
Dieses Tutorial ist ein Update basierend auf dieser Dokumentation: Mehrere Kubernetes-Cluster auf Oracle Cloud bereitstellen.
Ziele
- Wir bereiten unseren lokalen Computer mit den erforderlichen Tools für Terraform-Aktionen in der Oracle Cloud Infrastructure-(OCI-)Umgebung vor. Außerdem konfigurieren wir die OCI-Umgebung zur Authentifizierung von Anforderungen von unserem lokalen Computer für Terraform-Ausführungen und erstellen Terraform- und Shellskripte, um drei Kubernetes-Cluster auf OKE über verschiedene Regionen hinweg bereitzustellen. Wir stellen die Clusterkommunikation sicher, indem wir Remote-Peering-Verbindungen (RPC) in den dynamischen Routinggateways (DRG) konfigurieren.
Aufgabe 1: Topologie bestimmen (Star vs Mesh)
Wir erstellen diese Kubernetes-Cluster, um eine containerbasierte Anwendung bereitzustellen, die in allen Regionen bereitgestellt wird. Um die Kommunikation zwischen diesen Kubernetes-Clustern zu ermöglichen, benötigen wir eine Form der Netzwerkkommunikation. Im Moment ist dies nicht im Rahmen dieses Tutorials, aber wir müssen einige architektonische Entscheidungen im Voraus treffen. Eine dieser Entscheidungen besteht darin, festzustellen, ob wir eine direkte Kommunikation zwischen allen Regionen ermöglichen wollen oder ob wir eine Region als Drehscheibe für die gesamte Kommunikation und die anderen als Spoke nutzen wollen.
Star-Topologie: Die Star-Topologie ermöglicht die Kommunikation zwischen den Regionen über eine einzige Hubregion. Wenn die Kubernetes-Cluster in San Jose also mit den Kubernetes-Clustern in Dubai kommunizieren möchten, wird Amsterdam als Transit-Hub verwendet.
Mesh-Topologie: Die Mesh-Topologie ermöglicht die direkte Kommunikation mit und von allen Regionen (Kubernetes-Cluster). Wenn die Kubernetes-Cluster in San Jose also mit den Kubernetes-Clustern in Dubai kommunizieren möchten, kann sie direkt kommunizieren.
In diesem Tutorial erstellen wir eine Mesh-Topologie. Diese Konnektivität erfolgt mit DRG und RPC.
Aufgabe 2: Umgebung für Authentifizierung vorbereiten und Terraform-Skripte ausführen
Vor der Verwendung von Terraform müssen wir unsere Umgebung vorbereiten. Um Terraform zu verwenden, öffnen Sie ein Terminal. In diesem Tutorial verwenden wir OS X Terminal-Anwendung.
-
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Terraform installiert, Ihrem Pfad hinzugefügt und welche Version es ist.
Last login: Thu Apr 4 08:50:38 on ttys000 iwhooge@iwhooge-mac ~ % terraform -v zsh: command not found: terraform iwhooge@iwhooge-mac ~ %
-
Sie können sehen, dass der Befehl nicht gefunden wurde. Dies bedeutet, dass entweder Terraform nicht installiert ist oder dass er nicht der Pfadvariablen hinzugefügt wird.
Wie Sie sehen können, ist Terraform nicht installiert. Daher müssen wir es installieren. Sie werden feststellen, dass Terraform nicht nur installiert wird, sondern dass mehrere Schritte erforderlich sind, um die Terraform-Anwendung bereitzustellen und die Umgebung für unsere vollständige End-to-End-Scripting-Lösung vorzubereiten, um drei Kubernetes-Cluster in drei verschiedenen Regionen bereitzustellen.
Die folgende Abbildung enthält Anleitungen zu den erforderlichen Aufgaben.
Aufgabe 2.1: Homebrew installieren
Terraform kann mit verschiedenen Methoden installiert werden. In diesem Tutorial installieren wir Terraform mit Homebrew.
Homebrew ist ein Package Manager für MacOS (und Linux), mit dem Anwendungen installiert werden können, und die erforderlichen Abhängigkeiten sind wie apt
oder yum
.
-
Installieren Sie Homebrew.
-
Führen Sie folgenden Befehl aus, um Homebrew zu installieren:
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 ~ %
-
Klicken Sie auf Zurücksetzen/EINGABETASTE, um mit der Installation fortzufahren.
- Beachten Sie, dass die Installation erfolgreich abgeschlossen wird.
- Kopieren Sie die zusätzlichen Befehle, um Ihrer Pfadvariablen Homebrew hinzuzufügen.
-
-
Führen Sie den folgenden Befehl aus, um der Pfadvariablen Homebrew hinzuzufügen.
iwhooge@iwhooge-mac ~ % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/iwhooge/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
Aufgabe 2.2: Terraform mit Homebrew installieren
In dieser Aufgabe installieren wir das Terraform-Package mit Homebrew.
-
Führen Sie folgenden Befehl aus, um das Terraform-Package zu installieren.
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 ~ %
-
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Terraform und die Version installiert sind.
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 ~ %
-
Beachten Sie, dass Homebrew mit der Terraform-Version
1.5.7
installiert ist. -
Beachten Sie, dass es sich um eine alte Version handelt. Informationen zum Upgrade der Terraform-Version finden Sie unter Terraform installieren.
-
Um ein Upgrade von Terraform durchzuführen, müssen Sie das Hashicorp-Repository zu Homebrew hinzufügen. Führen Sie den folgenden Befehl aus.
iwhooge@iwhooge-mac ~ % brew tap hashicorp/tap
-
Führen Sie den folgenden Befehl aus, um Terraform aus dem Hashicorp-Repository zu installieren.
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 ~ %
-
Beachten Sie, dass für Terraform ein Upgrade von
1.5.7
auf die Version1.7.5
durchgeführt wird.
-
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Terraform-Version die neueste ist.
iwhooge@iwhooge-mac ~ % terraform -v Terraform v1.7.5 on darwin_arm64 iwhooge@iwhooge-mac ~ %
-
Beachten Sie, dass die neue Version
1.7.5
ist.
-
Aufgabe 2.3: Lokale RSA-Schlüssel für OCI-Authentifizierung erstellen
Um die Authentifizierung mit OCI mit einem API-Schlüssel zuzulassen, müssen wir nur zu diesem Zweck einen neuen privaten und öffentlichen Schlüssel generieren.
-
Führen Sie den folgenden Befehl aus, um das Verzeichnis zum Home-Verzeichnis zu wechseln.
iwhooge@iwhooge-mac ~ % cd ~/
-
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Sie sich im Home-Verzeichnis befinden.
iwhooge@iwhooge-mac ~ % pwd
-
Prüfen Sie, ob das Home-Verzeichnis korrekt ist.
/Users/iwhooge
-
Führen Sie den folgenden Befehl aus, um ein neues Verzeichnis zu erstellen, das die Informationen zur Authentifizierung bei OCI enthält.
iwhooge@iwhooge-mac ~ % mkdir .oci
-
Führen Sie den folgenden Befehl aus, um einen privaten RSA-Schlüssel zu generieren.
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)
-
Führen Sie den folgenden Befehl aus, um die Private-Key-Datei lesbar zu machen.
iwhooge@iwhooge-mac ~ % chmod 600 ~/.oci/4-4-2023-rsa-key.pem
-
Führen Sie den folgenden Befehl aus, um einen öffentlichen RSA-Schlüssel aus dem Private Key zu generieren.
iwhooge@iwhooge-mac ~ % openssl rsa -pubout -in ~/.oci/4-4-2023-rsa-key.pem -out ~/.oci/4-4-2023-rsa-key-public.pem
-
Prüfen Sie, ob das Schreiben des Schlüssels abgeschlossen ist.
writing RSA key
-
Führen Sie den folgenden Befehl aus, um den Inhalt des privaten RSA-Schlüssels zu prüfen.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key.pem
-
Prüfen Sie den Inhalt des privaten RSA-Schlüssels.
-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA52+LJ+gp3MAJGtXTeQ/dmqq6Xh1zufK0yurLt/0w/DuxqEsL RT7x+Znz6EOVLx34Ul27QnHk7bhXaDCuwInnaOTOiS97AnLuFM08tvFksglnJssA JsszfTzUMNf0w4wtuLsJ5oRaPbVUa01TIm6HdwKAloIKYSn6z8gcvfLLItkyvPRo XXX w3yip+Yxr1YN3LjpDbZk4WTagKWoVQzp5nrfZlyU7ToZcMpUn/fIUsI= -----END RSA PRIVATE KEY-----
-
Führen Sie den folgenden Befehl aus, um den Inhalt des öffentlichen RSA-Schlüssels zu prüfen.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key-public.pem
-
Prüfen Sie den Inhalt des öffentlichen RSA-Schlüssels.
----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA52+LJ+gp3MAJGtXTeQ/d XXX mtHVtjLM1ftjYlaRSG5Xl/xdKMC8LH0bxpy3XXzLmDrYCP3LrhrIG8Xmuzsji6Hw TQIDAQAB -----END PUBLIC KEY----- iwhooge@iwhooge-mac ~ %
Aufgabe 2.4: Lokale SSH-Schlüssel für Bastionhostauthentifizierung generieren
Außerdem müssen Sie lokale SSH-Schlüssel erstellen, um sich beim Bastionhost zu authentifizieren. Dies ist ein weiterer Schlüssel, den wir für die Authentifizierung mit der OCI-Konsole (API) verwenden.
-
Führen Sie den folgenden Befehl aus, um das Verzeichnis in Ihr SSH-Verzeichnis zu wechseln.
iwhooge@iwhooge-mac ~ % cd ~/.ssh/
-
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Sie über einen öffentlichen und privaten SSH-Schlüssel verfügen, der verwendet werden kann.
iwhooge@iwhooge-mac .ssh % ls -l -a
-
Beachten Sie, dass kein SSH-Schlüsselpaar vorhanden ist. In diesem Tutorial generieren wir ein neues SSH-Schlüsselpaar.
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
-
Führen Sie den folgenden Befehl aus, um ein neues SSH-Schlüsselpaar zu generieren.
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):
-
Lassen Sie die Passphrase leer, und klicken Sie auf EINGABETASTE.
Enter passphrase (empty for no passphrase):
-
Lassen Sie die Passphrase leer, und klicken Sie auf EINGABETASTE.
Enter same passphrase again:
-
Beachten Sie, dass das neue SSH-Schlüsselpaar in den angegebenen Speicherorten gespeichert wird.
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 %
Aufgabe 2.5: API-Schlüssel in der OCI-Konsole erstellen und Public Key zu Ihrem OCI-Account hinzufügen
-
Der RSA-Schlüssel wurde in Aufgabe 2.3 erstellt. Mit diesem öffentlichen RSA-Schlüssel können Sie einen API-Schlüssel in der OCI-Konsole für die OCI-Authentifizierung erstellen.
- Klicken Sie auf Profil.
- Wählen Sie Mein Profil aus.
-
Blättern Sie nach unten.
- Wählen Sie API-Schlüssel aus.
- Klicken Sie auf API-Schlüssel hinzufügen.
- Wählen Sie In Public Key einfügen aus.
- Fügen Sie den in Aufgabe 2.3 erstellten Public Key ein.
- Klicken Sie auf Hinzufügen.
- Beachten Sie den Pfad und die Datei, in die die generierte API-Authentifizierungskonfiguration eingefügt werden muss.
- Beachten Sie den Fingerprint des API-Schlüssels für den soeben erstellten API-Schlüssel.
- Beachten Sie die Konfiguration der API-Authentifizierung.
- Klicken Sie auf Kopieren.
- Klicken Sie auf Schließen.
-
Fügen Sie die API-Authentifizierungskonfiguration in eine temporäre Textdatei ein.
[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
-
Aktualisieren Sie die letzte Zeile der API-Authentifizierungskonfiguration, und fügen Sie den korrekten Pfad der in Aufgabe 2.3 erstellten Private-Key-Datei hinzu.
[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
-
Erstellen Sie eine Konfigurationsdatei für die OCI-API-Authentifizierung.
iwhooge@iwhooge-mac ~ % nano ~/.oci/config iwhooge@iwhooge-mac ~ %
-
Kopieren Sie die API-Authentifizierungskonfiguration in die Datei. Verwenden Sie
CTRL + X
, um diese Datei zu beenden. -
Geben Sie J (Ja) ein, um die Datei zu speichern.
-
Bestätigen Sie die Datei, die Sie zum Speichern der API-Authentifizierungskonfiguration verwenden möchten.
-
Wenn die Datei erfolgreich gespeichert wurde, kehren Sie zur Eingabeaufforderung des Terminals zurück.
Aufgabe 2.6: Erforderliche Informationen für Ihre OCI-Umgebung erfassen
Wir müssen einige Informationen für unsere Terraform-Dateien zur OCI-Authentifizierung mit der API erfassen. Die meisten Informationen werden bereits in der API-Authentifizierungskonfigurationsdatei bereitgestellt, die in Aufgabe 2.5 erstellt wurde.
-
Speichern Sie die folgenden Informationen zur späteren Verwendung.
Mandanten-OCID ocid1.tenancy.oc1..aaaaaaaabh2XXXvq Benutzer-OCID ocid1.user.oc1..aaaaaaaavgrXXX23aq Fingerabdruck 30:XXX:ba:ee Bereich eu-frankfurt-1 Private Key-Pfad ~/.oci/4-4-2023-rsa-key.pem Compartment-OCID ocid1.compartment.oc1..aaaaaaaabgXXXnuq -
Das einzige erforderliche Element, das nicht in der Konfigurationsdatei für die API-Authentifizierung enthalten ist, ist die Compartment-OCID.
-
Um die Compartment-OCID abzurufen, navigieren Sie zu Identität, Compartments, Compartment-Details.
-
Sie können die Compartment-OCID anzeigen.
-
Klicken Sie auf Kopieren, um die Compartment-OCID zu kopieren. Speichern Sie diese zur späteren Verwendung.
-
Dies ist das Compartment, in dem Sie Ihre Kubernetes-Cluster bereitstellen.
Aufgabe 3: Terraform-Skripte und -Dateien erstellen
Wir haben die Vorbereitung auf unserem lokalen Rechner abgeschlossen, einschließlich dem Einrichten von Terraform-, RSA- und SSH-Schlüsseln, dem Konfigurieren der OCI-Umgebung (API) und dem Sammeln aller wichtigen Informationen, die zur Authentifizierung von Terraform mit OCI erforderlich sind. Erstellen Sie jetzt das Terraform-Skript.
Zuerst müssen wir prüfen, ob wir die Regionen abonniert haben, in denen wir unsere Kubernetes-Cluster bereitstellen. Wenn das Deployment in einer nicht abonnierten Region erfolgt, wird ein Authentifizierungsfehler angezeigt, und das Deployment verläuft nicht erfolgreich.
Für dieses Tutorial verwenden wir die folgenden drei Regionen für die Bereitstellung: Amsterdam, San Jose und Dubai.
-
Klicken Sie auf das Regionsauswahlmenü.
- Blättern Sie nach unten.
- Klicken Sie auf Regionen verwalten.
- Blättern Sie nach unten.
- Klicken Sie auf Pfeil, um die nächsten 10 Elemente anzuzeigen.
- Wir haben Amsterdam abonniert.
- Klicken Sie auf Pfeil, um die nächsten 10 Elemente anzuzeigen.
- Wir haben Dubai abonniert.
- Beachten Sie, dass wir San Jose abonniert haben.
- Klicken Sie auf Pfeil, um die nächsten 10 Elemente anzuzeigen.
-
Beachten Sie, dass es einige Regionen gibt, die wir nicht abonniert haben. Beispiel: Wenn wir einen unserer Kubernetes-Cluster in Bogota bereitstellen möchten, müssen wir zuerst die Region Bogota abonnieren.
-
Die folgende Abbildung zeigt, was wir mit Terraform erreichen möchten.
- Wir verwenden den Remotecomputer mit Terraform.
- Dieser Remotecomputer authentifiziert sich bei OCI.
- Nach der Authentifizierung verwenden wir Terraform, um die folgenden drei Kubernetes-Cluster mit OKE bereitzustellen.
- c1: Amsterdam
- c2: San Jose
- c3: Dubai
Wir haben die Aliasnamen c1, c2 und c3 verwendet, um die Benennung von Komponenten in OCI zu vereinfachen, sodass die Cluster basierend auf dem Namen und nicht auf einem eindeutig generierten Namen leichter zu erkennen sind.
-
Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Sie sich im Home-Verzeichnis befinden.
iwhooge@iwhooge-mac ~ % pwd /Users/iwhooge
-
Führen Sie den folgenden Befehl aus, um ein neues Verzeichnis namens
terraform-multi-oke
und das Verzeichnisscripts
im Verzeichnisterraform-multi-oke
zu erstellen.iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke/scripts
-
Führen Sie den folgenden Befehl aus, um zu prüfen, ob das Verzeichnis
terraform-multi-oke
erstellt wurde.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
-
Führen Sie den folgenden Befehl aus, um den Pfad zum neuen Verzeichnis
terraform-multi-oke
zu ändern, und stellen Sie sicher, dass das Verzeichnis leer ist.iwhooge@iwhooge-mac ~ % cd terraform-multi-oke iwhooge@iwhooge-mac terraform-multi-oke % ls -l total 0 iwhooge@iwhooge-mac terraform-multi-oke %
-
Erstellen Sie Dateien in den Verzeichnissen
terraform-multi-oke
undterraform-multi-oke/scripts
. Dateien und Ordnerstrukturen sollten wie folgt aussehen.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
Hinweis: Sie können die Dateien auch aus dem Repository GitHub herunterladen: oci-oke-terraform.
-
Aktualisieren Sie die Datei
terraform.tfvars
mit den in Aufgabe 2.6 erfassten Parametern.# ===================================================================== # 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 # =====================================================================
-
Wenn Sie weniger oder mehr Kubernetes-Cluster bereitstellen oder die Regionen ändern möchten, können Sie dies auch tun, indem Sie die Regionen in den Dateien
terraform.tfvars
,contexts.tf
undproviders.tf
ändern. Suchen Sie c1, c2 und c3, und nehmen Sie Änderungen vor.-
terraform.tfvars
(Fügen Sie hier Cluster hinzu, oder entfernen Sie sie. Stellen Sie sicher, dass Sie beim Hinzufügen von Clustern eindeutige CIDR-Blöcke verwenden.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
(Fügen Sie Cluster im Parameterdepends_on
hinzu, oder entfernen Sie sie).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
(Fügen Sie Cluster als Provider hinzu, oder entfernen Sie sie. Stellen Sie sicher, dass Sie die Regions- und Aliasparameter ändern).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"] }
Hinweis: Sie können die Dateien auch aus dem Repository GitHub herunterladen: oci-oke-terraform.
-
Aufgabe 4: Terraform- und OKE-Cluster zusammen mit den erforderlichen Ressourcen (VCN, Subnetze, DRGs, RPCs usw.) ausführen
Wir haben die Terraform-Skripte mit dem richtigen Parameter eingerichtet. Führen Sie jetzt die Skripte aus, und erstellen Sie unsere Umgebung aus drei Kubernetes-Clustern in drei verschiedenen Regionen.
-
Führen Sie den folgenden Befehl aus, um das Verzeichnis in das Verzeichnis
terraform-multi-oke
zu wechseln.Last login: Fri Apr 5 09:01:47 on ttys001 iwhooge@iwhooge-mac ~ % cd terraform-multi-oke
-
Führen Sie den Befehl
terraform init
aus, um Terraform zu initialisieren und die erforderlichen Terraform-Module herunterzuladen, um die Terraform-Skripte bereitzustellen.Stellen Sie sicher, dass Terraform erfolgreich initialisiert wurde.
-
Führen Sie den Befehl
terraform plan
aus, um Terraform so zu planen, dass eine Vorabprüfung durchgeführt wird, ob Ihr Terraform-Code gültig ist, und prüfen Sie, was bereitgestellt wird (dies ist noch nicht das eigentliche Deployment). -
Beachten Sie, dass Terraform 229 neue Ressourcen in OCI hinzufügt. Diese Objekte beziehen sich alle auf die drei Kubernetes-Cluster, die wir bereitstellen möchten.
-
Führen Sie den Befehl
terraform apply
aus, um Terraform anzuwenden und drei Kubernetes-Cluster bereitzustellen. -
Geben Sie Ja ein, um das Deployment zu genehmigen. Es dauert etwa 30 Minuten, bis das Terraform-Skript abgeschlossen ist.
- Beachten Sie, dass die Anwendung abgeschlossen ist und 229 neue Ressourcen hinzugefügt werden.
- Kopieren Sie die SSH-Befehlsausgabe, um auf die Bastion- und Operatorhosts für Kubernetes-Clustermanagementaufgaben zuzugreifen.
-
Die folgende Abbildung zeigt das aktuelle Deployment mit Terraform.
-
Führen Sie den SSH-Befehl aus, um sich beim Kubernetes-Operatorhost anzumelden.
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.
-
Geben Sie yes ein, um mit dem Bastionhost fortzufahren.
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.
-
Geben Sie yes ein, um für den Operatorhost erneut fortzufahren.
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
-
Beachten Sie, dass Sie jetzt beim Operator angemeldet sind.
-
-
Führen Sie den folgenden Befehl aus, um die bereitgestellten und ausgeführten Kubernetes-Cluster vom Operatorhost aus zu prüfen.
[opc@o-tmcntm ~]$ kubectx c1 c2 c3 [opc@o-tmcntm ~]$
Die folgende Abbildung zeigt, von wo aus Sie die SSH-Verbindung zum Bastionhost und vom Bastionhost zum Operatorhost einrichten.
Jetzt haben wir drei Kubernetes-Cluster in den verschiedenen Regionen bereitgestellt. Sehen Sie sich die bereitgestellten Ressourcen auf hoher Ebene in der OCI-Konsole an.
-
OCI-Konsolenverifizierung (Amsterdam).
- Wählen Sie Amsterdam als Region aus.
- Navigieren Sie zu Networking und VCN.
- Prüfen Sie, ob das VCN c1 hier erstellt wurde.
- Navigieren Sie zu Entwicklerservices und Kubernetes-Cluster (OKE).
- Prüfen Sie, ob das Kubernetes-Cluster c1 hier erstellt wurde.
- Navigieren Sie zu Compute und Instanzen.
- Prüfen Sie, ob der Bastionhost und die beiden Worker-Knoten, die zum Kubernetes-Cluster c1 gehören, hier erstellt werden.
- Navigieren Sie zu Networking, Kundenkonnektivität und Dynamisches Routinggateway.
- Prüfen Sie, ob das DRG hier erstellt wurde.
- Navigieren Sie zu Identität und Policys.
- Prüfen Sie, ob hier drei Identitäts-Policys erstellt werden.
-
OCI-Konsolenverifizierung (San Jose).
- Wählen Sie San Jose als Region aus.
- Navigieren Sie zu Networking und VCN.
- Prüfen Sie, ob das VCN c2 hier erstellt wurde.
- Navigieren Sie zu Entwicklerservices und Kubernetes-Cluster (OKE).
- Prüfen Sie, ob das Kubernetes-Cluster c2 hier erstellt wurde.
- Navigieren Sie zu Compute und Instanzen.
- Prüfen Sie, ob die beiden Worker-Knoten, die zum Kubernetes-Cluster c2 gehören, hier erstellt wurden.
- Navigieren Sie zu Networking, Kundenkonnektivität und Dynamisches Routinggateway.
- Prüfen Sie, ob das DRG hier erstellt wurde.
- Navigieren Sie zu Identität und Policys.
- Prüfen Sie, ob hier drei Identitäts-Policys erstellt werden.
-
OCI-Konsolenüberprüfung (Dubai)
- Wählen Sie Dubai als Region aus.
- Navigieren Sie zu Networking und VCN.
- Prüfen Sie, ob das VCN c3 hier erstellt wurde.
- Navigieren Sie zu Entwicklerservices und Kubernetes-Cluster (OKE).
- Prüfen Sie, ob das Kubernetes-Cluster c3 hier erstellt wurde.
- Navigieren Sie zu Compute und Instanzen.
- Prüfen Sie, ob die beiden Worker-Knoten, die zum Kubernetes-Cluster c3 gehören, hier erstellt wurden.
- Navigieren Sie zu Networking, Kundenkonnektivität und Dynamisches Routinggateway.
- Prüfen Sie, ob das DRG hier erstellt wurde.
- Navigieren Sie zu Identität und Policys.
- Prüfen Sie, ob hier drei Identitäts-Policys erstellt werden.
Aufgabe 5: RPC-Verbindungen herstellen
Stellen Sie die Verbindungen zwischen den verschiedenen RPC-Anschlüssen her. Lassen Sie uns zunächst diese in den verschiedenen Regionen überprüfen.
-
Remote-Peering-Verbindung - Anhänge in Amsterdam.
Stellen Sie sicher, dass Sie mit der Region Amsterdam verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c1.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Beachten Sie, dass zwei Remote-Peering-Verbindungen konfiguriert sind.
- Beachten Sie, dass beide Remote-Peering-Verbindungsanhänge neu sind und keine Peering-Verbindungen aufweisen.
-
Remote-Peering-Verbindung - Anhänge in San Jose.
Stellen Sie sicher, dass Sie mit der Region San Jose verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c2.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Beachten Sie, dass zwei Remote-Peering-Verbindungen konfiguriert sind.
- Beachten Sie, dass beide Remote-Peering-Verbindungsanhänge neu sind und keine Peering-Verbindungen aufweisen.
-
Remote-Peering-Verbindung - Anhänge in Dubai.
Stellen Sie sicher, dass Sie mit der Region Dubai verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c3.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Beachten Sie, dass zwei Remote-Peering-Verbindungen konfiguriert sind.
- Beachten Sie, dass beide Remote-Peering-Verbindungsanhänge neu sind und keine Peering-Verbindungen aufweisen.
Alle RPC-OCIDs erfassen
-
Um die RPC-Peering-Verbindungen zwischen allen Regionen zu konfigurieren, müssen Sie die OCID dieser RPC-Peering-Verbindungsanhänge erfassen.
- Stellen Sie sicher, dass Sie mit der Region Amsterdam verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c1.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Klicken Sie auf die Remote-Peering-Verbindung (
rpc-to-c2
).
-
Klicken Sie auf Anzeigen.
-
Klicken Sie auf Kopieren.
Wiederholen Sie den Prozess für alle Remote-Peering-Verbindungen in allen Regionen auf allen DRGs, und speichern Sie sie.
Jetzt haben wir die folgenden OCIDs für Remote-Peering-Verbindungen erfasst:
-
c1-DRG-RPC
Lokaler RPC Lokale RPC-OCID Remote-RPC C1: rpc-zu-c2 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaxxxxxxuxfq C2: rpc-zu-c1 C1: rpc-zu-c3 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaaaxxxxxXs4ya C3: rpc-zu-c1 -
c2-DRG-RPC
Lokaler RPC Lokale RPC-OCID Remote-RPC C2: rpc-zu-c1 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaxxxxXXXvmya C1: rpc-zu-c2 C2: rpc-zu-c3 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaaxxxxXXen2a C3: rpc-zu-c2 -
c3-DRG-RPC
Lokaler RPC Lokale RPC-OCID Remote-RPC C3: rpc-zu-c1 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaapxxxXXXcosq C1: rpc-zu-c3 C3: rpc-zu-c2 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaaxxxpXXXs5tq C2: rpc-zu-c3
RPC-Peerings erstellen
Konfigurieren Sie das Peering auf C1 für C2 und C3. Dadurch wird das Peering für C1 auf der Seite C2 und C3 automatisch konfiguriert. Wenn Sie das Peering für C2 auf C3 konfigurieren, wird das Peering für C2 auf der Seite C3 automatisch konfiguriert.
Konfigurieren Sie die C1 Peerings (Amsterdam).
-
Die folgende Abbildung zeigt, welche RPCs wir konfigurieren.
- Stellen Sie sicher, dass Sie mit der Region Amsterdam verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c1.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Klicken Sie auf den ersten Remote-Peering-Verbindungsanhang (
rpc-to-c2
). Hier konfigurieren Sie die Verbindung nach San Jose.
-
Klicken Sie auf Verbindung herstellen.
- Wählen Sie die Region San Jose aus.
- Geben Sie die RPC-OCID der Seite "San Jose" ein, die für c1 (Amsterdam) erstellt wird.
- Klicken Sie auf Verbindung herstellen.
- Der Peering-Status wechselt zu Ausstehend. Der Vorgang dauert eine Minute.
- Klicken Sie auf den zweiten Anhang der Remote-Peering-Verbindung (
rpc-to-c3
). Hier konfigurieren Sie die Verbindung nach Dubai.
-
Klicken Sie auf Verbindung herstellen.
- Wählen Sie die Region Dubai aus.
- Geben Sie die RPC-OCID der Dubai-Seite ein, die für c1 (Amsterdam) erstellt wird.
- Klicken Sie auf Verbindung herstellen.
Konfigurieren Sie das C2-Peering (San Jose).
-
Die folgende Abbildung zeigt, welche RPCs wir konfigurieren.
- Der Peering-Status wechselt zu Ausstehend. Der Vorgang dauert eine Minute.
- Klicken Sie auf das Regionsmenü und wechseln Sie von Amsterdam nach San Jose.
- Wählen Sie die Region San Jose.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c2.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Beachten Sie, dass die Verbindung zwischen Amsterdam und San Jose jetzt gepunktet ist. Dies geschieht von der Amsterdamer Seite aus.
- Beachten Sie, dass der Peering-Status von San Jose (c2) nach Dubai (c3) immer noch neu ist.
- Klicken Sie auf den zweiten Anhang der Remote-Peering-Verbindung (
rpc-to-c3
). Hier konfigurieren Sie die Verbindung nach Dubai.
-
Klicken Sie auf Verbindung herstellen.
- Wählen Sie die Region Dubai aus.
- Geben Sie die RPC-OCID der Dubai-Seite ein, die für c2 (San Jose) erstellt wird.
- Klicken Sie auf Verbindung herstellen.
-
Der Peering-Status wechselt zu Ausstehend. Der Vorgang dauert eine Minute.
Das folgende Bild zeigt das vollständige Mesh-RPC-Peering, das wir durchgeführt haben.
-
Prüfen Sie das Peering der Verbindungen.
- Stellen Sie sicher, dass Sie mit der Region San Jose verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c1.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Beachten Sie, dass beide Remote-Peering-Verbindungsanhänge den Peering-Status haben.
- Stellen Sie sicher, dass Sie mit der Region San Jose verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c2.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Beachten Sie, dass beide Remote-Peering-Verbindungsanhänge den Peering-Status haben.
- Stellen Sie sicher, dass Sie mit der Region Dubai verbunden sind.
- Navigieren Sie zu Networking, Kundenkonnektivität, Dynamische Routinggateways und c3.
- Klicken Sie auf Anhänge mit Remote-Peering-Verbindung.
- Beachten Sie, dass beide Remote-Peering-Verbindungsanhänge den Peering-Status haben.
Aufgabe 6: Mit der Netzwerkvisualisierung die RPC-Verbindungen prüfen
Führen Sie eine zusätzliche Prüfung durch, um sicherzustellen, dass die RPC korrekt mit Network Visualizer konfiguriert wurde.
- Klicken Sie in der oberen linken Ecke auf das Hamburger-Menü.
- Klicken Sie auf Networking.
- Klicken Sie auf Netzwerkansicht.
- Stellen Sie sicher, dass Sie mit der Region Amsterdam verbunden sind.
- Die Region Amsterdam ist c1.
- Beachten Sie die Verbindungen von Amsterdam nach San Jose und Dubai.
- Stellen Sie sicher, dass Sie mit der Region San Jose verbunden sind.
- Beachten Sie, dass die Region San Jose c2 ist.
- Beachten Sie die Verbindungen von San Jose nach Amsterdam und Dubai.
- Stellen Sie sicher, dass Sie mit der Region Dubai verbunden sind.
- Beachten Sie, dass die Region Dubai c3 ist.
- Beachten Sie die Verbindungen von Dubai nach Amsterdam und San Jose.
Aufgabe 7: Funktion der Konnektivität mit der Bastion und dem Operator prüfen
Wir haben die Kubernetes-Cluster (in allen drei verschiedenen Regionen) erstellt und die Regionen mit RPC verbunden. Mit dem Operatorhost können wir jetzt prüfen, ob der Operator die Kubernetes-Cluster verwalten kann.
-
Führen Sie den folgenden Befehl aus (der nach Abschluss des Befehls
terraform plan
angegeben wurde).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 ~]$
-
Führen Sie den folgenden Befehl aus, der mit einer for-Schleife durch jedes Kubernetes-Cluster (c1, c2 und c3) iteriert und den Status der Worker-Knoten abruft.
[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 ~]$
Führen Sie den folgenden Befehl im Terminal aus, nachdem Sie eine Verbindung zum Operatorhost hergestellt haben.
for c in c1 c2 c3; do kubectx $c kubectl get nodes done
-
Beachten Sie die Ausgabe aller Knoten für alle Kubernetes-Cluster, die mit dem Terraform-Skript bereitgestellt wurden.
Führen Sie den Befehl kubectl get all -n kube-system
mit der Schleife for aus.
[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 ~]$
Aufgabe 8: OKE-Cluster mit Terraform löschen
Wir haben Terraform für unser Deployment verwendet, sodass wir das vollständige Deployment auch mit Terraform löschen können.
-
Führen Sie den Befehl
terraform destroy
aus, um alle Ressourcen zu löschen, die sich auf die drei Kubernetes-Cluster beziehen. -
Geben Sie Ja ein, um den Löschprozess zu genehmigen. Es wird ein paar Minuten dauern, bis Sie fertig sind.
-
Beachten Sie, dass die Zerstörung abgeschlossen ist und alle 229 Ressourcen zerstört werden.
Danksagungen
-
Autor - Iwan Hoogendoorn (OCI Network Specialist)
-
Mitwirkender - Ali Mukadam
Weitere Lernressourcen
Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Use Terraform to Deploy Multiple Kubernetes Clusters across different OCI Regions using OKE and Create a Full Mesh Network using RPC
F96814-01
April 2024