Codigo de ejemplo para crear Azure Kubernetes Service con Terraform

En este código de ejemplo, te guiaremos en la configuración de Azure Kubernetes Service (AKS) usando Azure Pipelines. Se asume que el desarrollador tiene conocimientos básicos de Azure, Terraform, Docker, GitFlow y Kubernetes. Hay un video de demostración disponible y se ofrecen planes de soporte personalizados para asistencia adicional.

Los temas cubiertos en la demostración incluyen:

  • Creación de Infraestructura: Aprende a crear infraestructura para diferentes entornos como Desarrollo, Pruebas y Producción.
  • Concepto GitFlow: Comprende el flujo de trabajo GitFlow para un control de versiones efectivo.
  • Creación de Resource Group: Usa un pipeline para crear un resource group dedicado para cada entorno.
  • Creación de VNET: Implementa un pipeline para configurar una Red Virtual (VNET) para cada entorno.
  • Configuración de Azure Log Analytics: Crea Azure Log Analytics para cada entorno mediante un pipeline.
  • Conectividad con AKS: Aprende a conectarte a AKS usando Kubectl.
  • Despliegue de imagen Docker: Comprende cómo desplegar una imagen Docker en AKS.
  • Configuración de Lens: Configura y utiliza Lens, un IDE de Kubernetes.
  • Limpieza de Recursos: Descubre cómo usar Pipelines para destruir de forma segura recursos creados previamente.
Conocimientos recomendados:
  • Experiencia en algún lenguaje de programación: Es esencial para entender el código base.
  • Azure Portal y Azure DevOps: Experiencia o conocimiento previo en Azure Portal y Azure DevOps será beneficioso.
  • Dominio de GIT: Comprensión sólida y experiencia con GIT, incluyendo conceptos básicos de GitFlow.
  • Comandos Docker: Experiencia con comandos Docker como pull, push y tag para gestionar imágenes de contenedores.
  • Kubectl y AKS: Se recomienda experiencia práctica usando Kubectl con Azure Kubernetes Service (AKS).
Prerrequisitos:
  • Ejemplos de código previos: Se asume que tienes un buen entendimiento del código explicado en los ejemplos anteriores.
  • Terminal Bash (WSL en Windows 10): Usaremos Terminal Bash, preferiblemente con WSL en Windows 10.
  • Azure CLI >= 2.56: Asegúrate de tener Azure CLI versión 2.56 o superior.
  • Terraform >= 1.64: Instala Terraform versión 1.64 o posterior.
  • kubectl >= 1.28: Asegúrate de tener Kubectl versión 1.28 o posterior.
  • Cuenta de Azure activa: Necesitas al menos una cuenta principal activa en Azure Portal.
  • Organización de Azure DevOps: Vincula tu organización al mismo directorio que la cuenta principal de Azure.
  • Cuenta en Docker Hub: Ten una cuenta activa en Docker Hub para gestionar imágenes de contenedores.
  • Lens IDE: Instala la última versión del IDE Lens para gestión de Kubernetes.
  • Proyectos en Azure DevOps de ejemplos anteriores: Utiliza los proyectos creados en los ejemplos anteriores para mantener continuidad.
Verificando Prerrequisitos:

Verificando la versión de AZ CLI

az -v
azure-cli                         2.56.0

core                              2.56.0
telemetry                          1.1.0

Dependencies:
msal                            1.24.0b2
azure-mgmt-resource             23.1.0b2

Verificando la versión de Terraform

terraform -v
Terraform v1.6.4
on linux_amd64

Verificar acceso a imagen ubicada en mi repositorio

docker pull registry.hub.docker.com/jbaldeon/slave-terraform:7
docker pull registry.hub.docker.com/jbaldeon/nettools:2

Verificando la versión de Kubectl

kubectl version
Client Version: v1.28.4
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Configuración Inicial:

Vinculando nuestra PC al portal de Azure a través de nuestra cuenta de Microsoft

az login

Configurando para interactuar con Azure DevOps

export AZDO_PERSONAL_ACCESS_TOKEN=MY_CREATED_TOKEN_ON_AZURE_DEVOPS
export AZDO_ORG_SERVICE_URL=https://dev.azure.com/MY_AZURE_DEVOPS_ORGANIZATION
Comandos para ejecutar este ejemplo:

Validando que nuestro código y configuraciones sean correctos

terraform init -reconfigure -backend-config="variables/backend_dev.conf" && terraform validate && terraform plan -var-file="variables/variable_dev.tfvars"

Crear los recursos

terraform apply -var-file="variables/variable_dev.tfvars" -auto-approve
Comandos para destruir este ejemplo:

Validando que nuestro código y configuraciones sean correctos

terraform init -reconfigure -backend-config="variables/backend_dev.conf" && terraform validate && terraform plan -var-file="variables/variable_dev.tfvars" -destroy

Destruyendo los recursos

terraform apply -var-file="variables/variable_dev.tfvars" -auto-approve -destroy
Conectando a AKS:
az account set --subscription SET_YOUR_SUBSCRIPTION
az aks get-credentials --resource-group SET_YOUR_RG --name SET_YOUR_AKS_NAME --overwrite-existing
ls -al ~/.kube/config

Copiar kubeconfig a Windows

mkdir /mnt/c/Users/SET_WINDOWS_USER/.kube
cp ~/.kube/config /mnt/c/Users/SET_WINDOWS_USER/.kube/

Cambiar entre clusters

kubectl config use-context SET_YOUR_AKS_NAME
Probando comandos K8S:
kubectl get ns
kubectl -n kube-system get po

Creando un deployment en AKS:

kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nettools
  namespace: default
  labels:
    app: nettools
    version: v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nettools
      version: v1
  template:
    metadata:
      labels:
        app: nettools
        version: v1
    spec:
      containers:
        - name: nettools
          image: jbaldeon/nettools:2
          command:
            - sh
            - '-c'
            - sleep 3000
          ports:
            - containerPort: 22
              protocol: TCP
          imagePullPolicy: Always
      restartPolicy: Always
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 1
EOF

Price: USD $5

  • Jimmy Baldeón

  • 19 december, 2023

Asegura tu copia ahora. Después del pago, recibirás un correo con el enlace de descarga. ¡Innovemos juntos!

Compra y descarga este código de ejemplo

Desbloquea todo el potencial de Terraform y Azure Pipeline sin esfuerzo con mis asequibles y meticulosamente elaborados códigos de ejemplo. Eleva tus proyectos sin complicaciones. Si encuentras dificultades para adaptar el código a tus necesidades, no te preocupes: ofrezco planes de soporte integrales adaptados para asistirte en cada paso. Elige el nivel de soporte que mejor se adapte a ti y construyamos juntos con confianza.

Planes de Soporte

Basic
$25 por hora
Minimo 1 hora
Consultorias verbales
Soporte rapido sobre nuestros productos
Standard
$200 por 8 horas
1 dia de soporte
Soporte tecnico
Capacitacion uno a uno
Soporte en Azure Cloud
Platinum
$1000 por 40 horas
1 semana de soporte
Soporte de proyecto
Construccion de microservicios
Creacion de pipelines en Azure
Automatizacion de infraestructura cloud
Hola, ¿cuál es tu consulta?