Compartilhar via


Usar o Serviço de Kubernetes do Azure no Azure Stack Hub com a CLI

Este artigo é um guia para começar a usar o serviço AKS (Serviço de Kubernetes do Azure) no Azure Stack Hub. Ele descreve o conjunto principal de cenários para que você se familiarize 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 seções a seguir, você:

  1. Conclua os pré-requisitos para usar o AKS no Azure Stack Hub.

  2. Conclua as operações de ciclo de vida de um cluster do AKS usando a CLI do Azure e o portal do usuário do Azure Stack Hub.

Instalar a CLI do Azure.

Você deve instalar a CLI do Azure com suporte do AKS para seu computador. Prepare um computador limpo do Linux ou do Windows para instalar a versão prévia da CLI do Azure com suporte do AKS. Verifique se o computador não tem a CLI do Azure instalada para evitar conflitos com a versão prévia da CLI do Azure que você instalará em seguida. A maioria das instruções a seguir pressupõe que você esteja usando uma VM linux, mas você pode encontrar as etapas 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 você atualizar, ele será substituído pela versão pronta para produção que não tem 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 ao AKS, verifique se a instalação está correta executando o seguinte comando da CLI do Azure:

    az --version

Aqui está uma saída de exemplo de um computador Linux:

saída de um computador Linux

A CLI do Azure deve ser 2.28.0 ou posterior.

Conectar-se ao Azure Stack Hub

  1. Conecte-se ao endpoint do Azure Stack Hub. Você precisa usar a CLI do Azure para estabelecer o ambiente específico do Azure Stack Hub ao qual você está se conectando. Você pode encontrar as instruções em Conectar-se ao Azure Stack Hub.

  2. Registre seu ambiente para que a CLI do Azure possa se conectar ao ponto de extremidade do Azure Stack Hub Resource Manager da sua instância. Atualize as URLs no snippet a seguir 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. Conecte-se ao ambiente.

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

    Observação

    Se você acionar uma Falha na verificação do certificado, pode ser que o certificado usado para o ponto de extremidade do Azure Resource Manager não seja confiável para a máquina cliente. Nesse caso, você precisa exportar o certificado usado nos pontos de extremidade do Azure Stack Hub e confiar nele. Você pode encontrar instruções em Exportar o Certificado Raiz da Autoridade Certificadora (AC) do Azure Stack Hub.

    Em particular, para computadores Linux, consulte: ID do Microsoft Entra no Linux

  6. Use o seguinte comando para definir a assinatura em sua sessão da CLI do Azure como o padrão:

    az account set --subscription <subscription-id>
    
  7. Registre o provedor de recursos do Serviço de Kubernetes do Azure. Liste os provedores de recursos disponíveis em sua assinatura.

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

    A saída deve ser assim:

    A saída deve ser semelhante a

  8. Anote o provedor de recursos Microsoft.ContainerService e registre o provedor:

    az provider register --namespace Microsoft.ContainerService
    
  9. Execute novamente a etapa 7 para verificar o status de registro do provedor de recursos. O registro pode levar vários minutos para ser concluído.

Depois que essas etapas de pré-requisito forem concluídas, você poderá testar os cenários a seguir.

Criar um cluster AKS

