Tutorial de despliegue de Kubernetes en Oracle Cloud con OKE (Oracle Container Engine for Kubernetes)

·

·

Introducción

En este tutorial serio y detallado aprenderemos a desplegar un clúster de Kubernetes en Oracle Cloud Infrastructure (OCI) utilizando el servicio Oracle Container Engine for Kubernetes (OKE). Veremos los pasos necesarios, las mejores prácticas y configuraciones recomendadas para obtener un entorno productivo y escalable.

Requisitos Previos

  • Cuenta activa en Oracle Cloud con permisos de administrador o el rol adecuado.
  • OCI CLI instalada y configurada (Guía de instalación).
  • kubectl instalado (Documentación oficial).
  • Conocimientos básicos de redes (VCN, subredes), IAM y Kubernetes.

1. Configuración de OCI CLI

Luego de instalar el OCI CLI, asegúrate de tener tu perfil configurado. Ejecuta:

oci setup config

Sigue las indicaciones para definir tenancy OCID, user OCID, region y clave API.

2. Crear un Compartimento

Recomendamos separar recursos en compartimentos. Para crear uno nuevo:

oci iam compartment create --compartment-id ltRoot-Compartment-OCIDgt 
  --name K8s-Compartment 
  --description Compartimento para OKE

Guarda el OCID del compartimento resultante.

3. Red de Máquina Virtual (VCN) y Subredes

OKE requiere una VCN y subredes públicas/privadas. OCI ofrece un asistente, pero aquí mostramos comandos mínimos:

  1. Crear VCN:
  2. oci network vcn create --compartment-id ltcompartment-ocidgt 
        --display-name oke-vcn 
        --cidr-block 10.0.0.0/16
  3. Obtener OCID de la VCN:
  4. VCN_OCID=(oci network vcn list --compartment-id ltcompartment-ocidgt --display-name oke-vcn --query data[0].id --raw-output)
  5. Crear subred pública:
  6. oci network subnet create --compartment-id ltcompartment-ocidgt 
        --vcn-id VCN_OCID 
        --display-name oke-subnet-public 
        --cidr-block 10.0.1.0/24 
        --prohibit-public-ip-on-vnic false
  7. Crear subred privada:
  8. oci network subnet create --compartment-id ltcompartment-ocidgt 
        --vcn-id VCN_OCID 
        --display-name oke-subnet-private 
        --cidr-block 10.0.2.0/24 
        --prohibit-public-ip-on-vnic true

4. Crear Cluster OKE

Puedes crear el clúster desde la consola o con OCI CLI. A continuación el ejemplo CLI:

oci ce cluster create --compartment-id ltcompartment-ocidgt 
  --name oke-cluster 
  --vcn-id VCN_OCID 
  --kubernetes-version v1.24.10 
  --pod-subnet-id ltprivate-subnet-ocidgt 
  --service-subnet-id ltpublic-subnet-ocidgt

Guarda el cluster-OCID resultante y espera a que el estado sea ACTIVE.

5. Crear Pool de Nodos

Creamos un Node Pool con varias instancias. Ajusta shape y count según tus necesidades:

oci ce node-pool create --compartment-id ltcompartment-ocidgt 
  --cluster-id ltcluster-ocidgt 
  --name oke-nodepool 
  --kubernetes-version v1.24.10 
  --node-shape VM.Standard2.1 
  --node-shape-config {memoryInGBs:8,ocpus:1} 
  --quantity-per-subnet 2 
  --subnet-ids [ltpublic-subnet-ocidgt]

Verifica el estado del node pool:

oci ce node-pool get --cluster-id ltcluster-ocidgt --node-pool-id ltnodepool-ocidgt --query data.lifecycle-state

6. Configurar kubectl

Descargamos el kubeconfig del clúster:

oci ce cluster create-kubeconfig --cluster-id ltcluster-ocidgt 
  --file HOME/.kube/config 
  --region us-phoenix-1 
  --token-version 2.0.0

Prueba la conexión:

kubectl get nodes

7. Desplegar una Aplicación de Ejemplo

Vamos a crear un Deployment de NGINX y un Service de tipo LoadBalancer:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.23
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-lb
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
  - port: 80
    targetPort: 80

Aplica el manifiesto:

kubectl apply -f nginx-deployment.yaml

Verifica el external IP:

kubectl get svc nginx-lb

8. Gestión y Escalado

  • Autoscaling de nodos: con OKE Node Pool Auto Scaling (más info).
  • Horizontal Pod Autoscaler:
  • kubectl autoscale deployment nginx-deploy --cpu-percent=50 --min=3 --max=10
  • Monitoreo: integra OCI Monitoring y Logging (guía).

9. Seguridad y Buenas Prácticas

  • Usar Network Policies para aislar pods.
  • Implementar Pod Security Standards.
  • Controlar acceso con RBAC y IAM de OCI.
  • Actualizar versiones de Kubernetes y parches de seguridad regularmente.

Resumen de Recursos

Recurso Descripción
VCN Red virtual para el clúster y los nodos.
Subredes Pública para LoadBalancers, privada para nodos.
OKE Cluster Plano de control gestionado por OCI.
Node Pool Conjunto de instancias para ejecutar pods.
LoadBalancer Servicio exponiendo aplicaciones al exterior.

Conclusión

La combinación de Kubernetes con Oracle Cloud y OKE permite desplegar aplicaciones de forma rápida, segura y escalable. Siguiendo este tutorial, podrás tener un entorno funcional y con buenas prácticas listas para producción. Explora más configuraciones avanzadas y adáptalas a tus necesidades.

© 2024 Tutorial OKE en Oracle Cloud


Leave a Reply

Your email address will not be published. Required fields are marked *