Guia de início rápido: implantar um host de contêiner Linux do Azure para cluster AKS usando um modelo ARM
Comece a usar o Host de Contêiner Linux do Azure usando um modelo ARM (Azure Resource Manager) para implantar um cluster de Host de Contêiner Linux do Azure. Depois de instalar os pré-requisitos, você criará um par de chaves SSH, revisará o modelo, implantará o modelo e o validará e, em seguida, implantará um aplicativo.
Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo utiliza sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.
Pré-requisitos
-
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Azure Cloud Shell Quickstart - Bash.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Se você ainda não tiver o kubectl instalado, instale-o por meio da CLI do Azure usando
az aks install-cli
ou siga as instruções upstream.Para criar um cluster AKS usando um modelo do Resource Manager, forneça uma chave pública SSH. Se você precisar desse recurso, consulte a seção a seguir; caso contrário, pule para a seção Revisar o modelo .
A identidade que você está usando para criar seu cluster tem as permissões mínimas apropriadas. Para obter mais informações sobre acesso e identidade para AKS, consulte Opções de acesso e identidade para o Serviço Kubernetes do Azure (AKS).
Para implementar um ficheiro Bicep ou modelo do ARM, precisa de acesso de escrita nos recursos que está a implementar e acesso a todas as operações no tipo de recurso Microsoft.Resources/deployments. Por exemplo, para implementar uma máquina virtual, precisa das permissões Microsoft.Compute/virtualMachines/write e Microsoft.Resources/deployments/*. Para obter uma lista de funções e permissões, veja Funções incorporadas do Azure.
Criar um par de chaves SSH
Para acessar os nós AKS, você se conecta usando um par de chaves SSH (público e privado), que você gera usando o ssh-keygen
comando. Por padrão, esses arquivos são criados no diretório ~/.ssh . A execução do ssh-keygen
comando substitui qualquer par de chaves SSH com o mesmo nome já existente no local determinado.
Vá para https://shell.azure.com abrir o Cloud Shell no seu navegador.
Execute o comando
ssh-keygen
. O exemplo a seguir cria um par de chaves SSH usando criptografia RSA e um comprimento de bit de 4096:ssh-keygen -t rsa -b 4096
Para obter mais informações sobre como criar chaves SSH, consulte Criar e gerenciar chaves SSH para autenticação no Azure.
Rever o modelo
A implantação a seguir usa um modelo ARM dos Modelos de Início Rápido do Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "azurelinuxakscluster",
"metadata": {
"description": "The name of the Managed Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the Managed Cluster resource."
}
},
"dnsPrefix": {
"type": "string",
"metadata": {
"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
}
},
"osDiskSizeGB": {
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1023,
"metadata": {
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
}
},
"agentCount": {
"type": "int",
"defaultValue": 3,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "Standard_DS2_v2",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"linuxAdminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Linux Virtual Machines."
}
},
"sshRSAPublicKey": {
"type": "string",
"metadata": {
"description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'"
}
},
"osType": {
"type": "string",
"defaultValue": "Linux",
"allowedValues": [
"Linux"
],
"metadata": {
"description": "The type of operating system."
}
},
"osSKU": {
"type": "string",
"defaultValue": "AzureLinux",
"allowedValues": [
"AzureLinux",
"Ubuntu"
],
"metadata": {
"description": "The Linux SKU to use."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2021-03-01",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"properties": {
"dnsPrefix": "[parameters('dnsPrefix')]",
"agentPoolProfiles": [
{
"name": "agentpool",
"mode": "System",
"osDiskSizeGB": "[parameters('osDiskSizeGB')]",
"count": "[parameters('agentCount')]",
"vmSize": "[parameters('agentVMSize')]",
"osType": "[parameters('osType')]",
"osSKU": "[parameters('osSKU')]",
"storageProfile": "ManagedDisks"
}
],
"linuxProfile": {
"adminUsername": "[parameters('linuxAdminUsername')]",
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
}
},
"identity": {
"type": "SystemAssigned"
}
}
],
"outputs": {
"controlPlaneFQDN": {
"type": "string",
"value": "[reference(parameters('clusterName')).fqdn]"
}
}
}
Para adicionar o Azure Linux a um modelo ARM existente, você precisa adicionar "osSKU": "AzureLinux"
e "mode": "System"
definir agentPoolProfiles
a apiVersion como 2021-03-01 ou mais recente ("apiVersion": "2021-03-01"
).
Implementar o modelo
Selecione o botão a seguir para entrar no Azure e abrir um modelo.
Selecione ou introduza os seguintes valores.
Para este início rápido, deixe os valores padrão para o GB de tamanho de disco do sistema operacional, contagem de agentes, tamanho da VM do agente, tipo de sistema operacional e versão do Kubernetes. Forneça seus próprios valores para os seguintes parâmetros de modelo:
- Subscrição: selecione uma subscrição do Azure.
- Grupo de recursos: selecione Criar novo. Insira um nome exclusivo para o grupo de recursos, como testAzureLinuxResourceGroup, e escolha OK.
- Localização: selecione um local, como East US.
- Nome do cluster: insira um nome exclusivo para o cluster AKS, como testAzureLinuxCluster.
- Prefixo DNS: insira um prefixo DNS exclusivo para seu cluster, como myAzureLinuxCluster.
- Linux Admin Username: insira um nome de usuário para se conectar usando SSH, como azureUser.
- Chave Pública RSA SSH: copie e cole a parte pública do seu par de chaves SSH (por padrão, o conteúdo de ~/.ssh/id_rsa.pub).
Selecione Rever + Criar.
Leva alguns minutos para criar o cluster de Host de Contêiner Linux do Azure. Aguarde até que o cluster seja implantado com êxito antes de passar para a próxima etapa.
Validar a implementação
Ligar ao cluster
Para gerenciar um cluster Kubernetes, use o cliente de linha de comando Kubernetes, kubectl.
Instale
kubectl
localmente usando oaz aks install-cli
comando:az aks install-cli
Configure
kubectl
para se conectar ao cluster do Kubernetes usando oaz aks get-credentials
comando. Este comando baixa credenciais e configura a CLI do Kubernetes para usá-las.az aks get-credentials --resource-group testAzureLinuxResourceGroup --name testAzureLinuxCluster
Verifique a conexão com o cluster usando o
kubectl get
comando. Este comando retorna uma lista dos nós do cluster.kubectl get nodes
O exemplo de saída a seguir mostra os três nós criados nas etapas anteriores. Verifique se o status do nó está Pronto:
NAME STATUS ROLES AGE VERSION aks-agentpool-41324942-0 Ready agent 6m44s v1.12.6 aks-agentpool-41324942-1 Ready agent 6m46s v1.12.6 aks-agentpool-41324942-2 Ready agent 6m45s v1.12.6
Implementar a aplicação
Um arquivo de manifesto do Kubernetes define o estado desejado de um cluster, como quais imagens de contêiner devem ser executadas.
Neste início rápido, você usa um manifesto para criar todos os objetos necessários para executar o aplicativo Azure Vote. Esse manifesto inclui duas implantações do Kubernetes:
- O exemplo de aplicativos Python do Azure Vote.
- Uma instância Redis.
Dois Serviços Kubernetes também são criados:
- Um serviço interno para a instância Redis.
- Um serviço externo para acessar o aplicativo Azure Vote da Internet.
Crie um ficheiro com o nome
azure-vote.yaml
.- Se você usar o Azure Cloud Shell, esse arquivo poderá ser criado usando
code
,vi
ounano
como se estivesse trabalhando em um sistema virtual ou físico
- Se você usar o Azure Cloud Shell, esse arquivo poderá ser criado usando
Copie na seguinte definição de YAML:
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: mcr.microsoft.com/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: mcr.microsoft.com/azuredocs/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
Para obter um detalhamento dos arquivos de manifesto YAML, consulte Implantações e manifestos YAML.
Implante o aplicativo usando o comando kubectl apply e especifique o nome do seu manifesto YAML:
kubectl apply -f azure-vote.yaml
O exemplo a seguir é semelhante à saída mostrando as implantações e serviços criados com êxito:
deployment "azure-vote-back" created service "azure-vote-back" created deployment "azure-vote-front" created service "azure-vote-front" created
Testar a aplicação
Quando o aplicativo é executado, um serviço Kubernetes expõe o front-end do aplicativo à Internet. Este processo pode demorar alguns minutos a concluir.
Monitore o progresso usando o comando kubectl get service com o --watch
argumento.
kubectl get service azure-vote-front --watch
A saída EXTERNAL-IP para o serviço será inicialmente mostrada azure-vote-front
como pendente.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Quando o endereço EXTERNAL-IP mudar de pendente para um endereço IP público real, use CTRL-C
para interromper o kubectl
processo de monitoramento. A saída de exemplo a seguir 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 para o endereço IP externo do seu serviço.
Eliminar o cluster
Se você não vai continuar com os tutoriais a seguir, para evitar cobranças do Azure, limpe todos os recursos desnecessários. Use o az group delete
comando para remover o grupo de recursos e todos os recursos relacionados.
az group delete --name testAzureLinuxCluster --yes --no-wait
Próximos passos
Neste início rápido, você implantou um cluster de Host de Contêiner Linux do Azure. Para saber mais sobre o Host de Contêiner Linux do Azure e percorrer um exemplo completo de implantação e gerenciamento de cluster, continue para o tutorial do Host de Contêiner Linux do Azure.