Criar clusters Kubernetes usando Bicep
Este artigo descreve como criar clusters Kubernetes no Azure Local usando o Bicep. O fluxo de trabalho é o seguinte:
- Criar um par de chaves SSH
- Crie um cluster Kubernetes no Azure Local, versão 23H2 usando o Bicep. Por padrão, o cluster é conectado ao Azure Arc.
- Valide a implantação e conecte-se ao cluster.
Antes de começar
Antes de começar, certifique-se de que tem os seguintes pré-requisitos:
Obtenha os seguintes detalhes do administrador de infraestrutura local:
- ID de assinatura do Azure: a ID de assinatura do Azure que usa o Azure Local para implantação e registro.
- Nome ou ID do local personalizado: a ID do Azure Resource Manager do local personalizado. O local personalizado é configurado durante a implantação do cluster Local do Azure. O administrador da infraestrutura deve fornecer a ID do Gerenciador de Recursos do local personalizado. Esse parâmetro é necessário para criar clusters do Kubernetes. Você também pode obter a ID do Gerenciador de Recursos usando
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
, se o administrador de infraestrutura fornecer um nome de local personalizado e um nome de grupo de recursos. - Nome ou ID da rede lógica: a ID do Azure Resource Manager da rede lógica local do Azure que foi criada seguindo estas etapas. O administrador deve fornecer-lhe o ID da rede lógica. Esse parâmetro é necessário para criar clusters do Kubernetes. Você também pode obter a ID do Azure Resource Manager 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.
Verifique se você tem a versão mais recente da CLI do Azure em sua máquina de desenvolvimento. Você também pode atualizar sua versão da CLI do Azure usando
az upgrade
o .Baixe e instale o kubectl em sua máquina de desenvolvimento. A ferramenta de linha de comando do Kubernetes, kubectl, permite executar comandos em clusters do Kubernetes. Você pode usar o kubectl para implantar aplicativos, inspecionar e gerenciar recursos de cluster e exibir logs.
Criar um par de chaves SSH
Para criar um par de chaves SSH (igual ao Azure AKS), use o seguinte procedimento:
Abra uma sessão do Cloud Shell no navegador.
Crie um par de chaves SSH usando o comando da CLI do
az sshkey create
Azure ou ossh-keygen
comando:# Create an SSH key pair using Azure CLI az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
Ou crie um par de chaves SSH usando
ssh-keygen
: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.
Atualizar e revisar os scripts do Bicep
Esta seção mostra o parâmetro Bicep e os arquivos de modelo. Esses arquivos também estão disponíveis em um modelo de início rápido do Azure.
Arquivo de parâmetro do bíceps: aksarc.bicepparam
using 'main.bicep'
param aksClusterName = 'aksarc-bicep-new'
param aksControlPlaneIP = 'x.x.x.x'
param sshPublicKey = 'ssh_public_key'
param hciLogicalNetworkName = 'lnet_name'
param hciCustomLocationName = 'cl_name'
param aksNodePoolOSType = 'Linux'
param aksNodePoolNodeCount = 1
Arquivo de modelo do bíceps: main.bicep
@description('The name of AKS Arc cluster resource')
param aksClusterName string
param location string = 'eastus'
// Default to 1 node CP
@description('The name of AKS Arc cluster control plane IP, provide this parameter during deployment')
param aksControlPlaneIP string
param aksControlPlaneNodeSize string = 'Standard_A4_v2'
param aksControlPlaneNodeCount int = 1
// Default to 1 node NP
param aksNodePoolName string = 'nodepool1'
param aksNodePoolNodeSize string = 'Standard_A4_v2'
param aksNodePoolNodeCount int = 1
@allowed(['Linux', 'Windows'])
param aksNodePoolOSType string = 'Linux'
@description('SSH public key used for cluster creation, provide this parameter during deployment')
param sshPublicKey string
// Build LNet ID from LNet name
@description('The name of LNet resource, provide this parameter during deployment')
param hciLogicalNetworkName string
resource logicalNetwork 'Microsoft.AzureStackHCI/logicalNetworks@2023-09-01-preview' existing = {
name: hciLogicalNetworkName
}
// Build custom location ID from custom location name
@description('The name of custom location resource, provide this parameter during deployment')
param hciCustomLocationName string
var customLocationId = resourceId('Microsoft.ExtendedLocation/customLocations', hciCustomLocationName)
// Create the connected cluster. This is the Arc representation of the AKS cluster, used to create a Managed Identity for the provisioned cluster.
resource connectedCluster 'Microsoft.Kubernetes/ConnectedClusters@2024-01-01' = {
location: location
name: aksClusterName
identity: {
type: 'SystemAssigned'
}
kind: 'ProvisionedCluster'
properties: {
agentPublicKeyCertificate: ''
aadProfile: {
enableAzureRBAC: false
}
}
}
// Create the provisioned cluster instance. This is the actual AKS cluster and provisioned on your Azure Local cluster via the Arc Resource Bridge.
resource provisionedClusterInstance 'Microsoft.HybridContainerService/provisionedClusterInstances@2024-01-01' = {
name: 'default'
scope: connectedCluster
extendedLocation: {
type: 'CustomLocation'
name: customLocationId
}
properties: {
linuxProfile: {
ssh: {
publicKeys: [
{
keyData: sshPublicKey
}
]
}
}
controlPlane: {
count: aksControlPlaneNodeCount
controlPlaneEndpoint: {
hostIP: aksControlPlaneIP
}
vmSize: aksControlPlaneNodeSize
}
networkProfile: {
loadBalancerProfile: {
count: 0
}
networkPolicy: 'calico'
}
agentPoolProfiles: [
{
name: aksNodePoolName
count: aksNodePoolNodeCount
vmSize: aksNodePoolNodeSize
osType: aksNodePoolOSType
}
]
cloudProviderProfile: {
infraNetworkProfile: {
vnetSubnetIds: [
logicalNetwork.id
]
}
}
storageProfile: {
nfsCsiDriver: {
enabled: true
}
smbCsiDriver: {
enabled: true
}
}
}
}
O recurso Microsoft.HybridContainerService/provisionedClusterInstances é definido no arquivo Bicep. Se quiser explorar mais propriedades, consulte a referência da API.
Implantar o arquivo Bicep
Salve o arquivo Bicep como main.bicep em seu computador local.
Atualize os parâmetros definidos em aksarc.bicepparam e salve-o em seu computador local.
Implante o arquivo Bicep usando a CLI do Azure:
az deployment group create --name BicepDeployment --resource-group myResourceGroupName --template-file main.bicep –-parameters aksarc.bicepparam
Validar a implantação do Bicep e conectar-se ao cluster
Agora você pode se conectar ao cluster do Kubernetes executando o az connectedk8s proxy
comando da sua máquina de desenvolvimento. Você também pode usar kubectl para ver o status do nó e do pod. Siga as mesmas etapas descritas em Conectar-se ao cluster do Kubernetes.