Compartir vía


Acceso a los recursos de Kubernetes mediante Azure Portal

En este artículo, aprenderá a acceder y administrar los recursos de Azure Kubernetes Service (AKS) mediante Azure Portal.

Antes de empezar

Para visualizar los recursos de Kubernetes en Azure Portal, necesita un clúster de AKS. Se admite cualquier clúster, pero si se utiliza la integración de Microsoft Entra, el clúster tiene que utilizar la integración de Microsoft Entra administrado por AKS. Si su clúster utiliza la integración de Microsoft Entra ID heredada, puede actualizarlo en el portal o mediante la CLI de Azure. También puede usar Azure Portal para crear un nuevo clúster de AKS.

Visualización de recursos de Kubernetes

  1. En el Azure Portal, vaya al recurso de clúster de AKS.

  2. En el menú de servicio, seleccione Recursos de Kubernetes. La lista de recursos de Kubernetes muestra las siguientes categorías:

    • Espacios de nombres muestra información sobre los espacios de nombres del clúster.
    • Cargas de trabajo muestra información sobre implementaciones, pods, conjuntos de réplicas, objetos StatefulSet, conjuntos de demonios, trabajos y trabajos cron que se han implementado en el clúster.
    • Servicios y entradas muestra todos los recursos de entrada y servicio del clúster.
    • Almacenamiento muestra las clases de almacenamiento de Azure y la información del volumen persistente.
    • Configuración muestra los secretos y objetos ConfigMap del clúster.
    • Recursos personalizados muestra los recursos personalizados implementados en el clúster.
    • Eventos muestra todos los eventos relacionados con el clúster.
    • Ejecutar comando permite invocar comandos de forma remota, como kubectl y helm, en el clúster a través de la API de Azure sin conectarse directamente al clúster.

    Captura de pantalla que muestra los recursos de Kubernetes mostrados en Azure Portal.

Implementar una aplicación de ejemplo

En esta sección, implementamos la aplicación de Azure Store desde el inicio rápido de AKS.

Conexión al clúster

Para implementar la aplicación de Azure Store, debe conectarse al clúster de AKS. Siga estos pasos para conectarse al clúster mediante Azure Portal:

  1. En la página Información general del clúster de AKS, seleccione Conectar.
  2. Siga las instrucciones para conectarse al clúster mediante Cloud Shell, CLI de Azure, o comando Ejecutar.

Implementación de la aplicación de Azure Store

  1. En la lista recursos de Kubernetes, seleccione Servicios y entradas.

  2. Seleccione Crear>Aplicar un YAML.

  3. Copie y pegue el código YAML siguiente en el editor:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rabbitmq
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: rabbitmq
      template:
        metadata:
          labels:
            app: rabbitmq
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: rabbitmq
            image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine
            ports:
            - containerPort: 5672
              name: rabbitmq-amqp
            - containerPort: 15672
              name: rabbitmq-http
            env:
            - name: RABBITMQ_DEFAULT_USER
              value: "username"
            - name: RABBITMQ_DEFAULT_PASS
              value: "password"
            resources:
              requests:
                cpu: 10m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            volumeMounts:
            - name: rabbitmq-enabled-plugins
              mountPath: /etc/rabbitmq/enabled_plugins
              subPath: enabled_plugins
          volumes:
          - name: rabbitmq-enabled-plugins
            configMap:
              name: rabbitmq-enabled-plugins
              items:
              - key: rabbitmq_enabled_plugins
                path: enabled_plugins
    ---
    apiVersion: v1
    data:
      rabbitmq_enabled_plugins: |
        [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0].
    kind: ConfigMap
    metadata:
      name: rabbitmq-enabled-plugins
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: rabbitmq
    spec:
      selector:
        app: rabbitmq
      ports:
        - name: rabbitmq-amqp
          port: 5672
          targetPort: 5672
        - name: rabbitmq-http
          port: 15672
          targetPort: 15672
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: order-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: order-service
      template:
        metadata:
          labels:
            app: order-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: order-service
            image: ghcr.io/azure-samples/aks-store-demo/order-service:latest
            ports:
            - containerPort: 3000
            env:
            - name: ORDER_QUEUE_HOSTNAME
              value: "rabbitmq"
            - name: ORDER_QUEUE_PORT
              value: "5672"
            - name: ORDER_QUEUE_USERNAME
              value: "username"
            - name: ORDER_QUEUE_PASSWORD
              value: "password"
            - name: ORDER_QUEUE_NAME
              value: "orders"
            - name: FASTIFY_ADDRESS
              value: "0.0.0.0"
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
          initContainers:
          - name: wait-for-rabbitmq
            image: busybox
            command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;']
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: order-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3000
        targetPort: 3000
      selector:
        app: order-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: product-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: product-service
      template:
        metadata:
          labels:
            app: product-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: product-service
            image: ghcr.io/azure-samples/aks-store-demo/product-service:latest
            ports:
            - containerPort: 3002
            resources:
              requests:
                cpu: 1m
                memory: 1Mi
              limits:
                cpu: 1m
                memory: 7Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: product-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3002
        targetPort: 3002
      selector:
        app: product-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: store-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: store-front
      template:
        metadata:
          labels:
            app: store-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: store-front
            image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
            ports:
            - containerPort: 8080
              name: store-front
            env:
            - name: VUE_APP_ORDER_SERVICE_URL
              value: "http://order-service:3000/"
            - name: VUE_APP_PRODUCT_SERVICE_URL
              value: "http://product-service:3002/"
            resources:
              requests:
                cpu: 1m
                memory: 200Mi
              limits:
                cpu: 1000m
                memory: 512Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: store-front
    spec:
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: store-front
      type: LoadBalancer
    
  4. Seleccione Agregar.

    Una vez finalizada la implementación de la aplicación, verá los siguientes servicios en la lista de Servicios:

    • order-service
    • product-service
    • rabbitmq
    • store-front

    Captura de pantalla de los servicios de aplicación de Azure Store que se muestran en Azure Portal.

