Criar clusters do Kubernetes usando a CLI do Azure

Aplica-se a: Azure Stack HCI, versão 23H2

Este artigo descreve como criar clusters do Kubernetes no Azure Stack HCI usando a CLI do Azure. O fluxo de trabalho é o seguinte:

  1. Crie um cluster do Kubernetes no Azure Stack HCI 23H2 usando a CLI do Azure. O cluster é conectado ao Azure Arc por padrão.
  2. Ao criar o cluster, você fornece um grupo de Microsoft Entra que contém a lista de usuários Microsoft Entra com acesso de administrador de cluster do Kubernetes.
  3. Acesse o cluster usando kubectl e seu Microsoft Entra ID.
  4. Executar um aplicativo de vários contêineres de exemplo com um front-end da Web e uma instância do Redis no cluster.

Antes de começar

  • Antes de começar, verifique se você tem os seguintes detalhes do administrador de infraestrutura local:
    • ID da assinatura do Azure – a ID de assinatura do Azure em que o Azure Stack HCI é usado para implantação e registro.
    • ID de Local Personalizado – Azure Resource Manager ID do local personalizado. O local personalizado é configurado durante a implantação do cluster do Azure Stack HCI. O administrador da infraestrutura deve fornecer a ID de Resource Manager do local personalizado. Esse parâmetro é necessário para criar clusters do Kubernetes. Você também pode obter a ID do Resource Manager usando az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, se o administrador da infraestrutura fornecer um nome de local personalizado e um nome de grupo de recursos.
    • ID de rede – Azure Resource Manager ID da rede lógica do Azure Stack HCI criada seguindo estas etapas. Seu administrador deve fornecer a ID da rede lógica. Esse parâmetro é necessário para criar clusters do Kubernetes. Você também pode obter a ID de Resource Manager do Azure usando az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv se souber o grupo de recursos no qual a rede lógica foi criada.
  • Você pode executar as etapas neste artigo em um computador de desenvolvimento local para criar um cluster do Kubernetes em sua implantação remota do Azure Stack HCI. Verifique se você tem a versão mais recente da CLI do Az em seu computador de desenvolvimento. Você também pode optar por atualizar sua versão da CLI do Az usando az upgrade.
  • Para se conectar ao cluster kubernetes de qualquer lugar, crie um grupo de Microsoft Entra e adicione membros a ele. Todos os membros do grupo Microsoft Entra têm acesso de administrador de cluster ao cluster. Adicione-se como membro ao grupo Microsoft Entra. Se você não adicionar a si mesmo, não poderá acessar o cluster do Kubernetes usando kubectl. Para obter mais informações sobre como criar grupos de Microsoft Entra e adicionar usuários, consulte Gerenciar grupos de Microsoft Entra e associação a grupos.
  • Baixe e instale o kubectl em seu computador de desenvolvimento. A ferramenta de linha de comando do Kubernetes, kubectl, permite que você execute comandos em clusters do Kubernetes. Você pode usar o kubectl para implantar aplicativos, inspecionar e gerenciar recursos de cluster e exibir logs.

Instalar a extensão da CLI do Azure

Execute o seguinte comando para instalar as extensões necessárias da CLI do Azure:

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

Criar um cluster do Kubernetes

Use o az aksarc create comando para criar um cluster kubernetes no AKS Arc. Certifique-se de entrar no Azure antes de executar este comando. Se você tiver várias assinaturas do Azure, selecione a ID de assinatura apropriada usando o comando az account set .

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys --load-balancer-count 0  --control-plane-ip $controlplaneIP

Após alguns minutos, o comando será concluído e retornará informações no formato JSON sobre o cluster.

Conectar-se ao cluster do Kubernetes

Agora você pode se conectar ao cluster do Kubernetes executando o az connectedk8s proxy comando do computador de desenvolvimento. Certifique-se de entrar no Azure antes de executar este comando. Se você tiver várias assinaturas do Azure, selecione a ID de assinatura apropriada usando o comando az account set .

Esse comando baixa o kubeconfig do cluster kubernetes para seu computador de desenvolvimento e abre um canal de conexão proxy para o cluster kubernetes local. O canal fica aberto enquanto o comando for executado. Deixe esse comando ser executado enquanto você quiser acessar o cluster. Se atingir o tempo limite, feche a janela da CLI, abra uma nova e execute o comando novamente.

Você deve ter permissões de Colaborador no grupo de recursos que hospeda o cluster do Kubernetes para executar o seguinte comando com êxito:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Saída esperada:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

Mantenha esta sessão em execução e conecte-se ao cluster do Kubernetes de um prompt de terminal/comando diferente. Verifique se você pode se conectar ao cluster do Kubernetes executando o comando kubectl get. Este comando retorna uma lista dos nós de cluster:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

O exemplo de saída a seguir mostra o nó criado nas etapas anteriores. Verifique se que o status do nó é Pronto:

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

Implantar o aplicativo

Um arquivo de manifesto do Kubernetes define o estado desejado de um cluster, por exemplo, as imagens de contêiner a serem executadas.

Você pode usar um manifesto para criar todos os objetos necessários para executar o aplicativo Azure Vote. Esse manifesto inclui duas implantações do Kubernetes:

  • Os aplicativos Azure Vote de exemplo em Python.
  • Uma instância do Redis.

Dois serviços do Kubernetes também são criados:

  • Um serviço interno para a instância do Redis.
  • Um serviço externo para acessar o aplicativo Azure Vote da Internet.

Crie um arquivo chamado azure-vote.yaml e copie o seguinte manifesto:

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

Implante o aplicativo usando o comando kubectl apply e especifique o nome do YAML:

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

A saída de exemplo a seguir mostra as implantações e os serviços criados com sucesso:

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

Testar o aplicativo

Quando o aplicativo é executado, um serviço de Kubernetes expõe o front-end do aplicativo à Internet. A conclusão desse processo pode levar alguns minutos.

Monitore o andamento usando o comando kubectl get service com o argumento --watch.

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

A saída EXTERNAL-IP para o serviço azure-vote-front inicialmente é mostrada como pendente.

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

Depois que o endereço EXTERNAL-IP for alterado de pendente para um endereço IP público real, use CTRL-C para interromper o processo de kubectl watch. A seguinte saída de exemplo mostra um endereço IP público válido atribuído ao serviço:

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

Para ver o aplicativo Azure Vote em ação, abra um navegador da Web no endereço IP externo do serviço.

Excluir o cluster

Execute o az aksarc delete comando para limpo o cluster que você criou:

az aksarc delete --resource-group $aksclustername --name $resource_group

Próximas etapas