Accedere alle risorse di Kubernetes tramite il portale di Azure

In questo articolo, viene illustrato come accedere e gestire le risorse del servizio Azure Kubernetes (AKS) tramite il portale di Azure.

Operazioni preliminari

Per visualizzare le risorse Kubernetes nel portale di Azure, hai bisogno di un cluster del servizio Azure Kubernetes. Qualsiasi cluster è supportato, ma se usi l'integrazione di Microsoft Entra, il tuo cluster deve usare l'integrazione di Microsoft Entra gestita dal servizio Azure Kubernetes. Se il tuo cluster usa l'ID Microsoft Entra legacy, puoi aggiornare il cluster nel portale o con l'interfaccia della riga di comando di Azure. Puoi anche usare il portale di Azure per creare un nuovo cluster del servizio Azure Kubernetes.

Visualizza risorse Kubernetes

  1. Nel portale di Azure, passare alla risorsa del cluster del servizio Azure Kubernetes.

  2. Nel menu del servizio selezionare Risorse Kubernetes. L'elenco delle risorse di Kubernetes visualizza le categorie seguenti:

    • Spazi dei nomi: mostra le informazioni sugli spazi dei nomi del cluster.
    • I carichi di lavoro mostrano informazioni su distribuzioni, pod, set di repliche, set con stato, set di daemon, processi e processi cron distribuiti nel cluster.
    • Servizi e dati in ingresso mostra tutte le risorse del servizio e dell'ingresso del cluster.
    • Archiviazione mostra le classi di archiviazione di Azure e le informazioni sul volume permanente.
    • Configurazione mostra le mappe di configurazione e i segreti del cluster.
    • Risorse personalizzate: mostra tutte le risorse personalizzate distribuite nel cluster.
    • Eventi: mostra tutti gli eventi correlati al cluster.
    • Esegui comando consente di chiamare in remoto i comandi, ad esempio kubectl e helm, nel cluster tramite l’API di Azure evitando di connettersi direttamente al cluster.

    Screenshot che mostra le risorse di Kubernetes visualizzate nel portale di Azure.

Distribuire un'applicazione di esempio

In questa sezione viene distribuita l'applicazione Azure Store dall’Avvio rapido del servizio Azure Kubernetes.

Connettersi al cluster

Per distribuire l'applicazione Azure Store, è necessario connettersi al cluster del servizio Azure Kubernetes. Seguire questa procedura per connettersi al cluster tramite il portale di Azure:

  1. Nella pagina Panoramica del cluster del servizio Azure Kubernetes, selezionare Connetti.
  2. Seguire le istruzioni per connettersi al cluster tramite Cloud Shell, l'interfaccia della riga di comando di Azure o Esegui comando.

Distribuire l'applicazione Azure Store

  1. Nell'elenco delle risorse di Kubernetes, selezionare Servizi e dati in ingresso.

  2. Selezionare Crea>Applica a un file YAML.

  3. Copiare e incollare il file YAML seguente nell'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. Selezionare Aggiungi.

    Al termine della distribuzione dell'applicazione, l’elenco Servizi visualizza i servizi seguenti:

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

    Screenshot dei servizi dell’applicazione Azure Store visualizzati nel portale di Azure.

Monitorare le informazioni dettagliate sulla distribuzione

Abilitare il componente aggiuntivo di monitoraggio nel cluster del servizio Azure Kubernetes

I cluster del servizio Azure Kubernetes con l’opzione Dati analitici sui contenitori abilitata possono accedere a varie informazioni dettagliate sulla distribuzione nel portale di Azure. Se non si è abilitato il monitoraggio nel cluster, è possibile farlo tramite la procedura seguente:

  1. Dal menu del servizio della risorsa del cluster del servizio Azure Kubernetes selezionare Monitoraggio>Insights>Configurare il monitoraggio.

  2. Nella pagina Configura Informazioni dettagliate sul contenitore, selezionare Configura.

    Potrebbero essere necessari alcuni minuti perché la soluzione di monitoraggio venga distribuita e inizi a raccogliere i dati.

Visualizzare le informazioni dettagliate sulla distribuzione

  1. Dal menu del servizio della risorsa cluster del servizio Azure Kubernetes selezionare Carichi di lavoro.
  2. Selezionare una distribuzione dall'elenco per visualizzare le informazioni dettagliate sulla distribuzione, ad esempio l'utilizzo della CPU e della memoria.

Nota

È anche possibile selezionare Monitoraggio>Informazioni dettagliate per visualizzare informazioni più approfondite su nodi e contenitori specifici.

Pulire le risorse

Se l'applicazione Azure Store non è più necessaria, è possibile eliminare i servizi per evitare di incorrere nei costi di Azure.

  1. Nell'elenco delle risorse di Kubernetes, selezionare Servizi e dati in ingresso.
  2. Selezionare i servizi da eliminare e quindi selezionare Elimina.

Risoluzione dei problemi

Accesso non autorizzato

Per accedere alle risorse di Kubernetes, è necessario accedere al cluster del servizio Azure Kubernetes, all'API Kubernetes e agli oggetti Kubernetes. Assicurarsi di essere un amministratore del cluster o un utente con le autorizzazioni appropriate per accedere al cluster del servizio Azure Kubernetes. Per altre informazioni, vedere Opzioni di accesso e identità per il servizio Azure Kubernetes.

Abilitare la visualizzazione delle risorse

Per i cluster esistenti, è possibile che sia necessario abilitare la visualizzazione delle risorse di Kubernetes.

Suggerimento

Puoi aggiungere la funzionalità servizio Azure Kubernetes per intervalli IP autorizzati del server API per limitare l'accesso del server API solo all'endpoint pubblico del firewall. Un'altra opzione consiste nell'aggiornare --api-server-authorized-ip-ranges/-ApiServerAccessAuthorizedIpRange per includere l'accesso a un computer client locale o all'intervallo di indirizzi IP da cui si sta esplorando il portale di Azure. Per consentire l'accesso, è necessario l'indirizzo IPv4 pubblico del computer. È possibile trovare questo indirizzo tramite l'interfaccia della riga di comando di Azure o i comandi di Azure PowerShell seguenti, oppure digitando "qual è l'indirizzo IP personale" nella barra di ricerca del browser.

  1. Recuperare l'indirizzo IP usando il comando seguente:

    CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
    
  2. Aggiungere l'indirizzo IP all'elenco del servizio Azure Kubernetes approvato tramite il comando az aks update con il parametro --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
    

Passaggi successivi

Questo articolo ti ha spiegato come accedere alle risorse Kubernetes dal portale di Azure. Per altre informazioni, vedere Concetti di base relativi al servizio Azure Kubernetes (AKS).