Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Uso de Terraform para desplegar varios clusters de Kubernetes en diferentes regiones de OCI mediante OKE y creación de una red de malla completa mediante RPC
Introducción
En este tutorial, explicaremos cómo crear varios clusters de Kubernetes mediante Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) y desplegaremos estos clusters en tres países diferentes (regiones). Para acelerar el despliegue y desplegar los clusters de Kubernetes de forma consistente con la menor cantidad de errores de configuración, utilizaremos Terraform y algunos scripts bash personalizados.
También hemos desplegado de forma manual clusters únicos mediante el método de creación rápida y el método de creación personalizado.
Este tutorial es una actualización basada en esta documentación: Despliegue de varios clusters de Kubernetes en Oracle Cloud.
Objetivos
- Prepararemos nuestra computadora local con las herramientas necesarias para las acciones de Terraform en el entorno de Oracle Cloud Infrastructure (OCI). También configuraremos el entorno de OCI para autenticar solicitudes de nuestra computadora local para ejecuciones de Terraform y crear scripts de shell y Terraform para desplegar tres clusters de Kubernetes en OKE en diferentes regiones. Garantizaremos la comunicación entre clusters mediante la configuración de conexiones de intercambio de tráfico remoto (RPC) en los gateways de enrutamiento dinámico (DRG).
Tarea 1: Determinación de la topología (estrella frente a malla)
Estamos creando estos clústeres de Kubernetes para desplegar una aplicación basada en contenedores que se despliega en todas las regiones. Para permitir la comunicación entre estos clusters de Kubernetes, necesitamos tener algún tipo de comunicación de red. Por ahora, esto está fuera del alcance de este tutorial, pero necesitamos tomar algunas decisiones arquitectónicas por adelantado. Una de estas decisiones es determinar si queremos permitir la comunicación directa entre todas las regiones o queremos utilizar una región como centro para todas las comunicaciones y las otras como radio.
Topología de estrella: la topología de estrella permite la comunicación entre las regiones mediante una única región de hub. Por lo tanto, si los clusters de Kubernetes en San José desean comunicarse con los clusters de Kubernetes en Dubai, utilizarán Ámsterdam como centro de tránsito.
Topología de malla: la topología de malla permite la comunicación directa desde y hacia todas las regiones (clusters de Kubernetes). Por lo tanto, si los clusters de Kubernetes en San José desean comunicarse con los clusters de Kubernetes en Dubai, pueden comunicarse directamente.
En este tutorial, vamos a crear una topología de malla, y esta conectividad se realizará mediante DRG y RPC.
Tarea 2: Preparación del entorno para la autenticación y ejecución de scripts de Terraform
Antes de utilizar Terraform, debemos preparar nuestro entorno. Para utilizar Terraform, abra un terminal. En este tutorial, estamos utilizando la aplicación de terminal OS X.
-
Ejecute el siguiente comando para verificar que Terraform está instalado, agregado a su ruta de acceso y cuál es la versión.
Last login: Thu Apr 4 08:50:38 on ttys000 iwhooge@iwhooge-mac ~ % terraform -v zsh: command not found: terraform iwhooge@iwhooge-mac ~ %
-
Puede ver que no se encuentra el comando, lo que significa que Terraform no está instalado o que no se ha agregado a la variable de ruta de acceso.
Como puede ver, Terraform no está instalado, por lo que debemos instalarlo. Observará que no solo está instalando Terraform, sino que también son necesarios varios pasos para desplegar la aplicación Terraform y preparar el entorno para que nuestra solución completa de creación de scripts despliegue tres clusters de Kubernetes en tres regiones diferentes.
La siguiente imagen proporciona orientación sobre las tareas necesarias que se deben realizar.
Tarea 2.1: Instalación de Homebrew
Terraform se puede instalar con diferentes métodos. En este tutorial, instalaremos Terraform con Homebrew.
Homebrew es un gestor de paquetes para MacOS (y Linux) que se puede utilizar para instalar aplicaciones y sus dependencias necesarias son como apt
o yum
.
-
Instale Homebrew.
-
Ejecute el siguiente comando para instalar 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 ~ %
-
Haga clic en VOLVER/INTRO para continuar con la instalación.
- Tenga en cuenta que la instalación ha terminado correctamente.
- Copie los comandos adicionales para agregar Homebrew a la variable de ruta.
-
-
Ejecute el siguiente comando para agregar Homebrew a la variable de ruta.
iwhooge@iwhooge-mac ~ % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/iwhooge/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
Tarea 2.2: Uso de Homebrew para instalar Terraform
En esta tarea, utilizaremos Homebrew para instalar el paquete de Terraform.
-
Ejecute el siguiente comando para instalar el paquete de 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 ~ %
-
Ejecute el siguiente comando para verificar si Terraform está instalado y la versión.
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 ~ %
-
Tenga en cuenta que Homebrew se instala con la versión
1.5.7
de Terraform. -
Tenga en cuenta que esta es una versión antigua. Para actualizar la versión de Terraform, consulte Instalación de Terraform.
-
Para actualizar Terraform, debemos agregar el repositorio de Hashicorp a Homebrew. Ejecute el siguiente comando.
iwhooge@iwhooge-mac ~ % brew tap hashicorp/tap
-
Ejecute el siguiente comando para instalar Terraform desde el repositorio de 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 ~ %
-
Tenga en cuenta que Terraform se está actualizando de
1.5.7
a la versión1.7.5
.
-
Ejecute el siguiente comando para verificar que la versión de Terraform es la más reciente.
iwhooge@iwhooge-mac ~ % terraform -v Terraform v1.7.5 on darwin_arm64 iwhooge@iwhooge-mac ~ %
-
Tenga en cuenta que la nueva versión es
1.7.5
.
-
Tarea 2.3: Creación de claves RSA locales para la autenticación de OCI
Para permitir la autenticación con OCI mediante una clave de API, solo necesitamos generar una nueva clave privada y pública con este fin.
-
Ejecute el siguiente comando para cambiar el directorio al directorio principal.
iwhooge@iwhooge-mac ~ % cd ~/
-
Ejecute el siguiente comando para verificar que se encuentra en el directorio raíz.
iwhooge@iwhooge-mac ~ % pwd
-
Verifique que el directorio raíz sea correcto.
/Users/iwhooge
-
Ejecute el siguiente comando para crear un nuevo directorio que contenga la información para autenticarse con OCI.
iwhooge@iwhooge-mac ~ % mkdir .oci
-
Ejecute el siguiente comando para generar una clave 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)
-
Ejecute el siguiente comando para que el archivo de clave privada sea legible.
iwhooge@iwhooge-mac ~ % chmod 600 ~/.oci/4-4-2023-rsa-key.pem
-
Ejecute el siguiente comando para generar una clave RSA pública a partir de la clave 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 que se haya completado la escritura de claves.
writing RSA key
-
Ejecute el siguiente comando para ver el contenido de la clave RSA privada.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key.pem
-
Verifique el contenido de la clave RSA privada.
-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEA52+LJ+gp3MAJGtXTeQ/dmqq6Xh1zufK0yurLt/0w/DuxqEsL RT7x+Znz6EOVLx34Ul27QnHk7bhXaDCuwInnaOTOiS97AnLuFM08tvFksglnJssA JsszfTzUMNf0w4wtuLsJ5oRaPbVUa01TIm6HdwKAloIKYSn6z8gcvfLLItkyvPRo XXX w3yip+Yxr1YN3LjpDbZk4WTagKWoVQzp5nrfZlyU7ToZcMpUn/fIUsI= -----END RSA PRIVATE KEY-----
-
Ejecute el siguiente comando para ver el contenido de la clave RSA pública.
iwhooge@iwhooge-mac ~ % cat ~/.oci/4-4-2023-rsa-key-public.pem
-
Verifique el contenido de la clave RSA pública.
----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA52+LJ+gp3MAJGtXTeQ/d XXX mtHVtjLM1ftjYlaRSG5Xl/xdKMC8LH0bxpy3XXzLmDrYCP3LrhrIG8Xmuzsji6Hw TQIDAQAB -----END PUBLIC KEY----- iwhooge@iwhooge-mac ~ %
Tarea 2.4: Generación de claves SSH locales para la autenticación del host bastión
También necesitamos crear claves SSH locales para autenticarnos con el host de Bastion. Esta es otra clave que estamos utilizando para la autenticación con la consola de OCI (API).
-
Ejecute el siguiente comando para cambiar el directorio a su directorio SSH.
iwhooge@iwhooge-mac ~ % cd ~/.ssh/
-
Ejecute el siguiente comando para verificar que tiene una clave SSH pública y privada que se puede utilizar.
iwhooge@iwhooge-mac .ssh % ls -l -a
-
Tenga en cuenta que no tenemos ningún par de claves SSH. En este tutorial, generaremos un nuevo par de claves 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
-
Ejecute el siguiente comando para generar un nuevo par de claves 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):
-
Deje la frase de contraseña vacía y haga clic en INTRO.
Enter passphrase (empty for no passphrase):
-
Deje la frase de contraseña vacía y haga clic en INTRO.
Enter same passphrase again:
-
Tenga en cuenta que el nuevo par de claves SSH se guarda en las ubicaciones proporcionadas.
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 %
Tarea 2.5: Creación de una clave de API en la consola de OCI y adición de la clave pública a su cuenta de OCI
-
Tenemos la clave RSA creada en la tarea 2.3. Podemos utilizar esa clave RSA pública para crear una clave de API en la consola de OCI para la autenticación de OCI.
- Haga clic en perfil.
- Seleccione Mi Perfil.
-
Desplazar hacia abajo.
- Seleccione Claves de API.
- Haga clic en Agregar clave de API.
- Seleccione Pegar en la clave pública.
- Pegue la clave pública creada en la tarea 2.3.
- Haga clic en Agregar.
- Anote la ruta de acceso y el archivo en el que se debe pegar la configuración de autenticación de API generada.
- Anote la huella de clave de API para la clave de API que acaba de crear.
- Observe la configuración de autenticación de API.
- Haga clic en Copiar.
- Haga clic en Cerrar.
-
Pegue la configuración de autenticación de API en un archivo de texto temporal.
[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
-
Actualice la última línea de la configuración de autenticación de API y agregue la ruta de acceso correcta del archivo de clave privada creado en la tarea 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
-
Crear un archivo de configuración de autenticación de API de OCI.
iwhooge@iwhooge-mac ~ % nano ~/.oci/config iwhooge@iwhooge-mac ~ %
-
Copie la configuración de autenticación de API en el archivo. Utilice
CTRL + X
para salir de este archivo. -
Introduzca Y (Sí) para guardar el archivo.
-
Confirme el archivo que desea utilizar para guardar la configuración de autenticación de API.
-
Cuando el archivo se guarde correctamente, volverá al indicador de terminal.
Tarea 2.6: Recopilación de la información necesaria para su entorno de OCI
Necesitamos recopilar información para nuestros archivos de Terraform para la autenticación de OCI mediante la API. La mayor parte de la información ya se proporciona en el archivo de configuración de autenticación de API creado en la tarea 2.5.
-
Guarde la siguiente información para su uso posterior.
OCID de arrendamiento ocid1.tenancy.oc1..aaaaaaaabh2XXXvq OCID de usuario ocid1.user.oc1..aaaaaaaavgrXXX23aq Huella 30:XXX:ba:ee Región eu-frankfurt-1 Ruta de clave privada ~/.oci/4-4-2023-rsa-key.pem OCID de compartimento ocid1.compartment.oc1..aaaaaaaabgXXXnuq -
Lo único que necesitamos que no esté en el archivo de configuración de autenticación de API es el OCID de compartimento.
-
Para obtener el OCID de compartimento, vaya a Identidad, Compartimentos, Detalles de compartimento.
-
Puede ver el OCID del compartimento.
-
Haga clic en Copiar para copiar el OCID de compartimento. Guárdelo para su uso posterior.
-
Este es el compartimento en el que desplegará los clusters de Kubernetes.
Tarea 3: Creación de archivos y scripts de Terraform
Hemos completado la preparación de nuestra máquina local, incluida la configuración de claves de Terraform, RSA y SSH, la configuración del entorno de OCI (API) y la recopilación de toda la información esencial necesaria para autenticar Terraform con OCI. Ahora cree el script de Terraform.
En primer lugar, debemos verificar que estamos suscritos a las regiones en las que estamos desplegando nuestros clusters de Kubernetes. Si estamos realizando el despliegue en una región no suscrita, se producirá un error de autenticación y el despliegue fallará.
Para este tutorial, estamos utilizando las siguientes tres regiones para el despliegue: Ámsterdam, San José y Dubai.
-
Haga clic en el menú de selección de región.
- Desplazar hacia abajo.
- Haga clic en Gestionar regiones.
- Desplazar hacia abajo.
- Haga clic en la flecha para ver los 10 elementos siguientes.
- Tenga en cuenta que estamos suscritos a Amsterdam.
- Haga clic en la flecha para ver los 10 elementos siguientes.
- Ten en cuenta que estamos suscritos a Dubai.
- Tenga en cuenta que estamos suscritos a San José.
- Haga clic en la flecha para ver los 10 elementos siguientes.
-
Tenga en cuenta que hay algunas regiones a las que no estamos suscritos. Por ejemplo, si queremos desplegar uno de nuestros clusters de Kubernetes en Bogotá, primero necesitamos suscribirnos a la región de Bogotá.
-
En la siguiente imagen se muestra lo que estamos intentando lograr con Terraform.
- Estamos utilizando la computadora remota con Terraform.
- Esta computadora remota se autenticará con OCI.
- Después de la autenticación, utilizaremos Terraform para desplegar los tres clusters de Kubernetes siguientes con OKE.
- c1: Ámsterdam
- c2: San José
- c3: Dubái
Hemos utilizado los alias c1, c2 y c3 para facilitar la asignación de nombres a los componentes en OCI, de modo que sea más fácil reconocer los clusters según el nombre en lugar de un nombre generado de forma única.
-
Ejecute el siguiente comando para asegurarse de que está en el directorio raíz
iwhooge@iwhooge-mac ~ % pwd /Users/iwhooge
-
Ejecute el siguiente comando para crear un nuevo directorio denominado
terraform-multi-oke
yscripts
en el directorioterraform-multi-oke
.iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke iwhooge@iwhooge-mac ~ % mkdir terraform-multi-oke/scripts
-
Ejecute el siguiente comando para verificar que se ha creado el directorio
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
-
Ejecute el siguiente comando para cambiar la ruta al nuevo directorio
terraform-multi-oke
y asegúrese de que el directorio está vacío.iwhooge@iwhooge-mac ~ % cd terraform-multi-oke iwhooge@iwhooge-mac terraform-multi-oke % ls -l total 0 iwhooge@iwhooge-mac terraform-multi-oke %
-
Cree archivos dentro de los directorios
terraform-multi-oke
yterraform-multi-oke/scripts
. Los archivos y la estructura de carpetas deben tener este aspecto.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
Nota: También puede descargar los archivos del repositorio GitHub: oci-oke-terraform.
-
Actualice el archivo
terraform.tfvars
con los parámetros recopilados en la tarea 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 # =====================================================================
-
Si desea desplegar menos o más clusters de Kubernetes o desea cambiar las regiones, también puede hacerlo modificando las regiones en los archivos
terraform.tfvars
,contexts.tf
yproviders.tf
. Busque c1, c2 y c3 y realice cambios.-
terraform.tfvars
(Agregue o elimine clusters aquí; asegúrese de que al agregar clusters, utilice bloques de CIDR únicos).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
(Agregue o elimine clusters en el 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
(Agregue o elimine clusters como proveedor, asegúrese de modificar los parámetros de región y 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"] }
Nota: También puede descargar los archivos del repositorio GitHub: oci-oke-terraform.
-
Tarea 4: Ejecución de clusters de Terraform y OKE junto con los recursos necesarios (VCN, subredes, DRG, RPC, etc.)
Tenemos los scripts de Terraform en su lugar con el parámetro correcto. Ahora, ejecute los scripts y cree nuestro entorno que consta de tres clusters de Kubernetes en tres regiones diferentes.
-
Ejecute el siguiente comando para cambiar el directorio al directorio
terraform-multi-oke
.Last login: Fri Apr 5 09:01:47 on ttys001 iwhooge@iwhooge-mac ~ % cd terraform-multi-oke
-
Ejecute el comando
terraform init
para inicializar Terraform y descargar los módulos de Terraform necesarios para desplegar los scripts de Terraform.Asegúrese de que Terraform se ha inicializado correctamente.
-
Ejecute el comando
terraform plan
para planificar que Terraform realice una comprobación previa de si el código de Terraform es válido y verifique lo que se desplegará (este no es el despliegue real aún). -
Tenga en cuenta que Terraform agregará 229 nuevos recursos en OCI, y estos objetos están relacionados con los tres clusters de Kubernetes que planeamos desplegar.
-
Ejecute el comando
terraform apply
para aplicar Terraform y desplegar tres clusters de Kubernetes. -
Introduzca yes para aprobar el despliegue. El script de Terraform tardará unos 30 minutos en terminar.
- Tenga en cuenta que la aplicación se ha completado y que se han agregado 229 recursos nuevos.
- Copie la salida del comando SSH para acceder a los hosts bastión y de operador para las tareas de gestión de cluster de Kubernetes.
-
En la siguiente imagen se muestra el despliegue actual con Terraform.
-
Ejecute el comando SSH para conectarse al host de operador de 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.
-
Introduzca yes para continuar con el host bastión.
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.
-
Introduzca yes para continuar nuevamente con el host del 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
-
Tenga en cuenta que ahora está conectado al operador.
-
-
Ejecute el siguiente comando para verificar los clusters de Kubernetes desplegados y en ejecución desde el host del operador.
[opc@o-tmcntm ~]$ kubectx c1 c2 c3 [opc@o-tmcntm ~]$
En la siguiente imagen se muestra desde donde está configurando la conexión SSH al host bastión y desde el host bastión al host operador.
Ahora, hemos desplegado tres clusters de Kubernetes en las distintas regiones. Eche un vistazo a los recursos desplegados desde un nivel superior en la consola de OCI.
-
Verificación de la consola de OCI (Ámsterdam).
- Seleccione Ámsterdam como Región.
- Vaya a Red y VCN.
- Revise que la VCN c1 se ha creado aquí.
- Vaya a Servicios para desarrolladores y Clusters de Kubernetes (OKE).
- Revise que el cluster de Kubernetes c1 se ha creado aquí.
- Vaya a Recursos informáticos e Instancias.
- Revise que el host bastión y los dos nodos de trabajador que pertenecen al cluster de Kubernetes c1 se crean aquí.
- Vaya a Red, Conectividad del cliente y Gateway de enrutamiento dinámico.
- Revise que el DRG se haya creado aquí.
- Vaya a Identidad y a Políticas.
- Revise que aquí se crean tres políticas de identidad.
-
Verificación de la consola de OCI (San José).
- Seleccione San José como Región.
- Vaya a Red y VCN.
- Revise que la VCN c2 se ha creado aquí.
- Vaya a Servicios para desarrolladores y Clusters de Kubernetes (OKE).
- Revise que el cluster de Kubernetes c2 se ha creado aquí.
- Vaya a Recursos informáticos e Instancias.
- Revise que los dos nodos de trabajador que pertenecen al cluster de Kubernetes c2 se crean aquí.
- Vaya a Red, Conectividad del cliente y Gateway de enrutamiento dinámico.
- Revise que el DRG se haya creado aquí.
- Vaya a Identidad y a Políticas.
- Revise que aquí se crean tres políticas de identidad.
-
Verificación de la consola de OCI (Dubái)
- Seleccione Dubái como región.
- Vaya a Red y VCN.
- Revise que la VCN c3 se ha creado aquí.
- Vaya a Servicios para desarrolladores y Clusters de Kubernetes (OKE).
- Revise que el cluster de Kubernetes c3 se ha creado aquí.
- Vaya a Recursos informáticos e Instancias.
- Revise que los dos nodos de trabajador que pertenecen al cluster de Kubernetes c3 se crean aquí.
- Vaya a Red, Conectividad del cliente y Gateway de enrutamiento dinámico.
- Revise que el DRG se haya creado aquí.
- Vaya a Identidad y a Políticas.
- Revise que aquí se crean tres políticas de identidad.
Tarea 5: Establecer conexiones RPC
Establezca las conexiones entre los distintos anexos de RPC. Repasemos primero en las diferentes regiones.
-
Asociaciones de conexiones de intercambio de tráfico remotas en Ámsterdam.
Asegúrese de que está conectado a la región Ámsterdam.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c1.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Tenga en cuenta que hay dos asociaciones de conexión de intercambio de tráfico remoto configuradas.
- Tenga en cuenta que ambas asociaciones de conexión de intercambio de tráfico remoto son nuevas y no se han conectado.
-
Asociaciones de conexiones de intercambio de tráfico remoto en San José.
Asegúrese de que está conectado a la región San José.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c2.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Tenga en cuenta que hay dos asociaciones de conexión de intercambio de tráfico remoto configuradas.
- Tenga en cuenta que ambas asociaciones de conexión de intercambio de tráfico remoto son nuevas y no se han conectado.
-
Asociaciones de conexiones de intercambio de tráfico remotas en Dubái.
Asegúrese de estar conectado a la región Dubai.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c3.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Tenga en cuenta que hay dos asociaciones de conexión de intercambio de tráfico remoto configuradas.
- Tenga en cuenta que ambas asociaciones de conexión de intercambio de tráfico remoto son nuevas y no se han conectado.
Recopilar todos los OCID de RPC
-
Para configurar las conexiones de intercambio de tráfico RPC entre todas las regiones, debemos recopilar el OCID de estas asociaciones de conexión de intercambio de tráfico RPC.
- Asegúrese de que está conectado a la región Ámsterdam.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c1.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Haga clic en la conexión con intercambio de tráfico remoto (
rpc-to-c2
).
-
Haga clic en Mostrar.
-
Haga clic en Copiar.
Repita el proceso para todas las conexiones de intercambio de tráfico remoto en todas las regiones de todos los DRG y guárdelas.
Ahora, hemos recopilado los siguientes OCID de conexión de intercambio de tráfico remoto:
-
c1 RPC de DRG
RPC local OCID de RPC local RPC remota C1: de rpc a c2 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaxxxxxxuxfq C2: de rpc a c1 C1: de rpc a c3 ocid1.remotepeeringconnection.oc1.eu-amsterdam-1.aaaaaaaxxxxxXs4ya C3: de rpc a c1 -
c2 RPC de DRG
RPC local OCID de RPC local RPC remota C2: de rpc a c1 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaxxxxXXXvmya C1: de rpc a c2 C2: de rpc a c3 ocid1.remotepeeringconnection.oc1.us-sanjose-1.aaaaaaaaxxxxXXen2a C3: de rpc a c2 -
c3 RPC de DRG
RPC local OCID de RPC local RPC remota C3: de rpc a c1 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaapxxxXXXcosq C1: de rpc a c3 C3: de rpc a c2 ocid1.remotepeeringconnection.oc1.me-dubai-1.aaaaaaaaxxxpXXXs5tq C2: de rpc a c3
Creación de Peerings de RPC
Configure el intercambio de tráfico en C1 en C2 y C3. Esto configurará automáticamente el intercambio de tráfico para C1 en el lado C2 y C3, y la configuración del intercambio de tráfico en C2 en C3 configurará automáticamente el intercambio de tráfico para C2 en el lado C3.
Configure los intercambios C1 (Ámsterdam).
-
En la siguiente imagen se muestra qué RPC estamos configurando.
- Asegúrese de que está conectado a la región Ámsterdam.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c1.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Haga clic en la primera asociación de conexión de intercambio de tráfico remoto (
rpc-to-c2
). Aquí configurará la conexión hacia San José.
-
Haga clic en Definir conexión.
- Seleccione la región San José.
- Introduzca el OCID de RPC del lado de San José que se crea para c1 (Ámsterdam).
- Haga clic en Definir conexión.
- El estado del intercambio de tráfico cambiará a Pendiente y tardará un minuto en completarse.
- Haga clic en la segunda asociación de conexión de intercambio de tráfico remoto (
rpc-to-c3
). Aquí configurará la conexión hacia Dubai.
-
Haga clic en Definir conexión.
- Seleccione la región Dubái.
- Introduzca el OCID de RPC del lado de Dubai que se crea para c1 (Ámsterdam).
- Haga clic en Definir conexión.
Configure el intercambio de tráfico C2 (San José).
-
En la siguiente imagen se muestra qué RPC estamos configurando.
- El estado del intercambio de tráfico cambiará a Pendiente y tardará un minuto en completarse.
- Haga clic en el menú de regiones y cambie de Ámsterdam a la región de San José.
- Seleccione la región San José.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c2.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Tenga en cuenta que la conexión entre Ámsterdam y San José ahora está conectada. Esto se hace desde el lado de Amsterdam.
- Tenga en cuenta que el estado de intercambio de tráfico de San José (c2) a Dubai (c3) sigue siendo nuevo.
- Haga clic en la segunda asociación de conexión de intercambio de tráfico remoto (
rpc-to-c3
). Aquí configurará la conexión hacia Dubai.
-
Haga clic en Definir conexión.
- Seleccione la región Dubái.
- Introduzca el OCID de RPC del lado de Dubai que se crea para c2 (San José).
- Haga clic en Definir conexión.
-
El estado del intercambio de tráfico cambiará a Pendiente y tardará un minuto en completarse.
La siguiente imagen ilustra el intercambio de tráfico RPC de malla completa que hemos realizado.
-
Verifique el intercambio de tráfico de conexiones.
- Asegúrese de que está conectado a la región San José.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c1.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Tenga en cuenta que ambas asociaciones de conexión de intercambio de tráfico remoto tienen el estado de intercambio de tráfico.
- Asegúrese de que está conectado a la región San José.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c2.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Tenga en cuenta que ambas asociaciones de conexión de intercambio de tráfico remoto tienen el estado de intercambio de tráfico.
- Asegúrese de estar conectado a la región Dubai.
- Navegue hasta Red, Conectividad del cliente, Gateways de enrutamiento dinámico y c3.
- Haga clic en Asociaciones de conexiones de intercambio de tráfico remoto.
- Tenga en cuenta que ambas asociaciones de conexión de intercambio de tráfico remoto tienen el estado de intercambio de tráfico.
Tarea 6: Uso del visualizador de red para verificar las conexiones de RPC
Realice una comprobación adicional para asegurarse de que la RPC se ha configurado correctamente con Network Visualizer.
- Haga clic en el menú de hamburguesa en la esquina superior izquierda.
- Haga clic en Red.
- Haga clic en Visualizador de red.
- Asegúrese de que está conectado a la región Ámsterdam.
- Tenga en cuenta que la región de Amsterdam es c1.
- Tenga en cuenta las conexiones desde Ámsterdam a San José y Dubai.
- Asegúrese de que está conectado a la región San José.
- Tenga en cuenta que la región de San José es c2.
- Tenga en cuenta las conexiones de San José a Ámsterdam y Dubai.
- Asegúrese de estar conectado a la región Dubai.
- Tenga en cuenta que la región de Dubai es c3.
- Tenga en cuenta las conexiones desde Dubai a Ámsterdam y San José.
Tarea 7: Uso del bastión y el operador para comprobar el funcionamiento de la conectividad
Hemos creado los clusters de Kubernetes (en las tres regiones diferentes) y conectado las regiones mediante RPC. Ahora podemos utilizar el host de operador para verificar que el operador puede gestionar los clusters de Kubernetes.
-
Ejecute el siguiente comando (que se proporcionó después de la finalización del 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 ~]$
-
Ejecute el siguiente comando que iterará mediante un bucle for a través de cada cluster de Kubernetes (c1, c2 y c3) y recuperará el estado de los nodos de trabajador.
[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 ~]$
Ejecute el siguiente comando en el terminal después de conectarse al host del operador.
for c in c1 c2 c3; do kubectx $c kubectl get nodes done
-
Observe la salida de todos los nodos de todos los clusters de Kubernetes desplegados mediante el script de Terraform.
Ejecute el comando kubectl get all -n kube-system
con el bucle 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 ~]$
Tarea 8: Supresión de los clusters de OKE con Terraform
Hemos utilizado Terraform para nuestro despliegue, por lo que también podemos utilizar Terraform para suprimir el despliegue completo.
-
Ejecute el comando
terraform destroy
para suprimir todos los recursos relacionados con los tres clusters de Kubernetes. -
Introduzca yes para aprobar el proceso de supresión. La finalización tardará unos minutos.
-
Tenga en cuenta que la destrucción se ha completado y que se han destruido los 229 recursos.
Agradecimientos
-
Autor: Iwan Hoogendoorn (especialista en redes de OCI)
-
Contribuyente: Ali Mukadam
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Use Terraform to Deploy Multiple Kubernetes Clusters across different OCI Regions using OKE and Create a Full Mesh Network using RPC
F96815-01
April 2024