Criar clusters do Kubernetes usando a CLI do Azure
Aplica-se a: Azure Stack HCI, versão 23H2
Este artigo descreve como criar clusters do Kubernetes no Azure Stack HCI usando a CLI do Azure. O fluxo de trabalho é o seguinte:
- Crie um cluster do Kubernetes no Azure Stack HCI 23H2 usando a CLI do Azure. O cluster é conectado ao Azure Arc por padrão.
- Ao criar o cluster, você fornece um grupo de Microsoft Entra que contém a lista de usuários Microsoft Entra com acesso de administrador de cluster do Kubernetes.
- Acesse o cluster usando kubectl e seu Microsoft Entra ID.
- Executar um aplicativo de vários contêineres de exemplo com um front-end da Web e uma instância do Redis no cluster.
Antes de começar
- Antes de começar, verifique se você tem os seguintes detalhes do administrador de infraestrutura local:
- ID da assinatura do Azure – a ID de assinatura do Azure em que o Azure Stack HCI é usado para implantação e registro.
-
ID de Local Personalizado – Azure Resource Manager ID do local personalizado. O local personalizado é configurado durante a implantação do cluster do Azure Stack HCI. O administrador da infraestrutura deve fornecer a ID de Resource Manager do local personalizado. Esse parâmetro é necessário para criar clusters do Kubernetes. Você também pode obter a ID do Resource Manager usando
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
, se o administrador da infraestrutura fornecer um nome de local personalizado e um nome de grupo de recursos. -
ID de rede – Azure Resource Manager ID da rede lógica do Azure Stack HCI criada seguindo estas etapas. Seu administrador deve fornecer a ID da rede lógica. Esse parâmetro é necessário para criar clusters do Kubernetes. Você também pode obter a ID de Resource Manager do Azure usando
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv
se souber o grupo de recursos no qual a rede lógica foi criada.
- Você pode executar as etapas neste artigo em um computador de desenvolvimento local para criar um cluster do Kubernetes em sua implantação remota do Azure Stack HCI. Verifique se você tem a versão mais recente da CLI do Az em seu computador de desenvolvimento. Você também pode optar por atualizar sua versão da CLI do Az usando
az upgrade
. - Para se conectar ao cluster kubernetes de qualquer lugar, crie um grupo de Microsoft Entra e adicione membros a ele. Todos os membros do grupo Microsoft Entra têm acesso de administrador de cluster ao cluster. Adicione-se como membro ao grupo Microsoft Entra. Se você não adicionar a si mesmo, não poderá acessar o cluster do Kubernetes usando kubectl. Para obter mais informações sobre como criar grupos de Microsoft Entra e adicionar usuários, consulte Gerenciar grupos de Microsoft Entra e associação a grupos.
- Baixe e instale o kubectl em seu computador de desenvolvimento. A ferramenta de linha de comando do Kubernetes, kubectl, permite que você execute comandos em clusters do Kubernetes. Você pode usar o kubectl para implantar aplicativos, inspecionar e gerenciar recursos de cluster e exibir logs.
Instalar a extensão da CLI do Azure
Execute o seguinte comando para instalar as extensões necessárias da CLI do Azure:
az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade
Criar um cluster do Kubernetes
Use o az aksarc create
comando para criar um cluster kubernetes no AKS Arc. Certifique-se de entrar no Azure antes de executar este comando. Se você tiver várias assinaturas do Azure, selecione a ID de assinatura apropriada usando o comando az account set .
az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys --load-balancer-count 0 --control-plane-ip $controlplaneIP
Após alguns minutos, o comando será concluído e retornará informações no formato JSON sobre o cluster.
Conectar-se ao cluster do Kubernetes
Agora você pode se conectar ao cluster do Kubernetes executando o az connectedk8s proxy
comando do computador de desenvolvimento. Certifique-se de entrar no Azure antes de executar este comando. Se você tiver várias assinaturas do Azure, selecione a ID de assinatura apropriada usando o comando az account set .
Esse comando baixa o kubeconfig do cluster kubernetes para seu computador de desenvolvimento e abre um canal de conexão proxy para o cluster kubernetes local. O canal fica aberto enquanto o comando for executado. Deixe esse comando ser executado enquanto você quiser acessar o cluster. Se atingir o tempo limite, feche a janela da CLI, abra uma nova e execute o comando novamente.
Você deve ter permissões de Colaborador no grupo de recursos que hospeda o cluster do Kubernetes para executar o seguinte comando com êxito:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Saída esperada:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.
Mantenha esta sessão em execução e conecte-se ao cluster do Kubernetes de um prompt de terminal/comando diferente. Verifique se você pode se conectar ao cluster do Kubernetes executando o comando kubectl get. Este comando retorna uma lista dos nós de cluster:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
O exemplo de saída a seguir mostra o nó criado nas etapas anteriores. Verifique se que o status do nó é Pronto:
NAME STATUS ROLES AGE VERSION
moc-l0ttdmaioew Ready control-plane,master 34m v1.24.11
moc-ls38tngowsl Ready <none> 32m v1.24.11
Implantar o aplicativo
Um arquivo de manifesto do Kubernetes define o estado desejado de um cluster, por exemplo, as imagens de contêiner a serem executadas.
Você pode usar um manifesto para criar todos os objetos necessários para executar o aplicativo Azure Vote. Esse manifesto inclui duas implantações do Kubernetes:
- Os aplicativos Azure Vote de exemplo em Python.
- Uma instância do Redis.
Dois serviços do Kubernetes também são criados:
- Um serviço interno para a instância do Redis.
- Um serviço externo para acessar o aplicativo Azure Vote da Internet.
Crie um arquivo chamado azure-vote.yaml e copie o seguinte manifesto:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: <path to image>/oss/bitnami/redis:6.0.8
env:
- name: ALLOW_EMPTY_PASSWORD
value: "yes"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Implante o aplicativo usando o comando kubectl apply e especifique o nome do YAML:
kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config
A saída de exemplo a seguir mostra as implantações e os serviços criados com sucesso:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Testar o aplicativo
Quando o aplicativo é executado, um serviço de Kubernetes expõe o front-end do aplicativo à Internet. A conclusão desse processo pode levar alguns minutos.
Monitore o andamento usando o comando kubectl get service com o argumento --watch
.
kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config
A saída EXTERNAL-IP para o serviço azure-vote-front inicialmente é mostrada como pendente.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Depois que o endereço EXTERNAL-IP for alterado de pendente para um endereço IP público real, use CTRL-C para interromper o processo de kubectl watch. A seguinte saída de exemplo mostra um endereço IP público válido atribuído ao serviço:
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Para ver o aplicativo Azure Vote em ação, abra um navegador da Web no endereço IP externo do serviço.
Excluir o cluster
Execute o az aksarc delete
comando para limpo o cluster que você criou:
az aksarc delete --resource-group $aksclustername --name $resource_group