Bereitstellen des Open Service Mesh-Add-ons mit Bicep in Azure Kubernetes Service (AKS)

In diesem Artikel erfahren Sie, wie Sie das OSM-Add-On (Open Service Mesh) mithilfe einer Bicep-Vorlage in AKS (Azure Kubernetes Service) bereitstellen.

Hinweis

Mit der Einstellung von Open Service Mesh (OSM) durch die Cloud Native Computing Foundation (CNCF) empfehlen wir, Ihre OSM-Konfigurationen zu identifizieren und zu einer entsprechenden Istio-Konfiguration zu migrieren. Informationen zum Migrieren von OSM zu Istio finden Sie in den Migrationsanleitungen für Open Service Mesh (OSM)-Konfigurationen zu Istio.

Wichtig

Je nach der Version von Kubernetes, die Ihr Cluster ausführt, installiert das OSM-Add-On eine andere Version von OSM:

Kubernetes-Version Installierte OSM-Version
1.24.0 oder höher 1.2.5
Zwischen 1.23.5 und 1.24.0 1.1.3
Niedriger als 1.23.5 1.0.0

Ältere Versionen von OSM sind möglicherweise nicht für die Installation verfügbar oder werden u. U. nicht aktiv unterstützt, wenn die entsprechende AKS-Version das Ende der Lebensdauer erreicht hat. Informationen zu Supportfenstern für AKS-Versionen finden Sie im Releasekalender für AKS Kubernetes.

Bicep ist eine domänenspezifische Sprache, die eine deklarative Syntax zur Bereitstellung von Azure-Ressourcen verwendet. Sie können Bicep verwenden, statt Azure Resource Manager-Vorlagen zu erstellen, um Ihre Azure-Ressourcen mit Infrastructure-as-Code bereitzustellen.

Voraussetzungen

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

Installieren des OSM-Add-Ons für einen neuen AKS-Cluster mit Bicep

Zur Bereitstellung eines neuen AKS-Clusters aktivieren Sie das OSM-Add-On bei der Clustererstellung. In den folgenden Anweisungen wird eine generische Bicep-Vorlage verwendet, die einen AKS-Cluster mithilfe kurzlebiger Datenträger und der Containernetzwerkschnittstelle kubenet bereitstellt und dann das OSM-Add-On aktiviert. Erweiterte Bereitstellungsszenarien finden Sie unter Was ist Bicep?

Erstellen einer Ressourcengruppe

  • Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe.

    az group create --name <my-osm-bicep-aks-cluster-rg> --location <azure-region>
    

Erstellen Sie die Haupt- und Parameter-Bicep-Dateien

  1. Erstellen Sie ein Verzeichnis zum Speichern der erforderlichen Bicep-Bereitstellungsdateien. Das folgende Beispiel erstellt ein Verzeichnis mit dem Namen bicep-osm-aks-addon und wechselt in das Verzeichnis:

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. Erstellen Sie die Standard-Datei und die Parameterdatei.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. Öffnen Sie die Datei osm.aks.bicep und kopieren Sie den folgenden Inhalt in die Datei:

    // https://learn.microsoft.com/azure/aks/troubleshooting#what-naming-restrictions-are-enforced-for-aks-resources-and-parameters
    @minLength(3)
    @maxLength(63)
    @description('Provide a name for the AKS cluster. The only allowed characters are letters, numbers, dashes, and underscore. The first and last character must be a letter or a number.')
    param clusterName string
    @minLength(3)
    @maxLength(54)
    @description('Provide a name for the AKS dnsPrefix. Valid characters include alphanumeric values and hyphens (-). The dnsPrefix can\'t include special characters such as a period (.)')
    param clusterDNSPrefix string
    param k8Version string
    param sshPubKey string
    param location string
    param adminUsername string
    
    
    resource aksCluster 'Microsoft.ContainerService/managedClusters@2021-03-01' = {
      name: clusterName
      location: location
      identity: {
        type: 'SystemAssigned'
      }
      properties: {
        kubernetesVersion: k8Version
        dnsPrefix: clusterDNSPrefix
        enableRBAC: true
        agentPoolProfiles: [
          {
            name: 'agentpool'
            count: 3
            vmSize: 'Standard_DS2_v2'
            osDiskSizeGB: 30
            osDiskType: 'Ephemeral'
            osType: 'Linux'
            mode: 'System'
          }
        ]
        linuxProfile: {
          adminUsername: adminUserName
          ssh: {
            publicKeys: [
              {
                keyData: sshPubKey
              }
            ]
          }
        }
        addonProfiles: {
            openServiceMesh: {
                enabled: true
                config: {}
          }
        }
      }
    }
    
  4. Öffnen Sie die Datei osm.aks.parameters.json und kopieren Sie den folgenden Inhalt in die Datei. Ersetzen Sie die Parameterwerte der Bereitstellung durch Ihre eigenen Werte.

    Hinweis

    Die Datei osm.aks.parameters.json ist eine Beispiel-Parameterdatei, die für die Bereitstellung von Bicep benötigt wird. Aktualisieren Sie die angegebenen Parameter speziell für Ihre Bereitstellungsumgebung. Zu den Parametern, für die Sie Werte hinzufügen müssen, gehören: clusterName, clusterDNSPrefix, k8Version, sshPubKey, location und adminUsername. Eine Liste der in Ihrer Region unterstützten Kubernetes-Versionen finden Sie mit dem Befehl az aks get-versions --location <region>.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "clusterName": {
          "value": "<YOUR CLUSTER NAME HERE>"
        },
        "clusterDNSPrefix": {
          "value": "<YOUR CLUSTER DNS PREFIX HERE>"
        },
        "k8Version": {
          "value": "<YOUR SUPPORTED KUBERNETES VERSION HERE>"
        },
        "sshPubKey": {
          "value": "<YOUR SSH KEY HERE>"
        },
        "location": {
          "value": "<YOUR AZURE REGION HERE>"
        },
        "adminUsername": {
          "value": "<YOUR ADMIN USERNAME HERE>"
        }
      }
    }
    

