Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se cadastrar em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Usar o Terraform para Implantar Vários Clusters do Kubernetes em diferentes Regiões do OCI usando o OKE e Criar uma Rede de Malha Completa usando RPC
Introdução
Neste tutorial, explicaremos como criar vários clusters do Kubernetes usando o Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) e implantaremos esses clusters em três países diferentes (regiões). Para acelerar a implantação e implantar os clusters do Kubernetes de forma consistente com a menor quantidade de erros de configuração, usaremos o Terraform e alguns scripts bash personalizados.
Também implantamos manualmente clusters únicos usando o método de criação rápida e o método de criação personalizada.
Este tutorial é uma atualização baseada nesta documentação: Implantando vários clusters do Kubernetes no Oracle Cloud.
Objetivos
- Prepararemos nosso computador local com as ferramentas necessárias para ações do Terraform no ambiente da Oracle Cloud Infrastructure (OCI). Também configuraremos o ambiente do OCI para autenticar solicitações do nosso computador local para execuções do Terraform e criar scripts Terraform e shell para implantar três clusters do Kubernetes no OKE em diferentes regiões. Garantiremos a comunicação entre clusters configurando RPC (Remote Peering Connections) nos DRG (Dynamic Routing Gateways).
Tarefa 1: Determinar a Topologia (Estrela vs Malha)
Estamos criando esses clusters do Kubernetes para implementar um aplicativo baseado em contêiner que é implantado em todas as regiões. Para permitir a comunicação entre esses clusters do Kubernetes, precisamos ter alguma forma de comunicação de rede. Por enquanto, isso está fora do escopo deste tutorial, mas precisamos tomar algumas decisões arquitetônicas antecipadamente. Uma dessas decisões é determinar se queremos permitir a comunicação direta entre todas as regiões ou se queremos usar uma região como hub para toda a comunicação e as outras como spoke.
Topologia de Estrela: A topologia de estrela permite a comunicação entre as regiões usando uma única região de hub. Então, se os clusters do Kubernetes em San Jose quiserem se comunicar com os clusters do Kubernetes em Dubai, ele usará Amsterdã como um hub de trânsito.
Topologia de Malha: A topologia de malha permite comunicação direta de e para todas as regiões (clusters do Kubernetes). Portanto, se os clusters do Kubernetes em San Jose quiserem se comunicar com os clusters do Kubernetes em Dubai, eles poderão se comunicar diretamente.
Neste tutorial, vamos criar uma topologia de malha, e essa conectividade será feita usando DRG e RPC.
Tarefa 2: Preparar seu Ambiente para Autenticação e Executar Scripts do Terraform
Antes de usar o Terraform, precisamos preparar nosso ambiente. Para usar o Terraform, abra um terminal. Neste tutorial, estamos usando o aplicativo terminal OS X.
-
Execute o comando a seguir para verificar se o Terraform está instalado, adicionado ao seu caminho e qual é a versão.
Last login: Thu Apr 4 08:50:38 on ttys000 iwhooge@iwhooge-mac ~ % terraform -v zsh: command not found: terraform iwhooge@iwhooge-mac ~ %
-
Você pode ver que o comando não foi encontrado; isso significa que o Terraform não está instalado ou que ele não foi adicionado à variável de caminho.
Como você pode ver, o Terraform não está instalado, precisamos instalá-lo. Você notará que não está apenas instalando o Terraform, mas há várias etapas necessárias para implantar o aplicativo Terraform e preparar o ambiente para nossa solução completa de script para implantar três clusters do Kubernetes em três regiões diferentes.
A imagem a seguir fornece orientação sobre as tarefas necessárias a serem seguidas.
Tarefa 2.1: Instalar Homebrew
O Terraform pode ser instalado usando diferentes métodos. Neste tutorial, instalaremos o Terraform usando o Homebrew.
O Homebrew é um gerenciador de pacotes para MacOS (e Linux) que pode ser usado para instalar aplicativos e suas dependências necessárias são como apt
ou yum
.
-
Instale o Homebrew.
-
Execute o comando a seguir para instalar o 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 ~ %
-
Clique em RETURN/ENTER para continuar a instalação.
- Observe que a instalação foi concluída com sucesso.
- Copie os comandos adicionais para adicionar o Homebrew à sua variável de caminho.
-
-
Execute o comando a seguir para adicionar o Homebrew à sua variável de caminho.
iwhooge@iwhooge-mac ~ % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/iwhooge/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
Tarefa 2.2: Usar Homebrew para Instalar o Terraform
Nesta tarefa, usaremos o Homebrew para instalar o pacote Terraform.
-
Execute o comando a seguir para instalar o pacote 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 ~ %
-
Execute o comando a seguir para verificar se o Terraform está instalado e a versão.
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 ~ %
-
Observe que o Homebrew está instalado com o Terraform versão
1.5.7
. -
Observe que esta é uma versão antiga. Para fazer upgrade da versão do Terraform, consulte Instalar o Terraform.
-
Para fazer upgrade do Terraform, precisamos adicionar o repositório Hashicorp ao Homebrew. Execute o seguinte comando.
iwhooge@iwhooge-mac ~ % brew tap hashicorp/tap
-
Execute o comando a seguir para instalar o Terraform a partir do repositório Hashicorp.
iwhooge@iwhooge-mac ~ % brew install hashicorp/tap/terraform terraform 1.5.7 is already installed but outdated (so it will be upgraded). ==> Fetching hashicorp/tap/terraform ==> Downloading https://releases.hashicorp.com/terraform/1.7.5/terraform_1.7.5_d ######################################################################### 100.0% ==> Upgrading hashicorp/tap/terraform 1.5.7 -> 1.7.5 🍺 /opt/homebrew/Cellar/terraform/1.7.5: 3 files, 88.7MB, built in 4 seconds ==> Running `brew cleanup terraform`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). Removing: /opt/homebrew/Cellar/terraform/1.5.7... (6 files, 69.7MB) Removing: /Users/iwhooge/Library/Caches/Homebrew/terraform_bottle_manifest--1.5.7... (9KB) Removing: /Users/iwhooge/Library/Caches/Homebrew/terraform--1.5.7... (19.6MB) iwhooge@iwhooge-mac ~ %
-
Observe que o upgrade do Terraform está sendo feito de
1.5.7
para a versão1.7.5
.
-
Execute o comando a seguir para verificar se a versão do Terraform é a mais recente.
iwhooge@iwhooge-mac ~ % terraform -v Terraform v1.7.5 on darwin_arm64 iwhooge@iwhooge-mac ~ %
-
Observe que a nova versão é
1.7.5
.
-
Tarefa 2.3: Criar Chaves RSA Locais para Autenticação do OCI
Para permitir a autenticação com o OCI usando uma chave de API, precisamos gerar uma nova chave privada e pública apenas para essa finalidade.
-
Execute o comando a seguir para alterar o diretório para o diretório principal.
iwhooge@iwhooge-mac ~ % cd ~/
-
Execute o comando a seguir para verificar se você está no diretório home.
iwhooge@iwhooge-mac ~ % pwd
-
Verifique se o diretório home está correto.
/Users/iwhooge
-
Execute o comando a seguir para criar um novo diretório que conterá as informações a serem autenticadas com o OCI.
iwhooge@iwhooge-mac ~ % mkdir .oci
-
Execute o comando a seguir para gerar uma chave RSA privada.
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)
-
Execute o comando a seguir para tornar o arquivo de chave privada legível.
iwhooge@iwhooge-mac ~ % chmod 600 ~/.oci/4-4-2023-rsa-key.pem
-
Execute o comando a seguir para gerar uma chave RSA pública com base na chave privada.
iwhooge@iwhooge-mac ~ % openssl rsa -pubout -in ~/.oci/4-4-2023-rsa-key.pem -out ~/.oci/4-4-2023-rsa-key-public.pem
-
Verifique se a gravação da chave foi concluída.
writing RSA key
-
Execute o comando a seguir para verificar o conteúdo da chave RSA privada.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key.pem
-
Verifique o conteúdo da chave RSA privada.
-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA52+LJ+gp3MAJGtXTeQ/dmqq6Xh1zufK0yurLt/0w/DuxqEsL RT7x+Znz6EOVLx34Ul27QnHk7bhXaDCuwInnaOTOiS97AnLuFM08tvFksglnJssA JsszfTzUMNf0w4wtuLsJ5oRaPbVUa01TIm6HdwKAloIKYSn6z8gcvfLLItkyvPRo XXX w3yip+Yxr1YN3LjpDbZk4WTagKWoVQzp5nrfZlyU7ToZcMpUn/fIUsI= -----END RSA PRIVATE KEY-----
-
Execute o comando a seguir para verificar o conteúdo da chave RSA pública.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key-public.pem
-
Verifique o conteúdo da chave RSA pública.
----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA52+LJ+gp3MAJGtXTeQ/d XXX mtHVtjLM1ftjYlaRSG5Xl/xdKMC8LH0bxpy3XXzLmDrYCP3LrhrIG8Xmuzsji6Hw TQIDAQAB -----END PUBLIC KEY----- iwhooge@iwhooge-mac ~ %
Tarefa 2.4: Gerar Chaves SSH Locais para Autenticação do Host do Bastion
Também precisamos criar chaves SSH locais para autenticação com o Bastion host. Esta é outra chave que estamos usando para autenticação com a Console do OCI (API).
-
Execute o comando a seguir para alterar o diretório para seu diretório SSH.
iwhooge@iwhooge-mac ~ % cd ~/.ssh/
-
Execute o comando a seguir para verificar se você tem uma chave SSH pública e privada que possa ser usada.
iwhooge@iwhooge-mac .ssh % ls -l -a
-
Observe que não temos nenhum par de chaves SSH. Neste tutorial, geraremos um novo par de chaves 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
-
Execute o comando a seguir para gerar um novo par de chaves 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):
-
Deixe a frase-senha vazia e clique em INTER.
Enter passphrase (empty for no passphrase):
-
Deixe a frase-senha vazia e clique em INTER.
Enter same passphrase again:
-
Observe que o novo par de chaves SSH é salvo nos locais fornecidos.
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 %
Tarefa 2.5: Criar uma Chave de API na Console do OCI e Adicionar a Chave Pública à sua Conta do OCI
-
Temos a chave RSA criada na Tarefa 2.3. Podemos usar essa chave RSA pública para criar uma chave de API na Console do OCI para autenticação do OCI.
- Clique em perfil.
- Selecione Meu Perfil.
-
Rolar para Baixo.
- Selecione Chaves de API.
- Clique em Adicionar chave de API.
- Selecione Colar na chave pública.
- Cole a chave pública criada na Tarefa 2.3.
- Clique em Adicionar.
- Observe o caminho e o arquivo no qual a configuração de autenticação de API gerada precisa ser colada.
- Observe a impressão digital da chave de API da chave de API que você acabou de criar.
- Observe a configuração de autenticação de API.
- Clique em Copiar.
- Clique em Fechar.
-
Cole a configuração de autenticação da API em um arquivo de texto temporário.
[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
-
Atualize a última linha da configuração de autenticação da API e adicione o caminho correto do arquivo de chave privada criado na Tarefa 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
-
Criar um arquivo de configuração de autenticação da API do OCI.
iwhooge@iwhooge-mac ~ % nano ~/.oci/config iwhooge@iwhooge-mac ~ %
-
Copie a configuração de autenticação de API no arquivo. Use
CTRL + X
para sair desse arquivo. -
Informe S (Sim) para salvar o arquivo.
-
Confirme o arquivo que você deseja usar para salvar a configuração de autenticação da API.
-
Quando o arquivo for salvo com êxito, você retornará ao prompt do terminal.
Tarefa 2.6: Coletar as Informações Necessárias para seu Ambiente do OCI
Precisamos coletar algumas informações para nossos arquivos Terraform para autenticação do OCI usando a API. A maioria das informações já é fornecida no arquivo de configuração de autenticação de API criado na Tarefa 2.5.
-
Salve as informações a seguir para uso posterior.
OCID da Tenancy ocid1.tenancy.oc1..aaaaaaaabh2XXXvq OCID do Usuário ocid1.user.oc1..aaaaaaaavgrXXX23aq Impressão Digital 30:XXX:ba:ee Região eu-frankfurt-1 Caminho da Chave Privada ~/.oci/4-4-2023-rsa-key.pem OCID do Compartimento ocid1.compartment.oc1..aaaaaaaabgXXXnuq -
A única coisa que exigimos que não está no arquivo de configuração de autenticação de API é o OCID do Compartimento.
-
Para obter o OCID do compartimento, navegue até Identidade, Compartimentos, Detalhes do Compartimento.
-
Você pode ver o OCID do compartimento.
-
Clique em Copiar para copiar o OCID do compartimento. Salve para uso posterior.
-
Este é o compartimento no qual você implantará seus clusters do Kubernetes.
Tarefa 3: Criar Scripts e Arquivos do Terraform
Concluímos a preparação em nossa máquina local, incluindo a configuração de chaves Terraform, RSA e SSH, a configuração do ambiente OCI (API) e a coleta de todas as informações essenciais necessárias para autenticar o Terraform com o OCI. Agora crie o script do Terraform.
Primeiro, precisamos verificar se estamos inscritos nas regiões nas quais estamos implantando nossos clusters do Kubernetes. Se estivermos implantando em uma região não inscrita, obteremos um erro de autenticação e a implantação falhará.
Para este tutorial, estamos usando as três regiões a seguir para implantação: Amsterdã, San Jose e Dubai.
-
Clique no menu de seleção da região.
- Rolar para Baixo.
- Clique em Gerenciar regiões.
- Rolar para Baixo.
- Clique em seta para ver os próximos 10 itens.
- Note que estamos inscritos em Amsterdam.
- Clique em seta para ver os próximos 10 itens.
- Observe que estamos inscritos no Dubai.
- Note que estamos inscritos em San Jose.
- Clique em seta para ver os próximos 10 itens.
-
Observe que há algumas regiões nas quais não estamos inscritos. Por exemplo, se quisermos implantar um de nossos clusters Kubernetes em Bogotá, primeiro precisamos assinar a região de Bogotá.
-
A imagem a seguir ilustra o que estamos tentando alcançar com o Terraform.
- Estamos usando o computador remoto com o Terraform.
- Este computador remoto será autenticado com o OCI.
- Após a autenticação, usaremos o Terraform para implantar os três clusters do Kubernetes a seguir usando o OKE.
- c1: Amsterdã
- c2: São José
- c3: Dubai
Usamos os aliases c1, c2 e c3 para facilitar o nome de componentes no OCI, para que seja mais fácil reconhecer os clusters com base no nome, em vez de um nome gerado exclusivamente.
-
Execute o comando a seguir para se certificar de que você está no diretório home
iwhooge@iwhooge-mac ~ % pwd /Users/iwhooge
-
Execute o comando a seguir para criar um novo diretório chamado diretório
terraform-multi-oke
escripts
dentro do diretórioterraform-multi-oke
.iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke/scripts
-
Execute o comando a seguir para verificar se o diretório
terraform-multi-oke
foi criado.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
-
Execute o comando a seguir para alterar o caminho para o novo diretório
terraform-multi-oke
e certifique-se de que o diretório esteja vazio.iwhooge@iwhooge-mac ~ % cd terraform-multi-oke iwhooge@iwhooge-mac terraform-multi-oke % ls -l total 0 iwhooge@iwhooge-mac terraform-multi-oke %
-
Crie arquivos dentro dos diretórios
terraform-multi-oke
eterraform-multi-oke/scripts
. Os arquivos e a estrutura de pastas devem ter esta aparência.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
Observação: Você também pode fazer download dos arquivos do repositório GitHub: oci-oke-terraform.
-
Atualize o arquivo
terraform.tfvars
com os parâmetros coletados na Tarefa 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 # =====================================================================
-
Se você quiser implantar menos ou mais clusters do Kubernetes ou quiser alterar as regiões, também poderá fazer isso alterando as regiões nos arquivos
terraform.tfvars
,contexts.tf
eproviders.tf
. Localize c1, c2 e c3 e faça alterações.-
terraform.tfvars
(Adicione ou remova clusters aqui; certifique-se de que, ao adicionar clusters, use blocos CIDR exclusivos).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
(Adicione ou remova clusters no parâmetrodepends_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
(Adicione ou remova clusters como provedor, certifique-se de alterar os parâmetros de região e alias).provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,var.home_region) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "home" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] } provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,lookup(lookup(var.clusters,"c1"),"region")) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "c1" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] } provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,lookup(lookup(var.clusters,"c2"),"region")) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "c2" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] } provider "oci" { fingerprint = var.api_fingerprint private_key_path = var.api_private_key_path region = lookup(local.regions,lookup(lookup(var.clusters,"c3"),"region")) tenancy_ocid = var.tenancy_id user_ocid = var.user_id alias = "c3" ignore_defined_tags = ["Oracle-Tags.CreatedBy", "Oracle-Tags.CreatedOn"] }
Observação: Você também pode fazer download dos arquivos do repositório GitHub: oci-oke-terraform.
-
Tarefa 4: Executar Clusters do Terraform e do OKE junto com os Recursos necessários (VCN, Sub-redes, DRGs, RPCs etc.)
Temos os scripts do Terraform no lugar com o parâmetro correto. Agora, execute os scripts e crie nosso ambiente que consiste em três clusters do Kubernetes em três regiões diferentes.
-
Execute o comando a seguir para alterar o diretório para o diretório
terraform-multi-oke
.Last login: Fri Apr 5 09:01:47 on ttys001 iwhooge@iwhooge-mac ~ % cd terraform-multi-oke
-
Execute o comando
terraform init
para inicializar o Terraform e fazer download dos módulos Terraform necessários para implantar os scripts Terraform.Certifique-se de que o Terraform tenha sido inicializado com sucesso.
-
Execute o comando
terraform plan
para planejar que o Terraform faça uma pré-verificação se seu código do Terraform é válido e verifique o que será implantado (essa ainda não é a implantação real). -
Observe que o Terraform adicionará 229 novos recursos no OCI, e todos esses objetos estão relacionados aos três clusters do Kubernetes que estamos planejando implantar.
-
Execute o comando
terraform apply
para aplicar o Terraform e implantar três clusters do Kubernetes. -
Digite yes para aprovar a implantação. Levará cerca de 30 minutos para que o script do Terraform seja concluído.
- Observe que aplicar está concluído e 229 novos recursos são adicionados.
- Copie a saída do comando SSH para acessar o bastion e os hosts do operador para tarefas de gerenciamento de cluster do Kubernetes.
-
A imagem a seguir ilustra a implantação atual com o Terraform.
-
Execute o comando SSH para fazer log-in no host do operador do 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.
-
Digite yes para continuar para o bastion host.
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.
-
Digite yes para continuar novamente para o host do operador.
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
-
Observe que agora você está conectado ao operador.
-
-
Execute o comando a seguir para verificar os clusters implantados e em execução do Kubernetes no host do operador.
[opc@o-tmcntm ~]$ kubectx c1 c2 c3 [opc@o-tmcntm ~]$
A imagem a seguir ilustra de onde você está configurando a conexão SSH com o bastion host e do bastion host para o operador host.
Agora, implementamos três clusters do Kubernetes nas diferentes regiões. Veja os recursos implantados de um alto nível na Console do OCI.
-
Verificação da Console do OCI (Amsterdã).
- Selecione Amsterdã como a Região.
- Navegue até Networking e VCN.
- Verifique se a VCN c1 foi criada aqui.
- Navegue até Serviços do Desenvolvedor e Clusters do Kubernetes (OKE).
- Verifique se o cluster do Kubernetes c1 foi criado aqui.
- Navegue até Compute e Instâncias.
- Verifique se o bastion host e os dois nós de trabalho pertencentes ao cluster do Kubernetes c1 são criados aqui.
- Navegue até Networking, Conectividade do Cliente e Gateway de Roteamento Dinâmico.
- Verifique se o DRG foi criado aqui.
- Navegue até Identidade e Políticas.
- Verifique se três políticas de identidade foram criadas aqui.
-
Verificação da Console do OCI (San Jose).
- Selecione San Jose como a Região.
- Navegue até Networking e VCN.
- Verifique se a VCN c2 foi criada aqui.
- Navegue até Serviços do Desenvolvedor e Clusters do Kubernetes (OKE).
- Verifique se o cluster do Kubernetes c2 foi criado aqui.
- Navegue até Compute e Instâncias.
- Verifique se os dois nós de trabalho pertencentes ao cluster do Kubernetes c2 são criados aqui.
- Navegue até Networking, Conectividade do Cliente e Gateway de Roteamento Dinâmico.
- Verifique se o DRG foi criado aqui.
- Navegue até Identidade e Políticas.
- Verifique se três políticas de identidade foram criadas aqui.
-
Verificação da Console do OCI (Dubai)
- Selecione Dubai como a região.
- Navegue até Networking e VCN.
- Verifique se a VCN c3 foi criada aqui.
- Navegue até Serviços do Desenvolvedor e Clusters do Kubernetes (OKE).
- Verifique se o cluster do Kubernetes c3 foi criado aqui.
- Navegue até Compute e Instâncias.
- Verifique se os dois nós de trabalho pertencentes ao cluster do Kubernetes c3 são criados aqui.
- Navegue até Networking, Conectividade do Cliente e Gateway de Roteamento Dinâmico.
- Verifique se o DRG foi criado aqui.
- Navegue até Identidade e Políticas.
- Verifique se três políticas de identidade foram criadas aqui.
Tarefa 5: Estabelecer Conexões RPC
Estabeleça as conexões entre os vários anexos RPC. Em primeiro lugar, vamos analisá-las nas diferentes regiões.
-
Anexos da conexão de Pareamento Remoto em Amsterdã.
Verifique se você está conectado à região de Amsterdã.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c1.
- Clique em Anexos de conexão de pareamento remoto.
- Observe que há dois anexos de conexão de pareamento remoto configurados.
- Observe que ambos os anexos de conexão de pareamento remoto são novos e não pareados.
-
Anexos da conexão de Pareamento Remoto no San Jose.
Verifique se você está conectado à região San Jose.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c2.
- Clique em Anexos de conexão de pareamento remoto.
- Observe que há dois anexos de conexão de pareamento remoto configurados.
- Observe que ambos os anexos de conexão de pareamento remoto são novos e não pareados.
-
Anexos da conexão de Pareamento Remoto no Dubai.
Verifique se você está conectado à região Dubai.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c3.
- Clique em Anexos de conexão de pareamento remoto.
- Observe que há dois anexos de conexão de pareamento remoto configurados.
- Observe que ambos os anexos de conexão de pareamento remoto são novos e não pareados.
Coletar Todos os OCIDs de RPC
-
Para configurar as conexões de pareamento RPC entre todas as regiões, precisamos coletar o OCID desses anexos de conexão de pareamento RPC.
- Verifique se você está conectado à região de Amsterdã.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c1.
- Clique em Anexos de conexão de pareamento remoto.
- Clique na conexão de pareamento remoto (
rpc-to-c2
).
-
Clique em Mostrar.
-
Clique em Copiar.
Repita o processo para todas as conexões de pareamento remoto em todas as regiões de todos os DRGs e salve-as.
Agora, coletamos os seguintes OCIDs de conexão de pareamento remoto:
-
c1 RPC do DRG
RPC Local OCID RPC Local RPC Remoto C1: rpc-para-c2 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaxxxxxxuxfq C2: rpc-para-c1 C1: rpc-para-c3 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaaaxxxxxXs4ya C3: rpc-para-c1 -
c2 RPC do DRG
RPC Local OCID RPC Local RPC Remoto C2: rpc-para-c1 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaxxxxXXXvmya C1: rpc-para-c2 C2: rpc-para-c3 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaaxxxxXXen2a C3: rpc-para-c2 -
c3 RPC do DRG
RPC Local OCID RPC Local RPC Remoto C3: rpc-para-c1 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaapxxxXXXcosq C1: rpc-para-c3 C3: rpc-para-c2 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaaxxxpXXXs5tq C2: rpc-para-c3
Criar Pares RPC
Configure o pareamento em C1 para C2 e C3. Isso configurará automaticamente o pareamento para C1 no lado C2 e C3, e a configuração do pareamento em C2 para C3 configurará automaticamente o pareamento para C2 no lado C3.
Configure os Pares C1 (Amsterdã).
-
A imagem a seguir mostra quais RPCs estamos configurando.
- Verifique se você está conectado à região de Amsterdã.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c1.
- Clique em Anexos de conexão de pareamento remoto.
- Clique no primeiro anexo de conexão de pareamento remoto (
rpc-to-c2
). Aqui você vai configurar a conexão para San Jose.
-
Clique em Definir Conexão.
- Selecione a região San Jose.
- Digite o OCID da RPC do lado de San Jose que é criado para c1 (Amsterdã).
- Clique em Definir Conexão.
- O status do pareamento será alterado para Pendente e levará um minuto para ser concluído.
- Clique no segundo anexo de conexão de pareamento remoto (
rpc-to-c3
). Aqui você vai configurar a conexão para Dubai.
-
Clique em Definir Conexão.
- Selecione a região Dubai.
- Digite o OCID RPC do lado de Dubai que é criado para c1 (Amsterdã).
- Clique em Definir Conexão.
Configure o Pareamento C2 (San Jose).
-
A imagem a seguir mostra quais RPCs estamos configurando.
- O status do pareamento será alterado para Pendente e levará um minuto para ser concluído.
- Clique no menu de regiões e alterne de Amsterdã para a região de San Jose.
- Selecione a região San Jose.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c2.
- Clique em Anexos de conexão de pareamento remoto.
- Observe que a conexão entre Amsterdã e San Jose agora é pareada. Isso é feito do lado de Amsterdã.
- Observe que o status de pareamento de San Jose (c2) para Dubai (c3) ainda é novo.
- Clique no segundo anexo de conexão de pareamento remoto (
rpc-to-c3
). Aqui você vai configurar a conexão para Dubai.
-
Clique em Definir Conexão.
- Selecione a região Dubai.
- Digite o OCID de RPC do lado do Dubai que é criado para c2 (San Jose).
- Clique em Definir Conexão.
-
O status do pareamento será alterado para Pendente e levará um minuto para ser concluído.
A imagem a seguir ilustra o pareamento RPC de malha completa que fizemos.
-
Verifique o pareamento de conexões.
- Verifique se você está conectado à região San Jose.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c1.
- Clique em Anexos de conexão de pareamento remoto.
- Observe que ambos os anexos de conexão de pareamento remoto têm o status pareado.
- Verifique se você está conectado à região San Jose.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c2.
- Clique em Anexos de conexão de pareamento remoto.
- Observe que ambos os anexos de conexão de pareamento remoto têm o status pareado.
- Verifique se você está conectado à região Dubai.
- Navegue até Networking, Conectividade do Cliente, Gateways de Roteamento Dinâmico e c3.
- Clique em Anexos de conexão de pareamento remoto.
- Observe que ambos os anexos de conexão de pareamento remoto têm o status pareado.
Tarefa 6: Usar o Visualizador de Rede para Verificar as Conexões RPC
Execute uma verificação adicional para garantir que a RPC tenha sido configurada corretamente com o Visualizador de Rede.
- Clique no menu de hambúrguer no canto superior esquerdo.
- Clique em Rede.
- Clique em Visualizador de Rede.
- Verifique se você está conectado à região de Amsterdã.
- Observe que a região de Amsterdã é c1.
- Observe as conexões de Amsterdã para San Jose e Dubai.
- Verifique se você está conectado à região San Jose.
- Observe que a região de San Jose é c2.
- Observe as conexões de San Jose para Amsterdã e Dubai.
- Verifique se você está conectado à região Dubai.
- Observe que a região de Dubai é c3.
- Observe as conexões de Dubai para Amsterdã e San Jose.
Tarefa 7: Usar o Bastion e o Operador para Verificar o Trabalho de Conectividade
Criamos os clusters do Kubernetes (em todas as três regiões diferentes) e conectamos as regiões usando RPC. Agora podemos usar o host do operador para verificar se o operador pode gerenciar os clusters do Kubernetes.
-
Execute o comando a seguir (que foi fornecido após a conclusão do comando
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 ~]$
-
Execute o comando a seguir que será iterado usando um loop for por meio de cada cluster do Kubernetes (c1, c2 e c3) e recupere o status dos nós de trabalho.
[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 ~]$
Execute o comando a seguir no terminal depois de se conectar ao host do operador.
for c in c1 c2 c3; do kubectx $c kubectl get nodes done
-
Observe a saída de todos os nós de todos os clusters do Kubernetes que foram implantados usando o script do Terraform.
Execute o comando kubectl get all -n kube-system
com o loop for.
[opc@o-tmcntm ~]$ for c in c1 c2 c3; do
> kubectx $c
> kubectl get all -n kube-system
> done
Switched to context "c1".
NAME READY STATUS RESTARTS AGE
pod/coredns-844b4886f-8b4k6 1/1 Running 0 118m
pod/coredns-844b4886f-g8gbm 1/1 Running 0 122m
pod/csi-oci-node-5xzdg 1/1 Running 0 119m
pod/csi-oci-node-nsdg4 1/1 Running 1 (118m ago) 119m
pod/kube-dns-autoscaler-74f78468bf-l9644 1/1 Running 0 122m
pod/kube-flannel-ds-5hsp7 1/1 Running 0 119m
pod/kube-flannel-ds-wk7xl 1/1 Running 0 119m
pod/kube-proxy-gpvv2 1/1 Running 0 119m
pod/kube-proxy-vgtf7 1/1 Running 0 119m
pod/proxymux-client-nt59j 1/1 Running 0 119m
pod/proxymux-client-slk9j 1/1 Running 0 119m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.101.5.5 <none> 53/UDP,53/TCP,9153/TCP 122m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/csi-oci-node 2 2 2 2 2 <none> 122m
daemonset.apps/kube-flannel-ds 2 2 2 2 2 <none> 122m
daemonset.apps/kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 122m
daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 122m
daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 122m
daemonset.apps/proxymux-client 2 2 2 2 2 node.info.ds_proxymux_client=true 122m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 122m
deployment.apps/kube-dns-autoscaler 1/1 1 1 122m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-844b4886f 2 2 2 122m
replicaset.apps/kube-dns-autoscaler-74f78468bf 1 1 1 122m
Switched to context "c2".
NAME READY STATUS RESTARTS AGE
pod/coredns-84bd9cd884-4fqvr 1/1 Running 0 120m
pod/coredns-84bd9cd884-lmgz2 1/1 Running 0 124m
pod/csi-oci-node-4zl9l 1/1 Running 0 122m
pod/csi-oci-node-xjzfd 1/1 Running 1 (120m ago) 122m
pod/kube-dns-autoscaler-59575f8674-m6j2z 1/1 Running 0 124m
pod/kube-flannel-ds-llhhq 1/1 Running 0 122m
pod/kube-flannel-ds-sm6fg 1/1 Running 0 122m
pod/kube-proxy-7ppw8 1/1 Running 0 122m
pod/kube-proxy-vqfgb 1/1 Running 0 122m
pod/proxymux-client-cnkph 1/1 Running 0 122m
pod/proxymux-client-k5k6n 1/1 Running 0 122m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.102.5.5 <none> 53/UDP,53/TCP,9153/TCP 124m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/csi-oci-node 2 2 2 2 2 <none> 124m
daemonset.apps/kube-flannel-ds 2 2 2 2 2 <none> 124m
daemonset.apps/kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 124m
daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 124m
daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 124m
daemonset.apps/proxymux-client 2 2 2 2 2 node.info.ds_proxymux_client=true 124m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 124m
deployment.apps/kube-dns-autoscaler 1/1 1 1 124m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-84bd9cd884 2 2 2 124m
replicaset.apps/kube-dns-autoscaler-59575f8674 1 1 1 124m
Switched to context "c3".
NAME READY STATUS RESTARTS AGE
pod/coredns-56c7ffc89c-jt85k 1/1 Running 0 115m
pod/coredns-56c7ffc89c-lsqcg 1/1 Running 0 121m
pod/csi-oci-node-gfswn 1/1 Running 0 116m
pod/csi-oci-node-xpwbp 1/1 Running 0 116m
pod/kube-dns-autoscaler-6b69bf765c-fxjvc 1/1 Running 0 121m
pod/kube-flannel-ds-2sqbk 1/1 Running 0 116m
pod/kube-flannel-ds-l7sdz 1/1 Running 0 116m
pod/kube-proxy-4qcmb 1/1 Running 0 116m
pod/kube-proxy-zcrk4 1/1 Running 0 116m
pod/proxymux-client-4lgg7 1/1 Running 0 116m
pod/proxymux-client-zbcrg 1/1 Running 0 116m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.103.5.5 <none> 53/UDP,53/TCP,9153/TCP 121m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/csi-oci-node 2 2 2 2 2 <none> 122m
daemonset.apps/kube-flannel-ds 2 2 2 2 2 <none> 121m
daemonset.apps/kube-proxy 2 2 2 2 2 beta.kubernetes.io/os=linux 121m
daemonset.apps/node-termination-handler 0 0 0 0 0 oci.oraclecloud.com/oke-is-preemptible=true 121m
daemonset.apps/nvidia-gpu-device-plugin 0 0 0 0 0 <none> 122m
daemonset.apps/proxymux-client 2 2 2 2 2 node.info.ds_proxymux_client=true 122m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 121m
deployment.apps/kube-dns-autoscaler 1/1 1 1 121m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-56c7ffc89c 2 2 2 121m
replicaset.apps/kube-dns-autoscaler-6b69bf765c 1 1 1 121m
[opc@o-tmcntm ~]$
Tarefa 8: Excluir os Clusters do OKE usando o Terraform
Usamos o Terraform para nossa implantação, para que também possamos usar o Terraform para excluir a implantação completa.
-
Execute o comando
terraform destroy
para excluir todos os recursos relacionados aos três clusters do Kubernetes. -
Digite yes para aprovar o processo de exclusão. Levará alguns minutos para terminar.
-
Observe que a destruição foi concluída e todos os 229 recursos foram destruídos.
Confirmação
-
Autor - Iwan Hoogendoorn (Especialista em Rede OCI)
-
Colaborador - Ali Mukadam
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Use Terraform to Deploy Multiple Kubernetes Clusters across different OCI Regions using OKE and Create a Full Mesh Network using RPC
F96821-01
April 2024