ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
Terraformを使用したOKEを使用した異なるOCIリージョンへの複数のKubernetesクラスタのデプロイおよびRPCを使用したフル・メッシュ・ネットワークの作成
イントロダクション
このチュートリアルでは、Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE)を使用して複数のKubernetesクラスタを作成する方法を説明し、これらのクラスタを3つの異なる国(リージョン)にデプロイします。デプロイメントを高速化し、構成ミスを最小限に抑えてKubernetesクラスタを一貫してデプロイするには、Terraformおよび一部のカスタムbashスクリプトを使用します。
また、クイック作成方法とカスタム作成方法を使用して、単一のクラスタを手動でデプロイしました。
このチュートリアルは、このドキュメントに基づく更新です: Oracle Cloudへの複数のKubernetesクラスタのデプロイ。
目的
- Oracle Cloud Infrastructure (OCI)環境でのTerraformアクションに必要なツールを使用して、ローカル・コンピュータを準備します。また、OCI環境を構成して、Terraform実行のローカル・コンピュータからのリクエストを認証し、Terraformおよびシェル・スクリプトを作成して、異なるリージョンにまたがるOKEに3つのKubernetesクラスタをデプロイします。Dynamic Routing Gateways (DRG)でリモート・ピアリング接続(RPC)を構成することで、クラスタ間通信を保証します。
タスク1: トポロジの決定(星とメッシュ)
これらのKubernetesクラスタを構築して、すべてのリージョンにデプロイされるコンテナベースのアプリケーションをデプロイしています。これらのKubernetesクラスタ間の通信を可能にするには、何らかの形のネットワーク通信が必要です。今のところ、これはこのチュートリアルの範囲外ですが、事前にいくつかのアーキテクチャ上の決定を行う必要があります。これらの決定の1つは、すべてのリージョン間の直接通信を許可するか、1つのリージョンをすべての通信のハブとして使用するか、他のリージョンをスポークとして使用するかを決定することです。
スター・トポロジ:スター・トポロジでは、1つのハブ・リージョンを使用してリージョン間の通信が可能です。そのため、サンノゼのKubernetesクラスタがドバイのKubernetesクラスタと通信する場合は、Amsterdamをトランジット・ハブとして使用します。
メッシュ・トポロジ:メッシュ・トポロジでは、すべてのリージョン(Kubernetesクラスタ)との直接通信が可能です。そのため、サンノゼのKubernetesクラスタがドバイのKubernetesクラスタと通信する場合は、直接通信できます。
このチュートリアルでは、メッシュ トポロジを構築します。この接続は、DRGとRPCを使用して行われます。
タスク2: 認証のための環境の準備およびTerraformスクリプトの実行
Terraformを使用する前に、環境を準備する必要があります。Terraformを使用するには、端末を開きます。このチュートリアルでは、OS X端末アプリケーションを使用しています。
-
次のコマンドを実行して、Terraformがインストールされていること、パスに追加されていること、およびバージョンを確認します。
Last login: Thu Apr 4 08:50:38 on ttys000 iwhooge@iwhooge-mac ~ % terraform -v zsh: command not found: terraform iwhooge@iwhooge-mac ~ %
-
コマンドが見つからないことがわかります。つまり、Terraformがインストールされていないか、パス変数に追加されていないことを意味します。
ご覧のとおり、Terraformはインストールされていないため、インストールする必要があります。Terraformのインストールだけでなく、Terraformアプリケーションのデプロイと、3つの異なるリージョンに3つのKubernetesクラスタをデプロイするための完全なエンドツーエンド・スクリプト・ソリューションのための環境を準備するために必要な複数のステップがあります。
次の図は、従う必要のあるタスクに関するガイダンスを示しています。
タスク2.1: Homebrewのインストール
Terraformは、様々な方法を使用してインストールできます。このチュートリアルでは、Homebrewを使用してTerraformをインストールします。
Homebrewは、アプリケーションのインストールに使用できるMacOS (およびLinux)のパッケージ・マネージャで、必要な依存関係はapt
またはyum
です。
-
Homebrewをインストールします。
-
次のコマンドを実行して、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 ~ %
-
「RETURN/ENTER」をクリックしてインストールを続行します。
- インストールは正常に完了しています。
- 追加のコマンドをコピーして、Homebrewをパス変数に追加します。
-
-
パス変数にHomebrewを追加するには、次のコマンドを実行します。
iwhooge@iwhooge-mac ~ % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/iwhooge/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
タスク2.2: Homebrewを使用したTerraformのインストール
このタスクでは、Homebrewを使用してTerraformパッケージをインストールします。
-
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 ~ %
-
次のコマンドを実行して、Terraformがインストールされているかどうかと、そのバージョンを確認します。
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は、Terraformバージョン
1.5.7
とともにインストールされることに注意してください。 -
これは古いバージョンであることに注意してください。Terraformバージョンをアップグレードするには、Terraformのインストールを参照してください。
-
Terraformをアップグレードするには、HomebrewにHashicorpリポジトリを追加する必要があります。次のコマンドを実行します
iwhooge@iwhooge-mac ~ % brew tap hashicorp/tap
-
次のコマンドを実行して、HashicorpリポジトリからTerraformをインストールします。
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は、
1.5.7
から1.7.5
バージョンにアップグレードされていることに注意してください。
-
次のコマンドを実行して、Terraformバージョンが最新のバージョンであることを確認します。
iwhooge@iwhooge-mac ~ % terraform -v Terraform v1.7.5 on darwin_arm64 iwhooge@iwhooge-mac ~ %
-
新しいバージョンは
1.7.5
です。
-
タスク2.3: OCI認証用のローカルRSAキーの作成
APIキーを使用したOCIでの認証を許可するには、この目的でのみ新しい秘密キーおよび公開キーを生成する必要があります。
-
次のコマンドを実行して、ディレクトリをホーム・ディレクトリに変更します。
iwhooge@iwhooge-mac ~ % cd ~/
-
次のコマンドを実行して、ホーム・ディレクトリにいることを確認します。
iwhooge@iwhooge-mac ~ % pwd
-
ホーム・ディレクトリが正しいことを確認してください。
/Users/iwhooge
-
次のコマンドを実行して、OCIで認証する情報を含む新しいディレクトリを作成します。
iwhooge@iwhooge-mac ~ % mkdir .oci
-
次のコマンドを実行して、プライベートRSAキーを生成します。
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)
-
次のコマンドを実行して、秘密キー・ファイルを読取り可能にします。
iwhooge@iwhooge-mac ~ % chmod 600 ~/.oci/4-4-2023-rsa-key.pem
-
次のコマンドを実行して、非公開鍵から公開RSA鍵を生成します。
iwhooge@iwhooge-mac ~ % openssl rsa -pubout -in ~/.oci/4-4-2023-rsa-key.pem -out ~/.oci/4-4-2023-rsa-key-public.pem
-
鍵の書き込みが完了したことを確認します。
writing RSA key
-
次のコマンドを実行して、プライベートRSAキーの内容を確認します。
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key.pem
-
非公開RSAキーの内容を確認します。
-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA52+LJ+gp3MAJGtXTeQ/dmqq6Xh1zufK0yurLt/0w/DuxqEsL RT7x+Znz6EOVLx34Ul27QnHk7bhXaDCuwInnaOTOiS97AnLuFM08tvFksglnJssA JsszfTzUMNf0w4wtuLsJ5oRaPbVUa01TIm6HdwKAloIKYSn6z8gcvfLLItkyvPRo XXX w3yip+Yxr1YN3LjpDbZk4WTagKWoVQzp5nrfZlyU7ToZcMpUn/fIUsI= -----END RSA PRIVATE KEY-----
-
次のコマンドを実行して、公開RSAキーの内容を確認します。
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key-public.pem
-
公開RSA鍵の内容を確認します。
----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA52+LJ+gp3MAJGtXTeQ/d XXX mtHVtjLM1ftjYlaRSG5Xl/xdKMC8LH0bxpy3XXzLmDrYCP3LrhrIG8Xmuzsji6Hw TQIDAQAB -----END PUBLIC KEY----- iwhooge@iwhooge-mac ~ %
タスク2.4: 要塞ホスト認証用のローカルSSHキーの生成
要塞ホストで認証するには、ローカルSSHキーも作成する必要があります。これは、OCIコンソール(API)での認証に使用する別のキーです。
-
次のコマンドを実行して、ディレクトリをSSHディレクトリに変更します。
iwhooge@iwhooge-mac ~ % cd ~/.ssh/
-
次のコマンドを実行して、使用可能な公開SSHキーと秘密SSHキーがあることを確認します。
iwhooge@iwhooge-mac .ssh % ls -l -a
-
SSHキー・ペアはありません。このチュートリアルでは、新しい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
-
次のコマンドを実行して、新しい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):
-
パスフレーズを空のままにして、「ENTER」をクリックします。
Enter passphrase (empty for no passphrase):
-
パスフレーズを空のままにして、「ENTER」をクリックします。
Enter same passphrase again:
-
新しいSSHキー・ペアは、指定された場所に保存されます。
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 %
タスク2.5: OCIコンソールでのAPIキーの作成およびOCIアカウントへの公開キーの追加
-
タスク2.3で作成したRSAキーがあり、その公開RSAキーを使用してOCIコンソールでOCI認証用のAPIキーを作成できます。
- profileをクリックします。
- 「プロファイル」を選択します。
-
下へスクロール
- 「APIキー」を選択します。
- 「APIキーの追加」をクリックします。
- 「Paste in the public key」を選択します。
- タスク2.3で作成した公開キーを貼り付けます。
- 「追加」をクリックします。
- 生成されたAPI認証構成を貼り付ける必要があるパスとファイルを確認します。
- 作成したAPIキーのAPIキー・フィンガープリントを書き留めます。
- API認証構成に注意してください。
- 「コピー」をクリックします。
- 「閉じる」をクリックします。
-
API認証構成を一時テキスト・ファイルに貼り付けます。
[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
-
API認証構成の最終行を更新し、タスク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
-
OCI API認証構成ファイルを作成します。
iwhooge@iwhooge-mac ~ % nano ~/.oci/config iwhooge@iwhooge-mac ~ %
-
ファイルにAPI認証構成をコピーします。このファイルを終了するには、
CTRL + X
を使用します。 -
「Y (Yes)」と入力してファイルを保存します。
-
API認証構成の保存に使用するファイルを確認します。
-
ファイルが正常に保存されると、端末プロンプトに戻ります。
タスク2.6: OCI環境に必要な情報の収集
APIを使用して、OCI認証用のTerraformファイルの情報を収集する必要があります。ほとんどの情報は、タスク2.5で作成されたAPI認証構成ファイルですでに提供されています。
-
後で使用するために次の情報を保存します。
テナンシOCID ocid1.tenancy.oc1..aaaaaaaabh2XXXvq ユーザーOCID ocid1.user.oc1..aaaaaaaavgrXXX23aq 指紋 30:XXX:ba:ee 領域 eu-frankfurt-1 プライベート・キー・パス ~/.oci/4-4-2023-rsa-key.pem コンパートメントのOCID ocid1.compartment.oc1..aaaaaaaabgXXXnuq -
API認証構成ファイルに含まれていないものは、コンパートメントOCIDのみです。
-
コンパートメントOCIDを取得するには、「アイデンティティ」、「コンパートメント」、「コンパートメントの詳細」に移動します。
-
コンパートメントOCIDが表示されます。
-
「コピー」をクリックしてコンパートメントOCIDをコピーします。これは、後で使用するために保存します。
-
これは、Kubernetesクラスタをデプロイするコンパートメントです。
タスク3: Terraformスクリプトおよびファイルの作成
Terraform、RSAおよびSSHキーの設定、OCI環境(API)の構成、OCIでTerraformを認証するために必要なすべての重要な情報の収集など、ローカル・マシンでの準備が完了しました。次に、Terraformスクリプトを作成します。
まず、Kubernetesクラスタをデプロイしているリージョンにサブスクライブしていることを確認する必要があります。サブスクライブされていないリージョンにデプロイする場合、認証エラーが発生し、デプロイメントは失敗します。
このチュートリアルでは、アムステルダム、サンノゼおよびドバイの3つのリージョンをデプロイに使用します。
-
「リージョンの選択メニュー」をクリックします。
- 下へスクロール
- 「リージョンの管理」をクリックします。
- 下へスクロール
- 矢印をクリックして、次の10個の項目を表示します。
- アムステルダムを購読しています。
- 矢印をクリックして、次の10個の項目を表示します。
- ドバイに申し込み済みです。
- San Joseに登録されていることに注意してください。
- 矢印をクリックして、次の10個の項目を表示します。
-
サブスクライブしていないリージョンがいくつかあります。たとえば、いずれかのKubernetesクラスタをボゴタにデプロイする場合は、まずボゴタ・リージョンにサブスクライブする必要があります。
-
次の図は、Terraformで実現しようとしている内容を示しています。
- Terraformでリモート・コンピュータを使用しています。
- This remote computer will authenticate with OCI.
- After authentication, we will use Terraform to deploy the following three Kubernetes clusters using OKE.
- c1: アムステルダム
- c2: サンホセ
- c3: ドバイ
We have used the aliases c1, c2, and c3 to make it easier to name components in OCI, so that it is easier to recognize the clusters based on the name instead of a uniquely generated name.
-
次のコマンドを実行して、ホーム・ディレクトリにいることを確認します
iwhooge@iwhooge-mac ~ % pwd /Users/iwhooge
-
次のコマンドを実行して、
terraform-multi-oke
ディレクトリ内にterraform-multi-oke
およびscripts
ディレクトリという名前の新しいディレクトリを作成します。iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke/scripts
-
次のコマンドを実行して、
terraform-multi-oke
ディレクトリが作成されていることを確認します。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
-
次のコマンドを実行して、新しい
terraform-multi-oke
ディレクトリへのパスを変更し、ディレクトリが空であることを確認します。iwhooge@iwhooge-mac ~ % cd terraform-multi-oke iwhooge@iwhooge-mac terraform-multi-oke % ls -l total 0 iwhooge@iwhooge-mac terraform-multi-oke %
-
terraform-multi-oke
およびterraform-multi-oke/scripts
ディレクトリ内にファイルを作成します。ファイルとフォルダ構造は次のようになります。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
ノート: GitHubリポジトリ(oci-oke-terraform)からファイルをダウンロードすることもできます。
-
terraform.tfvars
ファイルをタスク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 # =====================================================================
-
デプロイするKubernetesクラスタの数を減らすか、リージョンを変更する場合は、
terraform.tfvars
、contexts.tf
およびproviders.tf
ファイルのリージョンを変更することもできます。c1、c2およびc3を検索し、変更します。-
terraform.tfvars
(ここでクラスタを追加または削除します。クラスタを追加するときは、一意のCIDRブロックを使用してください)。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
(depends_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
(プロバイダとしてクラスタを追加または削除します。リージョンおよび別名パラメータを変更してください)。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"] }
ノート: GitHubリポジトリ(oci-oke-terraform)からファイルをダウンロードすることもできます。
-
タスク4: TerraformおよびOKEクラスタと必要なリソース(VCN、サブネット、DRG、RPCなど)の実行
正しいパラメータを持つTerraformスクリプトが用意されています。次に、スクリプトを実行し、3つの異なるリージョンに3つのKubernetesクラスタで構成される環境を構築します。
-
次のコマンドを実行して、ディレクトリを
terraform-multi-oke
ディレクトリに変更します。Last login: Fri Apr 5 09:01:47 on ttys001 iwhooge@iwhooge-mac ~ % cd terraform-multi-oke
-
terraform init
コマンドを実行してTerraformを初期化し、必要なTerraformモジュールをダウンロードしてTerraformスクリプトをデプロイします。Terraformが正常に初期化されていることを確認します。
-
terraform plan
コマンドを実行してTerraformを計画し、Terraformコードが有効かどうかの事前チェックを実行し、デプロイ対象を確認します(これは実際のデプロイメントではありません)。 -
TerraformではOCIに229の新しいリソースが追加され、これらのオブジェクトはすべて、デプロイする予定の3つのKubernetesクラスタに関連しています。
-
terraform apply
コマンドを実行して、Terraformを適用し、3つのKubernetesクラスタをデプロイします。 -
デプロイメントを承認するには、「yes」を入力します。Terraformスクリプトが終了するまでに約30分かかります。
- applyが完了し、229個の新しいリソースが追加されることに注意してください。
- SSHコマンド出力をコピーして、Kubernetesクラスタ管理タスクの要塞およびオペレータ・ホストにアクセスします。
-
次の画像は、Terraformでの現在のデプロイメントを示しています。
-
SSHコマンドを実行して、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.
-
要塞ホストに対して続行するには、yesと入力します。
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.
-
オペレータホストに対して再度続行するには、「yes」と入力します。
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
-
これで、オペレータにログインしました。
-
-
次のコマンドを実行して、オペレータ・ホストからデプロイおよび実行中のKubernetesクラスタを確認します。
[opc@o-tmcntm ~]$ kubectx c1 c2 c3 [opc@o-tmcntm ~]$
次の図は、要塞ホストへのSSH接続の設定場所と、要塞ホストからオペレータ・ホストへのSSH接続の設定場所を示しています。
これで、異なるリージョンに3つのKubernetesクラスタをデプロイしました。Take a look at the deployed resources from a high level in the OCI Console.
-
OCI Console Verification (Amsterdam).
- 「リージョン」として「アムステルダム」を選択します。
- 「ネットワーキング」および「VCN」に移動します。
- Review that the c1 VCN is created here.
- 「開発者サービス」および「Kubernetesクラスタ(OKE)」に移動します。
- c1 Kubernetesクラスタがここで作成されていることを確認します。
- ComputeおよびInstancesに移動します。
- 要塞ホストと、c1 Kubernetesクラスタに属する2つのワーカー・ノードがここで作成されていることを確認します。
- 「ネットワーキング」、「顧客接続」および「Dynamic Routing Gateway」に移動します。
- Review that the DRG is created here.
- 「アイデンティティ」および「ポリシー」に移動します。
- 3つのアイデンティティ・ポリシーがここで作成されていることを確認します。
-
OCI Console Verification (San Jose).
- 「リージョン」として「サンノゼ」を選択します。
- 「ネットワーキング」および「VCN」に移動します。
- Review that the c2 VCN is created here.
- 「開発者サービス」および「Kubernetesクラスタ(OKE)」に移動します。
- c2 Kubernetesクラスタがここで作成されていることを確認します。
- ComputeおよびInstancesに移動します。
- c2 Kubernetesクラスタに属する2つのワーカー・ノードがここで作成されていることを確認します。
- 「ネットワーキング」、「顧客接続」および「Dynamic Routing Gateway」に移動します。
- Review that the DRG is created here.
- 「アイデンティティ」および「ポリシー」に移動します。
- 3つのアイデンティティ・ポリシーがここで作成されていることを確認します。
-
OCIコンソールの検証(ドバイ)
- リージョンとして「Dubai」を選択します。
- 「ネットワーキング」および「VCN」に移動します。
- c3 VCNがここで作成されていることを確認します。
- 「開発者サービス」および「Kubernetesクラスタ(OKE)」に移動します。
- c3 Kubernetesクラスタがここで作成されていることを確認します。
- ComputeおよびInstancesに移動します。
- c3 Kubernetesクラスタに属する2つのワーカー・ノードがここで作成されていることを確認します。
- 「ネットワーキング」、「顧客接続」および「Dynamic Routing Gateway」に移動します。
- Review that the DRG is created here.
- 「アイデンティティ」および「ポリシー」に移動します。
- 3つのアイデンティティ・ポリシーがここで作成されていることを確認します。
タスク5: RPC接続の確立
さまざまなRPCアタッチメント間の接続を確立します。まずは各地域で見直しましょう。
-
アムステルダムのリモート・ピアリング接続アタッチメント。
アムステルダム・リージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c1.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- 2つのリモート・ピアリング接続アタッチメントが構成されていることに注意してください。
- リモート・ピアリング接続アタッチメントは両方とも新規であり、ピアリングされていないことに注意してください。
-
サンノゼのリモート・ピアリング接続アタッチメント。
「サンノゼ」リージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c2.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- 2つのリモート・ピアリング接続アタッチメントが構成されていることに注意してください。
- リモート・ピアリング接続アタッチメントは両方とも新規であり、ピアリングされていないことに注意してください。
-
Dubaiのリモート・ピアリング接続アタッチメント。
Dubaiリージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c3.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- 2つのリモート・ピアリング接続アタッチメントが構成されていることに注意してください。
- リモート・ピアリング接続アタッチメントは両方とも新規であり、ピアリングされていないことに注意してください。
Collect All the RPC OCIDs
-
To configure the RPC peering connections between all regions we need to collect the OCID of these RPC peering connection attachments.
- アムステルダム・リージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c1.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- リモート・ピアリング接続(
rpc-to-c2
)をクリックします。
-
「表示」をクリックします。
-
「コピー」をクリックします。
Repeat the process for all remote peering connections on all regions on all DRGs and save them.
Now, we have collected the following remote peering connection OCIDs:
-
c1 DRG RPC
Local RPC Local RPC OCID Remote RPC 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 DRG RPC
Local RPC Local RPC OCID Remote RPC 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 DRG RPC
Local RPC Local RPC OCID Remote RPC 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
Create the RPC Peerings
Configure the peering on C1 to C2 and C3. This will automatically configure the peering for C1 on the C2 and C3 side, and configuring the peering on C2 to C3 will automatically configure the peering for C2 on the C3 side.
Configure the C1 Peerings (Amsterdam).
-
次の図は、構成しているRPCを示しています。
- アムステルダム・リージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c1.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- 最初のリモート・ピアリング接続アタッチメント(
rpc-to-c2
)をクリックします。ここでは、サンノゼへの接続を構成します。
-
「接続の確立」をクリックします。
- 「サンノゼ」リージョンを選択します。
- c1 (アムステルダム)用に作成されたサンノゼ側のRPC OCIDを入力します。
- 「接続の確立」をクリックします。
- ピアリング・ステータスが「保留中」に変わり、完了まで1分かかります。
- 2番目のリモート・ピアリング接続アタッチメント(
rpc-to-c3
)をクリックします。ここでは、ドバイへの接続を構成します。
-
「接続の確立」をクリックします。
- 「Dubai」リージョンを選択します。
- c1 (アムステルダム)用に作成されたドバイ側のRPC OCIDを入力します。
- 「接続の確立」をクリックします。
C2ピアリング(San Jose)を構成します。
-
次の図は、構成しているRPCを示しています。
- ピアリング・ステータスが「保留中」に変わり、完了まで1分かかります。
- リージョン・メニューをクリックし、アムステルダムからサンノゼ・リージョンに切り替えます。
- 「サンノゼ」リージョンを選択します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c2.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- アムステルダムとサンノゼの間の接続がピアリングされていることに注意してください。これはアムステルダム側から行います。
- サンノゼ(c2)からドバイ(c3)へのピアリング・ステータスはまだ新しいことに注意してください。
- 2番目のリモート・ピアリング接続アタッチメント(
rpc-to-c3
)をクリックします。ここでは、ドバイへの接続を構成します。
-
「接続の確立」をクリックします。
- 「Dubai」リージョンを選択します。
- Enter RPC OCID of the Dubai side that is created for c2 (San Jose).
- 「接続の確立」をクリックします。
-
ピアリング・ステータスが「保留中」に変わり、完了まで1分かかります。
The following image illustrates the full mesh RPC peering which we have done.
-
接続ピアリングを確認します。
- 「サンノゼ」リージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c1.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- どちらのリモート・ピアリング接続アタッチメントもピアリング・ステータスであることに注意してください。
- 「サンノゼ」リージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c2.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- どちらのリモート・ピアリング接続アタッチメントもピアリング・ステータスであることに注意してください。
- Dubaiリージョンに接続していることを確認します。
- Navigate to Networking, Customer Connectivity, Dynamic Routing Gateways and c3.
- 「リモート・ピアリング接続アタッチメント」をクリックします。
- どちらのリモート・ピアリング接続アタッチメントもピアリング・ステータスであることに注意してください。
Task 6: Use the Network Visualizer to Verify the RPC Connections
Perform an additional check to ensure that the RPC has been configured correctly with Network Visualizer.
- 左上隅のハンバーガー・メニューをクリックします。
- 「ネットワーキング」をクリックします。
- 「ネットワーク・ビジュアライザ」をクリックします。
- アムステルダム・リージョンに接続していることを確認します。
- アムステルダム・リージョンはc1です。
- アムステルダムからサンノゼとドバイへの接続に注目してください。
- 「サンノゼ」リージョンに接続していることを確認します。
- サンノゼ・リージョンはc2です。
- サンノゼからアムステルダムとドバイへの接続に注目してください。
- Dubaiリージョンに接続していることを確認します。
- ドバイ・リージョンはc3です。
- ドバイからアムステルダムとサンノゼへの接続に注目してください。
タスク7: 要塞および演算子を使用した接続の作業の確認
Kubernetesクラスタ(3つの異なるリージョンすべて)を作成し、RPCを使用してリージョンを接続しました。オペレータ・ホストを使用して、オペレータがKubernetesクラスタを管理できることを確認できるようになりました。
-
次のコマンドを実行します(これは、
terraform plan
コマンドの完了後に提供されています)。Last login: Fri Apr 5 09:10:01 on ttys000 iwhooge@iwhooge-mac ~ % ssh -o ProxyCommand='ssh -W %h:%p -i ~/.ssh/id_rsa opc@143.47.183.243' -i ~/.ssh/id_rsa opc@10.1.0.12 Activate the web console with: systemctl enable --now cockpit.socket Last login: Fri Apr 5 07:34:13 2024 from 10.1.0.2 [opc@o-tmcntm ~]$
-
forループを使用して各Kubernetesクラスタ(c1、c2およびc3)を反復し、ワーカー・ノードのステータスを取得する次のコマンドを実行します。
[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 ~]$
オペレータホストに接続したあと、端末で次のコマンドを実行します。
for c in c1 c2 c3; do kubectx $c kubectl get nodes done
-
Terraformスクリプトを使用してデプロイされたすべてのKubernetesクラスタのすべてのノードの出力に注意してください。
forループを指定してkubectl get all -n kube-system
コマンドを実行します。
[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 ~]$
タスク8: Terraformを使用したOKEクラスタの削除
デプロイメントにTerraformを使用しているため、Terraformを使用してデプロイメント全体を削除することもできます。
-
terraform destroy
コマンドを実行して、3つのKubernetesクラスタに関連するすべてのリソースを削除します。 -
削除プロセスを承認するには、「yes」と入力します。完了には数分かかります。
-
破棄が完了し、229リソースがすべて破棄されることに注意してください。
承認
-
著者 - Iwan Hoogendoorn (OCIネットワーク・スペシャリスト)
-
貢献者 - Ali Mukadam
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Use Terraform to Deploy Multiple Kubernetes Clusters across different OCI Regions using OKE and Create a Full Mesh Network using RPC
F96819-01
April 2024