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

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

  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ê precisará instalar a CLI do Azure com suporte do AKS para seu computador. Prepare um computador linux ou windows limpo 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 abaixo 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 do AKS, verifique se a instalação está correta executando o seguinte comando da CLI do Azure:

    az --version

Esta é a saída de um computador Linux:

saída de um computador Linux

A CLI do Azure deve ser 2.28.0 ou superior.

Conectar-se ao Azure Stack Hub

  1. Conecte-se ao ponto de extremidade 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 Resource Manager do Azure Stack Hub para 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ê disparar um erro de falha na verificação de certificado, pode ser que o certificado usado para o ponto de extremidade Resource Manager do Azure não seja confiável para o computador 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 AC do Azure Stack Hub.

    Em particular, para computadores Linux, confira: ID de Microsoft Entra no Linux

  6. Defina a assinatura em sua sessão da CLI do Azure como o padrão com:

    az account set --subscription <subscription-id>
    
  7. Registre o provedor de recursos 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 sete para verificar a 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á prosseguir para testar os cenários a seguir.

Criar um cluster AKS

Você pode encontrar as instruções globais do Azure em Implantar um cluster Serviço de Kubernetes do Azure usando a CLI do Azure. As instruções aqui refletem as limitações do 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. Verifique se você tem uma ID de entidade de serviço pronta com contribuidor permissão em sua assinatura para criar clusters nela.

    1. Para criar uma entidade de serviço (SPN) usando Microsoft Entra ID, siga estas instruções.
    2. Para criar um SPN usando o AD FS (Serviços Federados do Active Directory), siga estas instruções.
    3. Para atribuir a função "Colaborador" ao SPN, confira as instruções. Selecione a função "Colaborador".
  3. Crie um cluster do AKS de três nós de agente. Forneça valores para os parâmetros abaixo, exemplos são fornecidos. Execute:

    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 estará no formato json e conterá 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 produzirá um texto como este realçando o local da chave privada: SSH key files '/home/azureuser/.ssh/id_rsa' e '/home/azureuser/.ssh/id_rsa.pub' foi gerado em \~/.ssh para permitir o acesso SSH à VM. Armazene essas chaves em um local seguro para serem usadas caso haja a necessidade de usar ssh 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 comando az aks install-cli (talvez seja necessário usar 'sudo' no te começando 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 kubectl get para retornar uma lista dos nós de cluster.

    kubectl get nodes
    

verificar a conexão com o cluster

Dimensionar Cluster

Outra tarefa de gerenciamento de cluster é dimensionar um cluster. Você pode dimensionar um cluster a qualquer momento depois que ele tiver sido criado usando 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 for dimensionado com êxito, a saída conterá 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 tiverem sido executadas, você poderá continuar a excluir o cluster. Execute:

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

Criar cluster do AKS com VNET 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 é a CNI do Azure, não o Kubenet, como é o caso do mecanismo do AKS. Com a 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 orienta você pelo processo de planejamento para sua implantação de VNET 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 mostrarão 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 VNet 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 ID da sub-rede da vnet deve se parecer com '/subscriptions/dfdfdff-5df-dfdf-dfdf-dfdfdfdfdfdfd/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

Consistência marcar entre o Azure e o Azure Stack Hub

  1. Selecione uma combinação de comandos dos testados acima, na seção "Referência de Comando" abaixo ou em seus próprios scripts diários.
  2. Aplique-os ao Azure e posterior ao Azure Stack Hub. Observe as discrepâncias não esperadas e forneça comentários.

Próximas etapas

Saiba mais sobre o AKS no Azure Stack Hub