Bereitstellen der Bicep-Dateien

  1. Öffnen Sie ein Terminal und authentifizieren Sie sich mit dem Befehl az login bei Ihrem Azure-Konto für die Azure-CLI.

  2. Stellen Sie die Bicep-Dateien mithilfe des Befehls az deployment group create bereit.

    az deployment group create \
      --name OSMBicepDeployment \
      --resource-group osm-bicep-test \
      --template-file osm.aks.bicep \
      --parameters @osm.aks.parameters.json
    

Überprüfen der Installation des OSM-Add-Ons

  1. Fragen Sie die Add-On-Profile des Clusters ab, um den aktivierten Status der installierten Add-Ons zu überprüfen. Der folgende Befehl sollte true zurückgeben:

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. Sie erhalten den Status des OSM-Controllers über die folgenden kubectl-Befehle.

    kubectl get deployments -n kube-system --selector app=osm-controller
    kubectl get pods -n kube-system --selector app=osm-controller
    kubectl get services -n kube-system --selector app=osm-controller
    

Zugreifen auf die OSM-Add-On-Konfiguration

Sie können den OSM-Controller mithilfe der OSM MeshConfig-Ressource konfigurieren, und Sie können die Konfigurationseinstellungen des OSM-Controllers mithilfe der Azure CLI anzeigen.

  • Zeigen Sie die Konfigurationseinstellungen des OSM-Controllers mit dem Befehl kubectl get an.

    kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
    

    Hier sehen Sie eine Beispielausgabe von MeshConfig:

    apiVersion: config.openservicemesh.io/v1alpha1
    kind: MeshConfig
    metadata:
      creationTimestamp: "0000-00-00A00:00:00A"
      generation: 1
      name: osm-mesh-config
      namespace: kube-system
      resourceVersion: "2494"
      uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31
    spec:
      certificate:
        serviceCertValidityDuration: 24h
      featureFlags:
        enableEgressPolicy: true
        enableMulticlusterMode: false
        enableWASMStats: true
      observability:
        enableDebugServer: true
        osmLogLevel: info
        tracing:
          address: jaeger.osm-system.svc.cluster.local
          enable: false
          endpoint: /api/v2/spans
          port: 9411
      sidecar:
        configResyncInterval: 0s
        enablePrivilegedInitContainer: false
        envoyImage: mcr.microsoft.com/oss/envoyproxy/envoy:v1.18.3
        initContainerImage: mcr.microsoft.com/oss/openservicemesh/init:v0.9.1
        logLevel: error
        maxDataPlaneConnections: 0
        resources: {}
      traffic:
        enableEgress: true
        enablePermissiveTrafficPolicyMode: true
        inboundExternalAuthorization:
          enable: false
          failureModeAllow: false
          statPrefix: inboundExtAuthz
          timeout: 1s
        useHTTPSIngress: false
    

    Beachten Sie, dass enablePermissiveTrafficPolicyMode als truekonfiguriert ist. In OSM wird die Erzwingung von SMI-Datenverkehrsrichtlinien durch den permissiven Richtlinienmodus für den Datenverkehr umgangen. In diesem Modus entdeckt OSM automatisch die Dienste, die Teil des Dienstnetzes sind. Die entdeckten Dienste verfügen über Datenverkehrsrichtlinien, die auf jedem Envoy-Proxy-Sidecar programmiert sind, um die Kommunikation zwischen diesen Diensten zu ermöglichen.

    Warnung

    Bevor Sie fortfahren, überprüfen Sie, ob der permissive Richtlinienmodus für den Datenverkehr auf true festgelegt ist. Falls nicht, ändern Sie ihn mithilfe des folgenden Befehls in true:

    kubectl patch meshconfig osm-mesh-config -n kube-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
    

Bereinigen von Ressourcen

Nächste Schritte

In diesem Artikel konnten Sie erfahren, wie Sie das OSM-Add-On in einem AKS-Cluster installieren und dann überprüfen, ob es installiert wurde und ausgeführt wird. Mit dem installierten OSM-Add-On auf Ihrem Cluster können Sie eine Beispielanwendung bereitstellen oder das Onboarding einer vorhandenen Anwendung durchführen, um mit Ihrem OSM-Mesh zu arbeiten.