Você pode encontrar as instruções globais do Azure em Implantar um cluster do Serviço de Kubernetes do Azure usando a CLI do Azure. As instruções aqui refletem as limitações de uso do AKS no Azure Stack Hub. Você pode usar a CLI do Azure para criar um cluster do AKS para contêineres do Linux ou do Windows.

  1. Crie um grupo de recursos:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Certifique-se de ter um ID de entidade de serviço pronto com permissão de colaborador em sua assinatura para criar clusters nela.

    1. Para criar um principal de serviço (SPN) usando o Microsoft Entra ID, siga estas instruções.
    2. Para criar um SPN usando o AD FS (Active Directory Federated Services), siga estas instruções.
    3. Para atribuir a função "Colaborador" ao SPN, consulte as instruções. Selecione a função "Colaborador".
  3. Crie um cluster AKS com três nós de agente. Forneça valores para os seguintes parâmetros, exemplos são fornecidos. Correr:

    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
    

    A saída dessa operação está no formato json e contém uma especificação do cluster, incluindo a chave pública ssh gerada, FQDN (nome de domínio totalmente qualificado) usado no cluster entre outras propriedades. Observe que o comando gera textos como este, destacando o local da chave privada: SSH key files '/home/azureuser/.ssh/id_rsa' e '/home/azureuser/.ssh/id_rsa.pub' são gerados sob \~/.ssh para permitir o acesso SSH à VM. Armazene essas chaves em um local seguro a ser usado caso haja a necessidade de entrar nas VMs, como é o caso ao solucionar problemas.

  4. Agora você pode continuar a repetir os testes para Escala, implantar um aplicativo e Excluir.

Conectar-se ao cluster

  1. Para gerenciar um cluster do Kubernetes, use kubectl, o cliente de linha de comando do Kubernetes. Para instalar o kubectl localmente, use o az aks install-cli comando (talvez seja necessário usar 'sudo' no início para ter permissão para instalá-lo):

    az aks install-cli
    
  2. Para configurar o kubectl para se conectar ao cluster do Kubernetes, use o az aks get-credentials comando. Este comando baixa as credenciais e configura a CLI do Kubernetes para usá-las.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. Para verificar a conexão com o cluster, use o comando obter kubectl para retornar uma lista dos nós de cluster.

    kubectl get nodes
    

    verificar a conexão com seu cluster

Dimensionar Cluster

Outra tarefa de gerenciamento de cluster é dimensionar um cluster. Você pode dimensionar um cluster a qualquer momento após ele ser criado usando o az aks scale comando. 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 é dimensionado com êxito, a saída contém um "agentPoolProfiles" semelhante ao exemplo a seguir:

    "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
        }
    ]

Excluir Cluster

Depois que as operações anteriores forem executadas, você poderá excluir o cluster. Correr:

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

Criar um cluster do AKS com uma rede virtual personalizada

Criar um cluster a ser implantado em uma rede fornecida pelo usuário é um cenário comum. Planejar a configuração de rede requer alguma preparação. Além disso, observe que, com o AKS, o plug-in de rede padrão é o CNI do Azure, não o Kubenet, como é o caso do mecanismo do AKS.

Com o CNI do Azure, cada pod obtém um endereço IP da sub-rede e pode ser acessado diretamente (sem a necessidade de uma tabela de roteamento, como é o caso do Kubenet). Esses endereços IP devem ser exclusivos em seu espaço de rede e devem ser planejados.

O artigo a seguir explica o processo de planejamento para sua implantação de rede virtual personalizada. Você pode encontrar várias configurações de rede que funcionam para suas necessidades e testá-las. Para um teste inicial, as duas etapas a seguir mostram o processo básico:

  1. Siga as instruções neste artigo para planejar a implantação usando a CNI do Azure. Por exemplo, você pode usar o portal para criar uma rede virtual chamada "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 em um Grupo de Recursos chamado "myTest-rg". Em seguida, use a próxima etapa 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. Observe que o comando de cluster fornecido no artigo do Azure funciona bem ao implantar no Azure, para implantar no Azure Stack Hub, você precisa especificar parâmetros extras como no exemplo a seguir. A identificação da sub-rede da rede virtual deve ser semelhante a "/subscriptions/dfdfdff-5dfdf-dfdf-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 seção "Conectar-se ao cluster" para se conectar ao cluster do Kubernetes e implantar seus aplicativos.

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 das opções testadas acima, ou a partir da seção "Referência de Comando" ou de seus próprios scripts do dia a dia.

  2. Aplique-os ao Azure e posteriormente ao Azure Stack Hub. Observe as discrepâncias não esperadas e forneça comentários.

Próximas etapas