Distribuera Open Service Mesh-tillägget med Bicep i Azure Kubernetes Service (AKS)

Den här artikeln visar hur du distribuerar tillägget Open Service Mesh (OSM) till Azure Kubernetes Service (AKS) med hjälp av en Bicep-mall .

Kommentar

Med tillbakadragandet av Open Service Mesh (OSM) av Cloud Native Computing Foundation (CNCF) rekommenderar vi att du identifierar dina OSM-konfigurationer och migrerar dem till en motsvarande Istio-konfiguration. Information om hur du migrerar från OSM till Istio finns i Migreringsvägledning för OSM-konfigurationer (Open Service Mesh) till Istio.

Viktigt!

Baserat på vilken version av Kubernetes klustret körs installerar OSM-tillägget en annan version av OSM.

Kubernetes-version OSM-version installerad
1.24.0 eller senare 1.2.5
Mellan 1.23.5 och 1.24.0 1.1.3
Under 1.23.5 1.0.0

Äldre versioner av OSM kanske inte är tillgängliga för installation eller stöds aktivt om motsvarande AKS-version har nått slutet av livslängden. Du kan kontrollera AKS Kubernetes-versionskalendern för information om AKS-versionssupportfönster.

Bicep är ett domänspecifikt språk som använder deklarativ syntax för att distribuera Azure-resurser. Du kan använda Bicep i stället för att skapa Azure Resource Manager-mallar för att distribuera dina Azure-resurser med infrastruktur som kod.

Innan du börjar

Innan du börjar kontrollerar du att du har följande förutsättningar:

Installera OSM-tillägget för ett nytt AKS-kluster med hjälp av Bicep

För distribution av ett nytt AKS-kluster aktiverar du OSM-tillägget när klustret skapas. Följande instruktioner använder en allmän Bicep-mall som distribuerar ett AKS-kluster med hjälp av tillfälliga diskar och kubenet containernätverksgränssnittet och aktiverar sedan OSM-tillägget. Mer avancerade distributionsscenarier finns i Vad är Bicep?

Skapa en resursgrupp

  • Skapa en resursgrupp med kommandot az group create .

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

Skapa huvud- och parametrarna Bicep-filer

  1. Skapa en katalog för att lagra nödvändiga Bicep-distributionsfiler. I följande exempel skapas en katalog med namnet bicep-osm-aks-addon och ändringar i katalogen:

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. Skapa huvudfilen och parameterfilen.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. Öppna filen osm.aks.bicep och kopiera i följande innehåll:

    // 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. Öppna filen osm.aks.parameters.json och kopiera i följande innehåll. Se till att du ersätter värdena för distributionsparametern med dina egna värden.

    Kommentar

    Filen osm.aks.parameters.json är en exempelmallparametrarfil som behövs för Bicep-distributionen. Uppdatera parametrarna specifikt för distributionsmiljön. De parametrar som du behöver lägga till värden för är: clusterName, clusterDNSPrefix, k8Version, sshPubKey, locationoch adminUsername. Om du vill hitta en lista över Kubernetes-versioner som stöds i din region använder du az aks get-versions --location <region> kommandot .

    {
      "$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>"
        }
      }
    }
    

Distribuera Bicep-filerna

  1. Öppna en terminal och autentisera till ditt Azure-konto för Azure CLI med hjälp av az login kommandot .

  2. Distribuera Bicep-filerna med kommandot az deployment group create .

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

Verifiera installationen av OSM-tillägget

  1. Fråga tilläggsprofilerna i klustret för att kontrollera det aktiverade tillståndet för de installerade tilläggen. Följande kommando bör returnera true:

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. Hämta status för osm-controllern med hjälp av följande kubectl kommandon.

    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
    

Få åtkomst till OSM-tilläggskonfigurationen

Du kan konfigurera OSM-styrenheten med hjälp av OSM MeshConfig-resursen och du kan visa OSM-styrenhetens konfigurationsinställningar med hjälp av Azure CLI.

  • Visa OSM-kontrollantens konfigurationsinställningar med kommandot kubectl get .

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

    Här är ett exempel på utdata från 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
    

    Observera att enablePermissiveTrafficPolicyMode är konfigurerad för true. I OSM kringgår tillåtande trafikprincipläge SMI-trafikprinciptvingande . I det här läget identifierar OSM automatiskt tjänster som ingår i tjänstnätet. De identifierade tjänsterna kommer att ha trafikprincipregler programmerade på varje envoyproxy-sidovagn för att tillåta kommunikation mellan dessa tjänster.

    Varning

    Innan du fortsätter kontrollerar du att ditt tillåtande trafikprincipläge är inställt på true. Om det inte är det ändrar du det till true med hjälp av följande kommando:

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

Rensa resurser

Nästa steg

Den här artikeln visar hur du installerar OSM-tillägget i ett AKS-kluster och kontrollerar att det är installerat och körs. Med OSM-tillägget installerat i klustret kan du distribuera ett exempelprogram eller registrera ett befintligt program för att arbeta med ditt OSM-nät.