Inicio rápido: Implementación de un clúster de Azure Kubernetes Service mediante la CLI de Azure

Azure Kubernetes Service (AKS) es un servicio de Kubernetes administrado que le permite implementar y administrar clústeres rápidamente. En este inicio rápido realizará lo siguiente:

  • Implementación de un clúster de AKS con la CLI de Azure.
  • Ejecución de una aplicación de varios contenedores de ejemplo con un servidor front-end web y una instancia de Redis en el clúster.

Captura de pantalla de cómo acceder a la aplicación de ejemplo de Azure Vote.

En esta guía rápida se presupone un conocimiento básico de los conceptos de Kubernetes. Para más información, consulte Conceptos básicos de Kubernetes de Azure Kubernetes Service (AKS).

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Para más información sobre cómo crear un grupo de nodos de Windows Server, consulte Creación de un clúster de AKS que admita contenedores de Windows Server.

Requisitos previos

  • En este artículo se necesita la versión 2.0.64 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

  • La identidad que usa para crear el clúster tiene los permisos mínimos adecuados. Para más información sobre el acceso y la identidad en AKS, consulte Opciones de acceso e identidad en Azure Kubernetes Service (AKS).

  • Si tiene varias suscripciones de Azure, seleccione el id. de suscripción adecuado en el que se deben facturar los recursos con el comando az account.

  • Compruebe que los proveedores Microsoft.OperationsManagement y Microsoft.OperationalInsights están registrados en la suscripción. Estos son proveedores de recursos de Azure necesarios para admitir Container Insights. Ejecute los siguientes comandos para comprobar el estado del registro:

    az provider show -n Microsoft.OperationsManagement -o table
    az provider show -n Microsoft.OperationalInsights -o table
    

    Si no lo están, registre Microsoft. OperationsManagement y Microsoft. OperationalInsights mediante los comandos siguientes:

    az provider register --namespace Microsoft.OperationsManagement
    az provider register --namespace Microsoft.OperationalInsights
    

Nota

Si planea ejecutar los comandos de este inicio rápido localmente en lugar de en Azure Cloud Shell, hágalo con privilegios administrativos.

Crear un grupo de recursos

Un grupo de recursos de Azure es un grupo lógico en el que se implementan y administran recursos de Azure. Cuando crea un grupo de recursos, se le pide que especifique una ubicación. Esta ubicación es:

  • La ubicación de almacenamiento de los metadatos del grupo de recursos.
  • El lugar en el que se ejecutan los recursos en Azure si no se especifica otra región al crearlos.

En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.

Cree un grupo de recursos con el comando az group create.

az group create --name myResourceGroup --location eastus

El ejemplo de salida siguiente es similar a la creación correcta del grupo de recursos:

