Freigeben über


Erstellen von Kubernetes-Clustern mit Bicep

In diesem Artikel wird beschrieben, wie Kubernetes-Cluster in Azure Local mithilfe von Bicep erstellt werden. Der folgende Workflow wird verwendet:

  1. Erstellen eines SSH-Schlüsselpaars
  2. Erstellen Sie einen Kubernetes-Cluster in Azure Local, Version 23H2 mit Bicep. Standardmäßig ist der Cluster mit Azure Arc verbunden.
  3. Überprüfen Sie die Bereitstellung, und stellen Sie eine Verbindung mit dem Cluster her.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:

  1. Rufen Sie die folgenden Details von Ihrem lokalen Infrastrukturadministrator ab:

    • Azure-Abonnement-ID: die Azure-Abonnement-ID, die Azure Local für die Bereitstellung und Registrierung verwendet.
    • Name oder ID des benutzerdefinierten Standorts: die Azure Resource Manager-ID des benutzerdefinierten Speicherorts. Der benutzerdefinierte Speicherort wird während der Azure Local Cluster-Bereitstellung konfiguriert. Ihr Infrastrukturadministrator sollte Ihnen die Ressourcen-Manager-ID des benutzerdefinierten Speicherorts geben. Dieser Parameter ist erforderlich, um Kubernetes-Cluster zu erstellen. Sie können auch die Ressourcen-Manager-ID verwenden az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, wenn der Infrastrukturadministrator einen benutzerdefinierten Standortnamen und Ressourcengruppennamen bereitstellt.
    • Logischer Netzwerkname oder die ID: Die Azure Resource Manager-ID des logischen Azure-Netzwerks, das mit den folgenden Schritten erstellt wurde. Ihr Administrator sollte Ihnen die ID des logischen Netzwerks geben. Dieser Parameter ist erforderlich, um Kubernetes-Cluster zu erstellen. Sie können auch die Azure Resource Manager-ID abrufen az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv , wenn Sie die Ressourcengruppe kennen, in der das logische Netzwerk erstellt wurde.
  2. Stellen Sie sicher, dass Sie über die neueste Version von Azure CLI auf Ihrem Entwicklungscomputer verfügen. Sie können ihre Azure CLI-Version auch mit einem Upgrade aktualisieren az upgrade.

  3. Laden Sie Kubectl auf Ihrem Entwicklungscomputer herunter, und installieren Sie es. Mit dem Befehlszeilentool Kubernetes, Kubectl, können Sie Befehle für Kubernetes-Cluster ausführen. Sie können Kubectl verwenden, um Anwendungen bereitzustellen, Clusterressourcen zu prüfen und zu verwalten und Protokolle anzuzeigen.

Erstellen eines SSH-Schlüsselpaars

Verwenden Sie zum Erstellen eines SSH-Schlüsselpaars (identisch mit Azure AKS) das folgende Verfahren:

  1. Öffnen Sie eine Cloud Shell-Sitzung in Ihrem Browser.

  2. Erstellen Sie ein SSH-Schlüsselpaar mithilfe des az sshkey create Azure CLI-Befehls oder des ssh-keygen Befehls:

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

    Oder erstellen Sie ein SSH-Schlüsselpaar mit ssh-keygen:

    ssh-keygen -t rsa -b 4096
    

Weitere Informationen zum Erstellen von SSH-Schlüsseln finden Sie unter Erstellen und Verwalten von SSH-Schlüsseln für die Authentifizierung in Azure.

Aktualisieren und Überprüfen der Bicep-Skripts

Dieser Abschnitt enthält die Bicep-Parameter und Vorlagendateien. Diese Dateien sind auch in einer Azure-Schnellstartvorlage verfügbar.

Bicep-Parameterdatei: 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-Vorlagendatei: 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
      }
    }
  }
}

Die Microsoft.HybridContainerService/provisionedClusterInstances-Ressource wird in der Bicep-Datei definiert. Wenn Sie weitere Eigenschaften erkunden möchten, lesen Sie die API-Referenz.

Bereitstellen der Bicep-Datei

  1. Speichern Sie die Bicep-Datei als main.bicep auf Ihrem lokalen Computer.

  2. Aktualisieren Sie die in aksarc.bicepparam definierten Parameter, und speichern Sie sie auf Ihrem lokalen Computer.

  3. Bereitstellen der Bicep-Datei mit Azure CLI:

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

Überprüfen der Bicep-Bereitstellung und Herstellen einer Verbindung mit dem Cluster

Sie können jetzt eine Verbindung mit Ihrem Kubernetes-Cluster herstellen, indem Sie den az connectedk8s proxy Befehl von Ihrem Entwicklungscomputer aus ausführen. Sie können auch kubectl verwenden, um den Knoten- und Podstatus anzuzeigen. Führen Sie die gleichen Schritte aus, wie unter "Verbinden mit dem Kubernetes-Cluster" beschrieben.

Nächste Schritte

Erstellen von Kubernetes-Clustern mit Azure CLI