주:
- 이 사용지침서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값을 사용합니다. 실습을 마칠 때는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
Terraform을 사용하여 OKE를 사용하여 여러 OCI 지역에 여러 Kubernetes 클러스터를 배치하고 RPC를 사용하여 전체 메시 네트워크 생성
소개
이 사용지침서에서는 OKE(Oracle Cloud Infrastructure Container Engine for Kubernetes)를 사용하여 여러 Kubernetes 클러스터를 생성하는 방법에 대해 설명하고, 이러한 클러스터를 세 개의 다른 국가(지역)에 배포합니다. 배포 속도를 높이고 최소한의 구성 실수로 Kubernetes 클러스터를 일관되게 배포하기 위해 Terraform 및 일부 사용자 지정 bash 스크립트를 사용합니다.
또한 빠른 생성 메소드 및 사용자정의 생성 메소드를 사용하여 단일 클러스터를 수동으로 배치했습니다.
이 사용지침서에서는 Oracle Cloud에 여러 Kubernetes 클러스터 배포 설명서를 기반으로 업데이트됩니다.
목표
- Oracle Cloud Infrastructure(OCI) 환경에서 Terraform 작업에 필요한 도구를 사용하여 로컬 컴퓨터를 준비합니다. 또한 Terraform 실행을 위해 로컬 컴퓨터에서 요청을 인증하고 Terraform 및 셸 스크립트를 생성하여 여러 지역에 걸쳐 OKE에 세 개의 Kubernetes 클러스터를 배치하도록 OCI 환경을 구성합니다. DRG(동적 경로 지정 게이트웨이)에서 RPC(원격 피어링 접속)를 구성하여 클러스터 간 통신을 보장합니다.
작업 1: 토폴로지 결정(스타 대 메시)
우리는 모든 지역에 배포되는 컨테이너 기반 애플리케이션을 배포하기 위해 이러한 Kubernetes 클러스터를 구축하고 있습니다. 이러한 Kubernetes 클러스터 간 통신을 허용하려면 일종의 네트워크 통신이 필요합니다. 지금은 이 튜토리얼의 범위를 벗어나지만 몇 가지 아키텍처 결정을 미리 내려야 합니다. 이러한 결정 중 하나는 모든 지역 간의 직접적인 의사 소통을 허용할 것인지 또는 한 지역을 모든 커뮤니케이션의 허브로 사용할 것인지, 다른 지역을 스포크로 사용할 것인지 결정하는 것입니다.
스타 토폴로지: 스타 토폴로지는 단일 허브 영역을 사용하여 영역 간 통신을 허용합니다. 따라서 산호세의 Kubernetes 클러스터가 두바이의 Kubernetes 클러스터와 통신하려는 경우 암스테르담을 전송 허브로 사용합니다.
메시 토폴로지: 메시 토폴로지는 모든 영역(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 애플리케이션을 배포하고 세 개의 다른 지역에 세 개의 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를 눌러 설치를 계속합니다.
- Installer가 성공적으로 완료되었음을 알 수 있습니다.
- 추가 명령을 복사하여 경로 변수에 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을 업그레이드하려면 Hashicorp 저장소를 Homebrew에 추가해야 합니다. 다음 명령을 실행합니다.
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 키 생성
또한 Bastion 호스트로 인증하려면 로컬 SSH 키를 만들어야 합니다. 이 키는 OCI 콘솔(API) 인증을 위해 사용 중인 또 다른 키입니다.
-
다음 명령을 실행하여 디렉토리를 SSH 디렉토리로 변경합니다.
iwhooge@iwhooge-mac ~ % cd ~/.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 키를 생성할 수 있습니다.
- 프로파일을 누릅니다.
- 내 프로파일을 선택합니다.
-
아래로.
- API 키를 선택합니다.
- API 키 추가를 누릅니다.
- 공개 키에 붙여넣기를 선택합니다.
- 작업 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를 가져오려면 ID, 구획, 구획 세부정보로 이동합니다.
-
구획 OCID를 확인할 수 있습니다.
-
복사를 눌러서 구획 OCID를 복사합니다. 나중에 사용할 수 있도록 저장합니다.
-
Kubernetes 클러스터를 배치할 구획입니다.
작업 3: Terraform 스크립트 및 파일 생성
Terraform, RSA 및 SSH 키 설정, OCI 환경(API) 구성, OCI를 통한 Terraform 인증에 필요한 모든 필수 정보 수집 등 로컬 시스템에서의 준비를 완료했습니다. 이제 Terraform 스크립트를 생성합니다.
먼저 Kubernetes 클러스터를 배포하는 영역이 구독되어 있는지 확인해야 합니다. 구독되지 않은 지역에 배포하는 경우 인증 오류가 발생하고 배포가 실패합니다.
이 자습서에서는 암스테르담, 산호세, 두바이의 세 가지 배포 영역을 사용합니다.
-
지역 선택 메뉴를 누릅니다.
- 아래로.
- 영역 관리를 누릅니다.
- 아래로.
- 화살표를 눌러 다음 10개 항목을 확인합니다.
- 우리는 암스테르담에 가입되어 있습니다.
- 화살표를 눌러 다음 10개 항목을 확인합니다.
- 우리는 두바이에 가입되어 있습니다.
- 우리는 San Jose에 가입했습니다.
- 화살표를 눌러 다음 10개 항목을 확인합니다.
-
구독하지 않는 영역이 몇 개 있습니다. 예를 들어, Kubernetes 클러스터 중 하나를 보고타에 배포하려면 먼저 보고타 지역을 구독해야 합니다.
-
다음 이미지는 Terraform을 통해 어떤 성과를 달성하려고 하는지 보여줍니다.
- Terraform과 함께 원격 컴퓨터를 사용하고 있습니다.
- 이 원격 컴퓨터는 OCI로 인증됩니다.
- 인증 후 Terraform을 사용하여 OKE를 사용하여 다음 세 개의 Kubernetes 클러스터를 배치합니다.
- c1: 암스테르담
- c2: 산호세
- c3: 두바이
c1, c2 및 c3 별칭을 사용하여 OCI에서 구성요소의 이름을 쉽게 지정함으로써 고유하게 생성된 이름 대신 이름을 기반으로 클러스터를 쉽게 인식할 수 있게 되었습니다.
-
다음 명령을 실행하여 홈 디렉토리에 있는지 확인합니다.
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 스크립트를 작성했습니다. 이제 스크립트를 실행하고 세 개의 다른 리전에 세 개의 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을 적용하고 세 개의 Kubernetes 클러스터를 배치합니다. -
yes를 입력하여 배치를 승인합니다. Terraform 스크립트를 완료하는 데 30분 정도 걸립니다.
- 적용이 완료되고 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 접속을 설정하는 위치를 보여줍니다.
이제 서로 다른 지역에 세 개의 Kubernetes 클러스터를 배포했습니다. OCI 콘솔의 상위 레벨에서 배치된 리소스를 살펴봅니다.
-
OCI 콘솔 검증(암스테르담).
- 암스테르담을 지역으로 선택합니다.
- 네트워킹 및 VCN으로 이동합니다.
- c1 VCN이 여기에 생성되었는지 검토합니다.
- 개발자 서비스 및 OKE(Kubernetes 클러스터)로 이동합니다.
- c1 Kubernetes 클러스터가 여기에 생성되었는지 검토합니다.
- 컴퓨트 및 인스턴스로 이동합니다.
- 배스천 호스트와 c1 Kubernetes 클러스터에 속하는 두 개의 워커 노드가 여기에 생성되었는지 검토합니다.
- 네트워킹, 고객 연결 및 동적 경로 지정 게이트웨이로 이동합니다.
- 여기서 DRG가 생성되었는지 검토합니다.
- ID 및 정책으로 이동합니다.
- 여기서는 세 가지 ID 정책이 생성되었는지 검토합니다.
-
OCI 콘솔 확인(San Jose).
- San Jose를 Region으로 선택합니다.
- 네트워킹 및 VCN으로 이동합니다.
- c2 VCN이 여기에 생성되었는지 검토합니다.
- 개발자 서비스 및 OKE(Kubernetes 클러스터)로 이동합니다.
- c2 Kubernetes 클러스터가 여기에 생성되었는지 검토합니다.
- 컴퓨트 및 인스턴스로 이동합니다.
- c2 Kubernetes 클러스터에 속하는 두 워커 노드가 여기에 생성되었는지 검토합니다.
- 네트워킹, 고객 연결 및 동적 경로 지정 게이트웨이로 이동합니다.
- 여기서 DRG가 생성되었는지 검토합니다.
- ID 및 정책으로 이동합니다.
- 여기서는 세 가지 ID 정책이 생성되었는지 검토합니다.
-
OCI 콘솔 확인(두바이)
- 영역으로 두바이를 선택합니다.
- 네트워킹 및 VCN으로 이동합니다.
- c3 VCN이 여기에 생성되었는지 검토합니다.
- 개발자 서비스 및 OKE(Kubernetes 클러스터)로 이동합니다.
- c3 Kubernetes 클러스터가 여기에 생성되었는지 검토합니다.
- 컴퓨트 및 인스턴스로 이동합니다.
- c3 Kubernetes 클러스터에 속하는 두 워커 노드가 여기에 생성되었는지 검토합니다.
- 네트워킹, 고객 연결 및 동적 경로 지정 게이트웨이로 이동합니다.
- 여기서 DRG가 생성되었는지 검토합니다.
- ID 및 정책으로 이동합니다.
- 여기서는 세 가지 ID 정책이 생성되었는지 검토합니다.
작업 5: RPC 연결 설정
다양한 RPC 연결 간의 연결을 설정합니다. 먼저 다른 지역에서 검토해 보겠습니다.
-
암스테르담의 원격 피어링 접속 연결입니다.
암스테르담 지역에 접속되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c1로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 두 개의 원격 피어링 접속 연결이 구성되어 있습니다.
- 두 원격 피어링 접속 연결 모두 피어링되지 않은 새 연결입니다.
-
San Jose의 원격 피어링 접속 연결입니다.
산호세 영역에 접속되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c2로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 두 개의 원격 피어링 접속 연결이 구성되어 있습니다.
- 두 원격 피어링 접속 연결 모두 피어링되지 않은 새 연결입니다.
-
Dubai의 원격 피어링 접속 연결입니다.
두바이 지역에 연결되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c3로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 두 개의 원격 피어링 접속 연결이 구성되어 있습니다.
- 두 원격 피어링 접속 연결 모두 피어링되지 않은 새 연결입니다.
모든 RPC OCID 수집
-
모든 영역 간에 RPC 피어링 접속을 구성하려면 해당 RPC 피어링 접속 연결의 OCID를 수집해야 합니다.
- 암스테르담 지역에 접속되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c1로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 원격 피어링 접속(
rpc-to-c2
)을 누릅니다.
-
표시를 누릅니다.
-
복사를 누릅니다.
모든 DRG의 모든 영역에서 모든 원격 피어링 연결에 대해 이 프로세스를 반복하고 저장합니다.
이제 다음과 같은 원격 피어링 접속 OCID를 수집했습니다.
-
c1 DRG RPC
로컬 RPC 로컬 RPC OCID 원격 RPC C1: rpc에서 c2로 ocid1.remotepeeringconnection.oc1.eu-암스테르담-1.aaaaaxxxxxxuxfq C2: rpc에서 c1로 C1: rpc에서 c3로 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaaaxxxxxXs4ya C3: rpc에서 c1로 -
c2 DRG RPC
로컬 RPC 로컬 RPC OCID 원격 RPC C2: rpc에서 c1로 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaxxxxXXXvmya C1: rpc에서 c2로 C2: rpc에서 c3로 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaaxxxxXXen2a C3: rpc에서 c2로 -
c3 DRG RPC
로컬 RPC 로컬 RPC OCID 원격 RPC C3: rpc에서 c1로 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaapxxxXXXcosq C1: rpc에서 c3로 C3: rpc에서 c2로 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaaxxxpXXXs5tq C2: rpc에서 c3로
RPC 피어링 만들기
C1에서 C2 및 C3로 피어링을 구성합니다. 그러면 C2 및 C3 측에서 C1에 대한 피어링이 자동으로 구성되고, C2에서 C3로 피어링을 구성하면 C3 측에서 C2에 대한 피어링이 자동으로 구성됩니다.
C1 피어링(암스테르담)을 구성합니다.
-
다음 이미지는 구성 중인 RPC를 보여줍니다.
- 암스테르담 지역에 접속되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c1로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 첫번째 원격 피어링 접속 연결(
rpc-to-c2
)을 누릅니다. 여기서는 산호세에 대한 연결을 구성합니다.
-
연결 설정을 누릅니다.
- 산호세 영역을 선택합니다.
- c1(암스테르담)에 대해 생성된 산호세측의 RPC OCID를 입력합니다.
- 연결 설정을 누릅니다.
- 피어링 상태가 Pending으로 변경되며 완료하는 데 1분 정도 걸립니다.
- 두번째 원격 피어링 접속 연결(
rpc-to-c3
)을 누릅니다. 여기서는 두바이에 대한 연결을 구성합니다.
-
연결 설정을 누릅니다.
- 두바이 영역을 선택합니다.
- c1(암스테르담)에 대해 생성된 두바이측의 RPC OCID를 입력합니다.
- 연결 설정을 누릅니다.
C2 피어링(San Jose) 구성.
-
다음 이미지는 구성 중인 RPC를 보여줍니다.
- 피어링 상태가 Pending으로 변경되며 완료하는 데 1분 정도 걸립니다.
- 지역 메뉴를 클릭하고 암스테르담에서 산호세 지역으로 전환합니다.
- 산호세 영역을 선택합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c2로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 이제 암스테르담과 산호세 사이의 연결이 피어링되었습니다. 이것은 암스테르담 측에서 이루어졌습니다.
- 산호세(c2)에서 두바이(c3)까지의 피어링 상태는 여전히 새롭습니다.
- 두번째 원격 피어링 접속 연결(
rpc-to-c3
)을 누릅니다. 여기서는 두바이에 대한 연결을 구성합니다.
-
연결 설정을 누릅니다.
- 두바이 영역을 선택합니다.
- c2(San Jose)용으로 생성된 두바이 측의 RPC OCID를 입력합니다.
- 연결 설정을 누릅니다.
-
피어링 상태가 Pending으로 변경되며 완료하는 데 1분 정도 걸립니다.
다음 이미지는 우리가 수행한 전체 메시 RPC 피어링을 보여줍니다.
-
연결 피어링을 확인합니다.
- 산호세 영역에 접속되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c1로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 두 원격 피어링 접속 연결은 피어링된 상태입니다.
- 산호세 영역에 접속되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c2로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 두 원격 피어링 접속 연결은 피어링된 상태입니다.
- 두바이 지역에 연결되어 있는지 확인합니다.
- 네트워킹, 고객 연결, 동적 경로 지정 게이트웨이 및 c3로 이동합니다.
- 원격 피어링 접속 연결을 누릅니다.
- 두 원격 피어링 접속 연결은 피어링된 상태입니다.
작업 6: Network Visualizer를 사용하여 RPC 연결 확인
RPC가 Network Visualizer로 올바르게 구성되었는지 확인하려면 추가 검사를 수행합니다.
- 왼쪽 위에 있는 햄버거 메뉴를 누릅니다.
- 네트워킹을 누릅니다.
- 네트워크 시각화 프로그램을 누릅니다.
- 암스테르담 지역에 접속되어 있는지 확인합니다.
- 암스테르담 지역은 c1입니다.
- 암스테르담에서 산호세와 두바이까지의 연결을 확인하십시오.
- 산호세 영역에 접속되어 있는지 확인합니다.
- San Jose 지역은 c2입니다.
- 산호세(San Jose)에서 암스테르담(Amsterdam)과 두바이(Dubai)로의 연결에 주목하십시오.
- 두바이 지역에 연결되어 있는지 확인합니다.
- 두바이 지역은 c3입니다.
- 두바이에서 암스테르담과 산호세까지의 연결을 확인하십시오.
작업 7: 배스천 및 연산자를 사용하여 접속 작업 확인
Kubernetes 클러스터(세 개의 다른 영역 모두에서)를 생성하고 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 ~]$
-
다음 명령을 실행하면 각 Kubernetes 클러스터(c1, c2 및 c3)에서 for 루프를 사용하여 반복되고 워커 노드의 상태를 검색할 수 있습니다.
[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
명령을 실행하여 세 개의 Kubernetes 클러스터와 관련된 모든 리소스를 삭제합니다. -
yes를 입력하여 삭제 프로세스를 승인합니다. 완료하는 데 몇 분 정도 걸립니다.
-
삭제가 완료되고 229개의 리소스가 모두 삭제됩니다.
확인
-
작성자 - Iwan Hoogendoorn(OCI Network Specialist)
-
제공자 - 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
F96820-01
April 2024