Acessar recursos do Kubernetes usando o portal do Azure

Neste artigo, você aprenderá a acessar e gerenciar seus recursos do AKS (Serviço de Kubernetes do Azure) usando o portal do Azure.

Antes de começar

Para exibir recursos do Kubernetes no portal do Azure, você precisa de um cluster AKS. Qualquer cluster tem suporte, mas se você estiver usando a integração do Microsoft Entra, seu cluster deverá usar a integração do Microsoft Entra gerenciada pelo AKS. Se o cluster usar o Microsoft Entra ID herdado você poderá atualizar o cluster no portal ou com a CLI do Azure. Você também pode usar o portal do Azure para criar um novo cluster AKS.

Exibir recursos do Kubernetes

  1. No portal do Azure, navegue até o recurso do cluster do AKS.

  2. No menu de serviço, selecione Recursos do Kubernetes. A lista de recursos do Kubernetes exibe as seguintes categorias:

    • Namespaces mostra informações sobre os namespaces do cluster.
    • As cargas de trabalho mostram informações sobre implantações, pods, conjuntos de réplicas, conjuntos com estado, conjuntos de daemon, trabalhos e trabalhos cron implantados no cluster.
    • Serviços e entradas mostra todos os recursos de serviço e de entrada do cluster.
    • Armazenamento mostra as suas classes de armazenamento do Azure e as informações de volume persistentes.
    • Configuração mostra os segredos e os mapas de configurações do cluster.
    • Recursos personalizados mostra todos os recursos personalizados implantados no cluster.
    • Eventos mostra todos os eventos relacionados ao cluster.
    • Executar Comando permite que você invoque comandos remotamente, como kubectl e helm, no seu cluster por meio da API do Azure sem se conectar diretamente ao cluster.

    Captura de tela mostrando os recursos do Kubernetes exibidos no portal do Azure.

Implantar um aplicativo de exemplo

Nesta seção, implantaremos o aplicativo Azure Store no início rápido do AKS.

Conectar-se ao seu cluster

Para implantar o aplicativo Azure Store, você precisa se conectar ao seu cluster do AKS. Siga estas etapas para se conectar ao cluster usando o portal do Azure:

  1. Na página Visão geral do cluster do AKS, selecione Conectar.
  2. Siga as instruções para se conectar ao cluster usando o Cloud Shell, CLI do Azure ou Executar Comando.

Implantar o aplicativo Azure Store

  1. Na lista Recursos do Kubernetes, selecione Serviços e entradas.

  2. Selecione Criar>Aplicar um YAML.

  3. Copie e cole o YAML a seguir no 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. Selecione Adicionar.

    Quando a implantação do aplicativo for concluída, você verá os seguintes serviços na lista Serviços:

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

    Captura de tela dos serviços do aplicativo Azure Store exibidos no portal do Azure.

Monitorar informações de implantação

Habilitar o complemento de monitoramento no cluster do AKS

Clusters do AKS com Insights de Contêiner habilitado podem acessar vários insights de implantação no portal do Azure. Se você não habilitou o monitoramento no seu cluster, poderá habilitá-lo usando as seguintes etapas:

  1. No menu de serviço do recurso de cluster do AKS, selecione Monitoramento>Insights>Configurar monitoramento.

  2. Na página Configurar insights de contêiner, selecione Configurar.

    Pode levar alguns minutos para que a solução de monitoramento implante e comece a coletar dados.

Ver insights de implantação

  1. No menu de serviço do recurso de cluster do AKS, selecione Cargas de Trabalho.
  2. Selecione uma implantação na lista para ver os insights da implantação, como uso de CPU e memória.

Observação

Você também pode selecionar Monitoramento>Insights para ver informações mais detalhadas sobre contêineres e nós específicos.

Limpar os recursos

Se você não precisar mais do aplicativo Azure Store, poderá excluir os serviços para evitar incorrer em custos do Azure.

  1. Na lista Recursos do Kubernetes, selecione Serviços e entradas.
  2. Selecione os serviços que você deseja excluir e depois selecione Excluir.

Solução de problemas

Unauthorized access

Para acessar os recursos do Kubernetes, você deve ter acesso ao cluster do AKS, à API do Kubernetes e aos objetos do Kubernetes. Verifique se você é um administrador de cluster ou um usuário com as permissões apropriadas para acessar o cluster do AKS. Para obter mais informações, confira Opções de acesso e identidade do AKS.

Habilitar a exibição de recursos

Pode ser necessário habilitar a exibição de recursos do Kubernetes para clusters existentes.

Dica

Você pode adicionar o recurso do AKS aos intervalos de IP autorizados pelo servidor de API para limitar o acesso do servidor de API apenas ao ponto de extremidade público do firewall. Outra opção é atualizar o --api-server-authorized-ip-ranges/-ApiServerAccessAuthorizedIpRange para incluir o acesso a um computador cliente local ou o intervalo de endereços IP a partir do qual você está navegando pelo portal do Azure. Para permitir esse acesso, você precisa do endereço IPv4 público do computador. Você pode encontrar esse endereço usando os seguintes comandos da CLI do Azure ou do Azure PowerShell, ou você pode pesquisar "qual é o meu endereço IP" no seu navegador.

  1. Recupere seu endereço IP usando o comando a seguir:

    CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
    
  2. Adicione seu endereço IP à lista aprovada pelo AKS usando o comando az aks update com o 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
    

Próximas etapas

Esse artigo mostrou como acessar os recursos do Kubernetes no portal do Microsoft Azure. Para obter mais informações sobre o AKS, confira Principais conceitos do AKS (Serviço de Kubernetes do Azure).