Partilhar via


Utilizar Azure Kubernetes Service no Azure Stack Hub com a CLI

Este é um guia para começar a utilizar o serviço Azure Kubernetes Service (AKS) no Azure Stack Hub. Este artigo descreve o conjunto principal de cenários para o familiarizar com o AKS no Azure Stack Hub. A funcionalidade disponível no Azure Stack Hub é um subconjunto do que está disponível no Azure global.

Nas secções seguintes, irá:

  1. Conclua os pré-requisitos para utilizar o AKS no Azure Stack Hub.
  2. Conclua as operações de ciclo de vida de um cluster do AKS com a CLI do Azure e o portal de utilizadores do Azure Stack Hub.

Instalar a CLI do Azure

Terá de instalar a CLI do Azure com suporte do AKS para o seu computador. Prepare um computador linux ou computador Windows limpo para instalar a versão de pré-visualização da CLI do Azure com suporte do AKS. Certifique-se de que o computador não tem a CLI do Azure instalada para evitar conflitos com a pré-visualização da CLI do Azure que irá instalar a seguir. A maioria das instruções abaixo pressupõe que está a utilizar uma VM do Linux, mas pode encontrar os passos equivalentes no Windows na documentação do produto.

Não atualize a CLI do Azure depois de instalar a CLI do Azure com suporte do AKS. Se efetuar a atualização, esta será substituída pela versão pronta para produção sem suporte do AKS.

Para um computador Ubuntu, siga as instruções em Instalar a CLI do Azure no Linux.

Depois de instalar a CLI do Azure com suporte do AKS, verifique se a instalação está correta ao executar o seguinte comando da CLI do Azure:

    az --version

Este é o resultado de um computador Linux:

saída de um computador Linux

A CLI do Azure deve ser 2.28.0 ou superior.

Ligar ao Azure Stack Hub

  1. Ligue-se ao ponto final do Azure Stack Hub. Tem de utilizar a CLI do Azure para estabelecer o ambiente específico do Azure Stack Hub ao qual se está a ligar. Pode encontrar as instruções em Ligar ao Azure Stack Hub

  2. Registe o seu ambiente para que a CLI do Azure possa ligar-se ao ponto final Resource Manager do Azure Stack Hub para a sua instância. Atualize os URLs no fragmento seguinte e execute o seguinte comando:

    az cloud register \
        -n aks-preview-test \
        --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \
        --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \
        --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
    
  3. Defina o ambiente ativo.

    az cloud set -n aks-preview-test
    
  4. Atualize a configuração do ambiente.

    az cloud update --profile 2020-09-01-hybrid
    
  5. Ligue-se ao ambiente.

    az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
    

    Nota

    Se acionar um erro de verificação de certificado com falha, pode ser que o certificado utilizado para o ponto final do Azure Resource Manager não seja fidedigno pelo computador cliente. Em caso afirmativo, tem de exportar o certificado utilizado nos pontos finais do Azure Stack Hub e confiar no mesmo. Pode encontrar instruções em Exportar o Certificado de Raiz da AC do Azure Stack Hub.

    Em particular, para computadores Linux, veja: Microsoft Entra ID no Linux

  6. Defina a subscrição na sessão da CLI do Azure como a predefinição com:

    az account set --subscription <subscription-id>
    
  7. Registe o fornecedor de recursos Azure Kubernetes Service. Liste os fornecedores de recursos disponíveis na sua subscrição.

    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    O resultado deve ter o seguinte aspeto:

    O resultado deve ter o seguinte aspeto

  8. Tome nota do fornecedor de recursos Microsoft.ContainerService e, em seguida, registe o fornecedor:

    az provider register --namespace Microsoft.ContainerService
    
  9. Execute novamente o passo sete para verificar o estado de registo do fornecedor de recursos. O registo pode demorar vários minutos a ser concluído.

Assim que estes passos de pré-requisitos estiverem concluídos, pode continuar a testar os seguintes cenários.

Criar um cluster do AKS (Create an AKS cluster)

Pode encontrar as instruções globais do Azure em Implementar um cluster de Azure Kubernetes Service com a CLI do Azure. As instruções aqui refletem as limitações da utilização do AKS no Azure Stack Hub. Pode utilizar a CLI do Azure para criar um cluster do AKS para contentores linux ou Windows.

  1. Criar um grupo de recursos:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Certifique-se de que tem um ID do principal de serviço pronto com permissão de contribuidor na sua subscrição para criar clusters na mesma.

    1. Para criar um principal de serviço (SPN) com Microsoft Entra ID, siga estas instruções.
    2. Para criar um SPN com os Serviços Federados do Active Directory (AD FS), siga estas instruções.
    3. Para atribuir a função "Contribuidor" ao SPN, veja as instruções. Certifique-se de que seleciona a função "Contribuidor".
  3. Crie um cluster do AKS de três nós de agente. Forneça valores aos parâmetros abaixo, são fornecidos exemplos. Executar:

    az aks create \
    --resource-group myResourceGroup \
    --name myakscluster \
    --dns-name-prefix myakscluster \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --location <Azure Stack Hub location> \
    --kubernetes-version 1.20.7
    

    O resultado desta operação estará no formato json e conterá uma especificação do cluster, incluindo a chave pública ssh gerada, nome de domínio completamente qualificado (FQDN) utilizado no cluster entre outras propriedades. Tenha em atenção que o comando irá produzir um texto como este a realçar a localização da chave privada: SSH key files '/home/azureuser/.ssh/id_rsa' e '/home/azureuser/.ssh/id_rsa.pub' foi gerado \~/.ssh em para permitir o acesso SSH à VM. Armazene estas chaves numa localização segura para utilizar, caso seja necessário introduzir ssh nas VMs, como acontece quando se trata de problemas.

  4. Agora, pode continuar a repetir os testes para Dimensionar, implementar uma aplicação e Eliminar.