{
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Creación de un clúster de AKS

Cree un clúster de AKS con el comando az aks create y el parámetro --enable-addons monitoring y --enable-msi-auth-for-monitoring para habilitar Azure Monitor Container insights con autenticación de identidad administrada (vista previa). En el ejemplo siguiente se crea un clúster denominado myAKSCluster con un nodo y se habilita una identidad administrada asignada por el sistema:

az aks create -g myResourceGroup -n myAKSCluster --enable-managed-identity --node-count 1 --enable-addons monitoring --enable-msi-auth-for-monitoring  --generate-ssh-keys

Transcurridos unos minutos, el comando se completa y devuelve información en formato JSON sobre el clúster.

Nota

Al crear un clúster de AKS, se crea automáticamente un segundo grupo de recursos para almacenar los recursos de dicho clúster. Para más información, consulte ¿Por qué se crean dos grupos de recursos con AKS?

Conectarse al clúster

Para administrar un clúster de Kubernetes, use kubectl, el cliente de línea de comandos de Kubernetes. Si usa Azure Cloud Shell, kubectl ya está instalado.

  1. Instale kubectl localmente mediante el comando az aks install-cli:

    az aks install-cli
    
  2. Para configurar kubectl para conectarse a su clúster de Kubernetes, use el comando az aks get-credentials. El siguiente comando:

    • Descarga las credenciales y configura la CLI de Kubernetes para usarlas.
    • Usa ~/.kube/config, la ubicación predeterminada del archivo de configuración de Kubernetes. Puede especificar otra ubicación para el archivo de configuración de Kubernetes con el argumento --file.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Compruebe la conexión al clúster con el comando kubectl get. Este comando devuelve una lista de los nodos del clúster.

    kubectl get nodes
    

    En el ejemplo de salida siguiente se muestra el nodo único creado en los pasos anteriores. Asegúrese de que el estado del nodo es Listo:

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31718369-0   Ready    agent   6m44s   v1.12.8
    

Implementación de la aplicación

Un archivo de manifiesto de Kubernetes define el estado deseado del clúster, por ejemplo, qué imágenes de contenedor se van a ejecutar.

En este inicio rápido se usa un manifiesto para crear todos los objetos necesarios para ejecutar la aplicación Azure Vote. Este manifiesto incluye dos implementaciones de Kubernetes:

  • Las aplicaciones de Python de ejemplo de Azure Vote.
  • Una instancia de Redis.

También se crean dos servicios de Kubernetes:

  • Un servicio interno para la instancia de Redis.
  • Un servicio externo para acceder a la aplicación Azure Vote desde Internet.
  1. Cree un archivo denominado azure-vote.yaml y cópielo en el siguiente código manifiesto.

    • Si usa Azure Cloud Shell, este archivo se puede crear mediante code, vi o nano como si trabajara en un sistema físico o virtual.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 6379
              name: redis
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-back
    spec:
      ports:
      - port: 6379
      selector:
        app: azure-vote-back
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 80
            env:
            - name: REDIS
              value: "azure-vote-back"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-front
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: azure-vote-front
    

    Para ver un desglose de los archivos de manifiesto de YAML, consulte Implementaciones y manifiestos de YAML.

  2. Implemente la aplicación mediante el comando kubectl apply y especifique el nombre del manifiesto de YAML:

    kubectl apply -f azure-vote.yaml
    

    El ejemplo siguiente se parece a la salida que muestra las implementaciones y servicios creados correctamente:

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-front" created
    

Prueba de la aplicación

Cuando se ejecuta la aplicación, un servicio de Kubernetes expone el front-end de la aplicación a Internet. Este proceso puede tardar unos minutos en completarse.

Para supervisar el progreso, utilice el comando kubectl get service con el argumento --watch.

kubectl get service azure-vote-front --watch

La salida de EXTERNAL-IP del servicio azure-vote-front aparecerá inicialmente como pendiente.

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

Una vez que la dirección EXTERNAL-IP cambia de pendiente a una dirección IP pública real, use CTRL-C para detener el kubectl proceso de inspección. En la salida del ejemplo siguiente se muestra una dirección IP pública válida asignada al servicio:

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Para ver la aplicación Azure Vote en acción, abra un explorador web en la dirección IP externa del servicio.

Captura de pantalla de cómo acceder a la aplicación de ejemplo de Azure Vote.

Eliminación del clúster

Para evitar cargos de Azure, si no tiene previsto seguir los tutoriales siguientes, limpie los recursos innecesarios. Use el comando az group delete para quitar el grupo de recursos, el servicio de contenedor y todos los recursos relacionados.

az group delete --name myResourceGroup --yes --no-wait

Nota

El clúster de AKS se ha creado con una identidad administrada asignada por el sistema (la opción de identidad predeterminada usada en este inicio rápido), la identidad se administra por la plataforma y no es necesaria su eliminación.

Pasos siguientes

En este inicio rápido, ha implementado un clúster de Kubernetes y luego ha implementado en él una aplicación simple de varios contenedores.

Para obtener más información sobre AKS y un ejemplo completo desde el código hasta la implementación, continúe con el tutorial del clúster de Kubernetes.

Este inicio rápido es para fines introductorios. Para instrucciones sobre cómo crear soluciones completas con AKS para producción, consulte Guía de soluciones de AKS.