Inicio rápido: Implementación de un host de contenedor de Linux en Azure para un clúster de AKS mediante la CLI de Azure

Comience a trabajar con el host de contenedor de Linux en Azure mediante la CLI de Azure para implementar un host de contenedor de Linux en Azure para un clúster de AKS. Después de instalar los requisitos previos, creará un grupo de recursos, creará un clúster de AKS, se conectará al clúster y ejecutará una aplicación de ejemplo con varios contenedores en el clúster.

Requisitos previos

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. Al crear un grupo de recursos, es necesario especificar 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.

Para crear un grupo de recursos denominado testAzureLinuxResourceGroup en la región eastus, realice este paso:

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

az group create --name testAzureLinuxReourceGroup --location eastus

La siguiente salida muestra que el grupo de recursos se creó correctamente:

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

Nota:

En el ejemplo anterior se usa eastus, pero los clústeres de host de contenedor de Linux en Azure están disponibles en todas las regiones.

Creación de un clúster de host de contenedor de Linux en Azure

Cree un clúster de AKS mediante el comando az aks create con el parámetro --os-sku para aprovisionar el clúster de AKS con una imagen de Linux en Azure. En el ejemplo siguiente se crea un clúster de Linux en Azure denominado testAzureLinuxCluster con un nodo:

az aks create --name testAzureLinuxCluster --resource-group testAzureLinuxResourceGroup --os-sku AzureLinux

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

Conectarse al clúster

Para administrar un clúster de Kubernetes, use kubectl, el cliente de línea de comandos de Kubernetes.

  1. Para configurar kubectl para conectarse a su clúster de Kubernetes, use el comando az aks get-credentials.
az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
  1. Para comprobar la conexión al clúster, ejecute el comando kubectl get. El comando devuelve una lista de los pods.
  kubectl get pods --all-namespaces

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

Si no va a continuar con los siguientes tutoriales, para evitar los cargos de Azure, elimine los recursos innecesarios. Use el comando az group delete para eliminar el grupo de recursos y todos los recursos relacionados.

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

Pasos siguientes

En este inicio rápido, ha implementado un clúster de host de contenedor de Linux en Azure. Para obtener más información sobre el host de contenedor de Linux en Azure y recorrer un ejemplo completo de implementación y administración de clústeres, continúe con el tutorial sobre el host de contenedor de Linux en Azure.