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á:
- Conclua os pré-requisitos para utilizar o AKS no Azure Stack Hub.
- 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:
A CLI do Azure deve ser 2.28.0 ou superior.
Ligar ao Azure Stack Hub
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
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"
Defina o ambiente ativo.
az cloud set -n aks-preview-test
Atualize a configuração do ambiente.
az cloud update --profile 2020-09-01-hybrid
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
Defina a subscrição na sessão da CLI do Azure como a predefinição com:
az account set --subscription <subscription-id>
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:
Tome nota do fornecedor de recursos Microsoft.ContainerService e, em seguida, registe o fornecedor:
az provider register --namespace Microsoft.ContainerService
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.
Criar um grupo de recursos:
az group create --name myResourceGroup --location <Azure Stack Hub location>
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.
- Para criar um principal de serviço (SPN) com Microsoft Entra ID, siga estas instruções.
- Para criar um SPN com os Serviços Federados do Active Directory (AD FS), siga estas instruções.
- Para atribuir a função "Contribuidor" ao SPN, veja as instruções. Certifique-se de que seleciona a função "Contribuidor".
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.Agora, pode continuar a repetir os testes para Dimensionar, implementar uma aplicação e Eliminar.
Ligar ao cluster
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
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
Para verificar a ligação ao cluster, utilize o comando kubectl get para devolver uma lista dos nós de cluster.
kubectl get nodes
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:
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
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
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
- 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.
- 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.