Ligar ao cluster

  1. Para gerir um cluster do Kubernetes, utilize kubectl, o cliente de linha de comandos do Kubernetes. Para instalar o kubectl localmente, utilize o comando az aks install-cli (poderá ter de utilizar "sudo" no te beginning para ter permissão para instalá-lo):

    az aks install-cli
    
  2. Para configurar o kubectl para ligar ao cluster do Kubernetes, utilize o az aks get-credentials comando . Este comando transfere as credenciais e configura a CLI do Kubernetes para as utilizar.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. Para verificar a ligação ao cluster, utilize o comando kubectl get para devolver uma lista dos nós de cluster.

    kubectl get nodes
    

verificar a ligação ao cluster

Dimensionar o cluster

Outra tarefa de gestão de clusters é dimensionar um cluster. Pode dimensionar um cluster em qualquer altura depois de ter sido criado com o comando az aks scale. Para dimensionar o cluster dos três nós iniciais para 4, execute:

    az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4

Quando o cluster tiver sido dimensionado com êxito, o resultado conterá um "agentPoolProfiles" semelhante ao seguinte exemplo:

    "agentPoolProfiles": [
        {
        "availabilityZones": null,
        "count": 4,
        "enableAutoScaling": null,
        "enableNodePublicIp": false,
        "maxCount": null,
        "maxPods": 110,
        "minCount": null,
        "mode": "System",
        "name": "mynodepool",
        "nodeLabels": {},
        "nodeTaints": null,
        "orchestratorVersion": "1.20.7",
        "osDiskSizeGb": 100,
        "osType": "Linux",
        "provisioningState": "Succeeded",
        "scaleSetEvictionPolicy": null,
        "scaleSetPriority": null,
        "spotMaxPrice": null,
        "tags": null,
        "type": "VirtualMachineScaleSets",
        "vmSize": " Standard_DS2_v2",
        "vnetSubnetId": null
        }
    ]

Eliminar o cluster

Assim que as operações anteriores tiverem sido executadas, pode continuar a eliminar o cluster. Executar:

az aks delete --name myakscluster --resource-group myResourceGroup

Criar um cluster do AKS com uma VNET personalizada

A criação de um cluster a implementar numa rede fornecida pelo utilizador é um cenário comum. Planear a configuração da rede requer alguma preparação. Além disso, tenha em atenção que, com o AKS, o plug-in de rede predefinido é a CNI do Azure e não o Kubenet, como é o caso do motor do AKS. Com a CNI do Azure, cada pod obtém um endereço IP da sub-rede e pode ser acedido diretamente (sem a necessidade de uma tabela de Encaminhamento, como é o caso do Kubenet). Estes endereços IP têm de ser exclusivos em todo o espaço de rede e têm de ser planeados. O seguinte artigo explica-lhe o processo de planeamento da implementação personalizada da VNET. Pode encontrar várias configurações de rede que funcionam para as suas necessidades e testá-las. Para um teste inicial, os dois passos seguintes mostrar-lhe-ão o processo básico:

  1. Siga as instruções neste artigo para planear a implementação com a CNI do Azure. Por exemplo, pode utilizar o portal para criar uma VNet com o nome "myAKSVnet" com o intervalo de IP 10.0.0.0/8 com a sub-rede "myAKSSubnet" e o intervalo de IP 10.240.0.0/16 num Grupo de Recursos com o nome "myTest-rg". Em seguida, utilize o passo seguinte para a criação do cluster.

    az network vnet create \
        --resource-group myTest-rg \
        --name myAKSVnet \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name myAKSSubnet \
        --subnet-prefix 10.240.0.0/16    
    
  2. Tenha em atenção que o comando de cluster fornecido no artigo do Azure funciona bem ao implementar no Azure, para implementar no Azure Stack Hub, tem de especificar parâmetros adicionais, como no exemplo seguinte. O ID da sub-rede da vnet deve ter o aspeto "/subscriptions/dfdfdff-5dfdf-dfdf-dfdfdfdfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSSubnet":

    az aks create  \ 
    --resource-group myTest-rg \
    --name aksvnet \
    --dns-name-prefix  aksvnet \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8  \
    --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --network-plugin azure \
    --vnet-subnet-id '<subnet-resource-id>' \
    --skip-subnet-role-assignment \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.0.0.10 \
    --location redmond
    
  3. Siga as instruções na secção "Ligar ao cluster" para ligar ao cluster do Kubernetes e implementar as suas aplicações.

Verificação de consistência

Verificação de consistência entre o Azure e o Azure Stack Hub

  1. Selecione uma combinação de comandos dos que foram testados acima, na secção "Referência de Comandos" abaixo ou nos seus próprios scripts do dia-a-dia.
  2. Aplique-os ao Azure e posterior ao Azure Stack Hub. Tenha em atenção quaisquer discrepâncias não esperadas e forneça comentários.

Passos seguintes

Saiba mais sobre o AKS no Azure Stack Hub