Erstellen von Kubernetes-Clustern mit Terraform (Vorschau)
In diesem Artikel wird beschrieben, wie Kubernetes-Cluster in Azure Local mithilfe von Terraform und dem Azure Verified-Modul erstellt werden. Der Workflow lautet wie folgt:
- Erstellen Sie ein SSH-Schlüsselpaar.
- Erstellen Sie einen Kubernetes-Cluster in Azure Local 23H2 mit Terraform. Standardmäßig ist der Cluster mit Azure Arc verbunden.
- Überprüfen Sie die Bereitstellung, und stellen Sie eine Verbindung mit dem Cluster her.
Wichtig
Diese Vorschaufeatures sind auf Self-Service-, Opt-In-Basis verfügbar. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von Service Level Agreements und der Herstellergarantie ausgeschlossen. Azure Kubernetes Service, aktiviert durch Azure Arc Previews, werden teilweise vom Kundensupport auf Best-Effort-Basis abgedeckt.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- 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 Stack HCI-Netzwerks, das mit diesen 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.
- Stellen Sie sicher, dass Sie GitHub, die neueste Version von Azure CLI und den Terraform-Client auf Ihrem Entwicklungscomputer installiert haben.
- Laden Sie Kubectl auf Ihrem Entwicklungscomputer herunter, und installieren Sie es.
Erstellen eines SSH-Schlüsselpaars
Verwenden Sie zum Erstellen eines SSH-Schlüsselpaars (identisch mit Azure AKS) das folgende Verfahren:
Öffnen Sie eine Cloud Shell-Sitzung in Ihrem Browser.
Erstellen Sie ein SSH-Schlüsselpaar mithilfe des az sshkey create command, from the portal, or the
ssh-keygen
command:az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
or
ssh-keygen -t rsa -b 4096
Rufen Sie den Wert Ihres öffentlichen Schlüssels aus Azure oder von Ihrem lokalen Computer unter "/.ssh/id_rsa.pub" ab.
Anmelden bei Azure
Terraform unterstützt nur die Authentifizierung bei Azure mithilfe der Azure CLI. Die Authentifizierung mit Azure PowerShell wird nicht unterstützt. Daher müssen Sie sich zuerst bei Azure authentifizieren, während Sie das Azure PowerShell-Modul bei Ihrer Terraform-Arbeit verwenden können.
Implementieren des Terraform-Codes
Erstellen Sie ein Verzeichnis, in dem Sie den Terraform-Beispielcode testen können, und legen Sie es als aktuelles Verzeichnis fest.
Erstellen Sie im selben Verzeichnis eine Datei mit dem Namen providers.tf , und fügen Sie den folgenden Code ein:
terraform { required_version = "~> 1.5" required_providers { azapi = { source = "azure/azapi" version = "~> 1.13" } azurerm = { source = "hashicorp/azurerm" version = "~> 3.74" } } } provider "azurerm" { features { resource_group { prevent_deletion_if_contains_resources = false } } }
Erstellen Sie eine weitere Datei mit dem Namen main.tf , die auf das neueste AKS Arc AVM-Modul verweist, und fügen Sie den folgenden Code ein. Sie können die Beschreibung und Eingabe des Moduls lesen und bei Bedarf optionale Parameter hinzufügen:
module "aks_arc" { # Make sure to use the latest AVM module version source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" version = "0.5.0" # Make sure to provide all required parameters resource_group_id = "<Resource_Group>" location = "<Region>" name = "<Cluster_Name>" logical_network_id = "<LNet_ID>" custom_location_id = "<CustomLocation_ID>" agent_pool_profiles = [{count=1}] # Optional parameters ssh_public_key = "Your_SSH_Key" enable_workload_identity = true enable_oidc_issuer = true rbac_admin_group_object_ids = "" }
Initialisieren von Terraform
Führen Sie zum Initialisieren der Terraform-Bereitstellung terraform init
aus. Stellen Sie sicher, dass Sie das -upgrade
Flag verwenden, um die erforderlichen Anbieter-Plug-Ins auf die neueste Version zu aktualisieren:
terraform init -upgrade
Erstellen eines Terraform-Ausführungsplans und Anwenden des Plans
Führen Sie terraform plan to create an execution plan, then run terraform apply to apply the output file to your cloud infrastructure:
terraform plan -out main.tfplan
terraform apply main.tfplan
Der Befehl wird ausgeführt, und es wird ein Erfolg zurückgegeben, nachdem die Ressource erfolgreich bereitgestellt wurde.
Überprüfen der Bereitstellung und Herstellen einer Verbindung mit dem Cluster
Sie können jetzt eine Verbindung mit Ihrem Kubernetes-Cluster herstellen, indem Sie von Ihrem Entwicklungscomputer aus ausgeführt werden az connectedk8s proxy
. 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.