Dela via


Skapa Kubernetes-kluster med Bicep

Den här artikeln beskriver hur du skapar Kubernetes-kluster i Azure Local med Bicep. Arbetsflödet är följande:

  1. Skapa ett SSH-nyckelpar
  2. Skapa ett Kubernetes-kluster i Azure Local, version 23H2 med Bicep. Som standard är klustret Azure Arc-anslutet.
  3. Verifiera distributionen och anslut till klustret.

Innan du börjar

Kontrollera att du har följande förutsättningar innan du börjar:

  1. Hämta följande information från din lokala infrastrukturadministratör:

    • Azure-prenumerations-ID: Det Azure-prenumerations-ID som använder Azure Local för distribution och registrering.
    • Anpassat platsnamn eller ID: Azure Resource Manager-ID för den anpassade platsen. Den anpassade platsen konfigureras under distributionen av det lokala Azure-klustret. Infrastrukturadministratören bör ge dig Resource Manager-ID:t för den anpassade platsen. Den här parametern krävs för att skapa Kubernetes-kluster. Du kan också hämta Resource Manager-ID:t med , az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsvom infrastrukturadministratören tillhandahåller ett anpassat platsnamn och resursgruppsnamn.
    • Namn eller ID för logiskt nätverk: Azure Resource Manager-ID:t för det lokala logiska Azure-nätverket som skapades enligt dessa steg. Administratören bör ge dig ID:t för det logiska nätverket. Den här parametern krävs för att skapa Kubernetes-kluster. Du kan också hämta Azure Resource Manager-ID:t med om az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv du känner till resursgruppen där det logiska nätverket skapades.
  2. Kontrollera att du har den senaste versionen av Azure CLI på utvecklingsdatorn. Du kan också uppgradera din Azure CLI-version med hjälp av az upgrade.

  3. Ladda ned och installera kubectl på utvecklingsdatorn. Med kubernetes-kommandoradsverktyget kubectl kan du köra kommandon mot Kubernetes-kluster. Du kan använda kubectl för att distribuera program, inspektera och hantera klusterresurser och visa loggar.

Skapa ett SSH-nyckelpar

Om du vill skapa ett SSH-nyckelpar (samma som Azure AKS) använder du följande procedur:

  1. Öppna en Cloud Shell-session i webbläsaren.

  2. Skapa ett SSH-nyckelpar med hjälp av az sshkey create Azure CLI-kommandot eller ssh-keygen kommandot:

    # Create an SSH key pair using Azure CLI
    az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
    

    Eller skapa ett SSH-nyckelpar med hjälp av ssh-keygen:

    ssh-keygen -t rsa -b 4096
    

Mer information om hur du skapar SSH-nycklar finns i Skapa och hantera SSH-nycklar för autentisering i Azure.

Uppdatera och granska Bicep-skripten

Det här avsnittet visar Bicep-parametern och mallfilerna. De här filerna är också tillgängliga i en Azure-snabbstartsmall.

Bicep-parameterfil: 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

Bicep-mallfil: 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
      }
    }
  }
}

Resursen Microsoft.HybridContainerService/provisionedClusterInstances definieras i Bicep-filen. Om du vill utforska fler egenskaper kan du läsa API-referensen.

Distribuera Bicep-filen

  1. Spara Bicep-filen som main.bicep på den lokala datorn.

  2. Uppdatera parametrarna som definierats i aksarc.bicepparam och spara dem på den lokala datorn.

  3. Distribuera Bicep-filen med Azure CLI:

    az deployment group create --name BicepDeployment --resource-group myResourceGroupName --template-file main.bicep –-parameters aksarc.bicepparam
    

Verifiera Bicep-distributionen och anslut till klustret

Nu kan du ansluta till kubernetes-klustret genom att köra az connectedk8s proxy kommandot från utvecklingsdatorn. Du kan också använda kubectl för att se noden och poddstatusen. Följ samma steg som beskrivs i Anslut till Kubernetes-klustret.

Nästa steg

Skapa Kubernetes-kluster med Hjälp av Azure CLI