Início Rápido: criar um cluster do Kubernetes do Nexus do Azure usando a CLI do Azure

  • Implantar um cluster do Kubernetes do Nexus do Azure usando a CLI do Azure.

Antes de começar

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

  • Instale a última versão das extensões da CLI do Azure necessárias.

  • Este artigo requer a versão 2.49.0 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.

  • Se tiver várias assinaturas do Azure, selecione a ID da assinatura adequada para cobrança dos recursos usando o comando az account.

  • Consulte a tabela de SKU da VM na seção de referência para obter a lista de SKUs de VM com suporte.

  • Consulte as versões do Kubernetes com suporte para obter a lista de versões do Kubernetes com suporte.

  • Crie um grupo de recursos usando o comando az group create. Um grupo de recursos do Azure é um grupo lógico no qual os recursos do Azure são implantados e gerenciados. Ao criar um grupo de recursos, você é solicitado a especificar um local. Essa é a localização na qual os metadados do grupo de recursos são armazenados e na qual os recursos são executados no Azure, caso você não especifique outra região durante a criação de recursos. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local eastus.

    az group create --name myResourceGroup --location eastus
    

    O exemplo de saída a seguir é semelhante à criação bem-sucedida do grupo de recursos:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Para implantar um arquivo Bicep ou um modelo do ARM, você precisa de acesso de gravação nos recursos que está implantando e acesso a todas as operações no tipo de recurso Microsoft.Resources/implantações. Por exemplo, para implantar um cluster, você precisa das permissões Microsoft.NetworkCloud/kubernetesclusters/write e Microsoft.Resources/deployments/*. Para ver uma lista de funções e permissões, consulte Funções interna do Azure.

  • Você precisa da ID do recurso custom location do cluster do Nexus do Operador do Azure.

  • Você precisa criar várias redes de acordo com os requisitos específicos de sua carga de trabalho, e é essencial ter os endereços IP apropriados disponíveis para suas cargas de trabalho. Para garantir uma implementação tranquila, recomenda-se consultar as equipes de suporte relevantes para obter assistência.

  • Este guia de início rápido pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, confira Principais conceitos do Kubernetes para o AKS (Serviço de Kubernetes do Azure).

Criar um cluster do Kubernetes do Nexus do Azure

O exemplo a seguir cria um cluster chamado myNexusK8sCluster no grupo de recursos myResourceGroup no local eastus.

Antes de executar os comandos, você precisa definir várias variáveis para definir a configuração do cluster. Aqui estão as variáveis que precisam ser definidas, juntamente com alguns valores padrão que você pode usar para determinadas variáveis:

Variável Descrição
LOCALIZAÇÃO A região do Azure na qual você deseja criar o cluster.
RESOURCE_GROUP O nome do grupo de recursos do Azure no qual você deseja criar o cluster.
SUBSCRIPTION_ID A ID da sua assinatura do Azure.
CUSTOM_LOCATION Este argumento especifica um local personalizado da instância Nexus.
CSN_ARM_ID A ID de CSN é o identificador exclusivo para a rede de serviços de nuvem que você deseja usar.
CNI_ARM_ID A ID de CNI é o identificador exclusivo para o adaptador de rede a ser usado pelo runtime do contêiner.
AAD_ADMIN_GROUP_OBJECT_ID O ID do objeto do grupo Microsoft Entra que deve ter privilégios de administrador no cluster.
CLUSTER_NAME O nome que você deseja dar ao cluster do Kubernetes do Nexus.
K8S_VERSION A versão do Kubernetes que você deseja usar.
ADMIN_USERNAME O nome de usuário do administrador do cluster.
SSH_PUBLIC_KEY A chave pública SSH usada para comunicação segura com o cluster.
CONTROL_PLANE_COUNT O número de nós do painel de controle do cluster.
CONTROL_PLANE_VM_SIZE O tamanho da máquina virtual dos nós do plano de controle.
INITIAL_AGENT_POOL_NAME O nome do pool de agentes inicial.
INITIAL_AGENT_POOL_COUNT O número de nós no pool de agentes inicial.
INITIAL_AGENT_POOL_VM_SIZE O tamanho da máquina virtual do pool de agentes inicial.
POD_CIDR O intervalo de rede dos pods do Kubernetes no cluster, em notação CIDR.
SERVICE_CIDR O intervalo de rede dos serviços do Kubernetes no cluster, em notação CIDR.
DNS_SERVICE_IP O endereço IP do serviço DNS do Kubernetes.

Depois de definir essas variáveis, você poderá executar o comando da CLI do Azure para criar o cluster. Adicione o sinalizador --debug no final para fornecer uma saída mais detalhada para fins de solução de problemas.

Para definir essas variáveis, use os comandos set a seguir e substitua os valores de exemplo pelos valores de sua preferência. Você também pode usar os valores padrão para algumas das variáveis, conforme mostrado no exemplo a seguir:

RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"

Importante

É essencial que você substitua os espaços reservados para CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID e AAD_ADMIN_GROUP_OBJECT_ID pelos valores reais antes de executar esses comandos.

Depois de definir essas variáveis, você pode criar o cluster do Kubernetes executando o seguinte comando da CLI do Azure:

az networkcloud kubernetescluster create \
  --name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --location "${LOCATION}" \
  --kubernetes-version "${K8S_VERSION}" \
  --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
  --admin-username "${ADMIN_USERNAME}" \
  --ssh-key-values "${SSH_PUBLIC_KEY}" \
  --control-plane-node-configuration \
    count="${CONTROL_PLANE_COUNT}" \
    vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
    ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
  --network-configuration \
    cloud-services-network-id="${CSN_ARM_ID}" \
    cni-network-id="${CNI_ARM_ID}" \
    pod-cidrs="[${POD_CIDR}]" \
    service-cidrs="[${SERVICE_CIDR}]" \
    dns-service-ip="${DNS_SERVICE_IP}"

Se não houver capacidade suficiente para implantar os nós de cluster solicitados, uma mensagem de erro será exibida. No entanto, essa mensagem não fornece detalhes sobre a capacidade disponível. Ela indica que a criação do cluster não pode continuar devido à capacidade insuficiente.

Observação

O cálculo de capacidade leva em conta o cluster de toda a plataforma, em vez de se limitar a racks individuais. Portanto, se um pool de agentes for criado em uma zona (sendo um rack igual a uma zona) com capacidade insuficiente, mas outra zona tiver capacidade suficiente, a criação do cluster continuará, mas acabará atingindo o tempo limite. Essa abordagem de verificação da capacidade só fará sentido se uma zona específica não for especificada durante a criação do cluster ou do pool de agentes.

Após alguns minutos, o comando será concluído e retornará informações sobre o cluster. Para obter opções mais avançadas, consulte Início Rápido: Implantar um cluster do Kubernetes do Nexus do Azure usando o Bicep.

Examinar os recursos implantados

Depois que a implantação for concluída, você poderá exibir os recursos usando a CLI ou o portal do Azure.

Para exibir os detalhes do cluster myNexusK8sCluster no grupo de recursos myResourceGroup, execute o seguinte comando da CLI do Azure:

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

Além disso, para obter uma lista de nomes de pool de agentes associados ao cluster myNexusK8sCluster no grupo de recursos myResourceGroup, você pode usar o seguinte comando da CLI do Azure.

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

Conectar-se ao cluster

Agora que o cluster do Kubernetes do Nexus foi criado e conectado com êxito ao Azure Arc, você pode se conectar facilmente a ele usando o recurso de conexão de cluster. A conexão de cluster permite que você acesse e gerencie com segurança seu cluster de qualquer lugar, tornando-o conveniente para tarefas interativas de desenvolvimento, depuração e administração de cluster.

Para obter informações mais detalhadas sobre as opções disponíveis, consulte Conectar-se a um cluster do Kubernetes do Operador Nexus do Azure.

Observação

Quando você cria um cluster do Kubernetes do Nexus, o Nexus cria automaticamente um grupo de recursos dedicado ao armazenamento dos recursos de cluster, dentro desse grupo, o recurso de cluster conectado do Arc é estabelecido.

Para acessar o cluster, você precisa configurar a conexão do cluster kubeconfig. Depois de fazer logon na CLI do Azure com a entidade Microsoft Entra relevante, você pode obter o kubeconfig necessário para se comunicar com o cluster de qualquer lugar, mesmo fora do firewall que o cerca.

  1. Configure as variáveis CLUSTER_NAME, RESOURCE_GROUP e SUBSCRIPTION_ID.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Consultar o grupo de recursos gerenciados com o az e armazenar no MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. O comando a seguir inicia um proxy connectedk8s que permite que você se conecte ao servidor de API do Kubernetes para o cluster especificado do Kubernetes do Nexus.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Use kubectl para enviar solicitações ao cluster:

    kubectl get pods -A
    

    Agora você deve conseguir ver uma resposta do cluster contendo a lista de todos os nós.

Observação

Se estiver vendo a mensagem de erro "Falha ao postar o token de acesso no proxy do cliente ou Falha ao se conectar à MSI", talvez seja necessário executar um az login para se autenticar novamente no Azure.

Adicionar um pool de agentes

O cluster criado na etapa anterior tem um único pool de nós. Vamos adicionar um segundo pool de agentes usando o comando az networkcloud kubernetescluster agentpool create. O exemplo a seguir cria um pool de agentes chamado myNexusK8sCluster-nodepool-2:

Você também pode usar os valores padrão para algumas das variáveis, conforme mostrado no exemplo a seguir:

RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"

Depois de definir essas variáveis, você pode adicionar um pool de agentes executando o seguinte comando da CLI do Azure:

az networkcloud kubernetescluster agentpool create \
  --name "${AGENT_POOL_NAME}" \
  --kubernetes-cluster-name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --count "${AGENT_POOL_COUNT}" \
  --mode "${AGENT_POOL_MODE}" \
  --vm-sku-name "${AGENT_POOL_VM_SIZE}"

Após alguns minutos, o comando será concluído e retornará informações sobre o pool de agentes. Para obter opções mais avançadas, consulte Início Rápido: Implantar um cluster do Kubernetes do Nexus do Azure usando o Bicep.

Observação

Você pode adicionar vários pools de agentes durante a criação inicial do próprio cluster usando as configurações iniciais do pool de agentes. No entanto, se você quiser adicionar pools de agentes após a criação inicial, poderá utilizar o comando acima para criar pools de agentes adicionais para o cluster do Kubernetes do Nexus.

O exemplo de saída a seguir é semelhante à criação bem-sucedida do pool de agentes.

$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count    Location    Mode    Name                          ProvisioningState    ResourceGroup    VmSkuName
-------  ----------  ------  ----------------------------  -------------------  ---------------  -----------
1        eastus      System  myNexusK8sCluster-nodepool-1  Succeeded            myResourceGroup  NC_P10_56_v1
1        eastus      User    myNexusK8sCluster-nodepool-2  Succeeded            myResourceGroup  NC_P10_56_v1

Limpar os recursos

Quando não for mais necessário, exclua o grupo de recursos. O grupo de recursos e todos os recursos no grupo de recursos são excluídos.

Use o comando az group delete para remover o grupo de recursos, o cluster do Kubernetes e todos os recursos relacionados, exceto os recursos de rede do Nexus do Operador.

az group delete --name myResourceGroup --yes --no-wait

Próximas etapas

Agora você pode implantar os CNFs diretamente pela conexão de cluster ou pelo Gerenciador de Serviço do Operador do Azure.