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!
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.