Supervisión de la información de implementación

Habilitación del complemento de supervisión en el clúster de AKS

Los clústeres de AKS con Container Insights habilitado pueden acceder a varias conclusiones de implementación en Azure Portal. Si no tiene habilitada la supervisión en el clúster, puede habilitarla mediante los pasos siguientes:

  1. En el menú de servicio del recurso de clúster de AKS, seleccione Supervisión>Insights>Configurar supervisión.

  2. En la página Configurar Container Insights, seleccione Configurar.

    La solución de supervisión puede tardar unos minutos en implementarse y empezar a recopilar datos.

Visualización de la información de implementación

  1. En el menú de servicio del recurso de clúster de AKS, seleccione Cargas de trabajo.
  2. Seleccione una implementación de la lista para ver información de implementación, como el uso de CPU y memoria.

Nota:

También puede seleccionar Monitoring>Insights para ver información más detallada sobre nodos y contenedores específicos.

Limpieza de recursos

Si ya no necesita la aplicación Azure Store, puede eliminar los servicios para evitar incurrir en costos de Azure.

  1. En la lista recursos de Kubernetes, seleccione Servicios y entradas.
  2. Seleccione los servicios que desea eliminar y, a continuación, seleccione Eliminar.

Solución de problemas

Acceso no autorizado

Para acceder a los recursos de Kubernetes, necesita acceso al clúster de AKS, a la API de Kubernetes y a los objetos de Kubernetes. Asegúrese de que es un administrador de clústeres o un usuario con los permisos adecuados para acceder al clúster de AKS. Para obtener más información, vea Opciones de acceso e identidad para AKS.

Activación de la vista de recursos

Es posible que tenga que habilitar la vista de recursos de Kubernetes para los clústeres existentes.

Sugerencia

Puede agregar la característica de intervalos IP autorizados del servidor de API de AKS para limitar el acceso del servidor de API solo al punto de conexión público del firewall. Otra opción consiste en actualizar el --api-server-authorized-ip-ranges/-ApiServerAccessAuthorizedIpRange para incluir el acceso a un equipo cliente local o al intervalo de direcciones IP desde el que va a examinar Azure Portal. Para permitir este acceso, necesita la dirección IPv4 pública del equipo. Puede encontrar esta dirección mediante los siguientes comandos de la CLI de Azure o Azure PowerShell, o bien puede buscar "qué es mi dirección IP" en el explorador.

  1. Recupere su dirección IP mediante el siguiente comando:

    CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
    
  2. Agregue la dirección IP a la lista aprobada de AKS mediante el comando az aks update con el parámetro --api-server-authorized-ip-ranges.

    az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --api-server-authorized-ip-ranges $CURRENT_IP/32
    

Pasos siguientes

En este artículo se muestra cómo acceder a los recursos de Kubernetes desde el Azure Portal. Para más información sobre AKS, conceptos básicos de Azure Kubernetes Service (AKS).