Distribuire il componente aggiuntivo Open Service Mesh usando Bicep nel servizio Azure Kubernetes

Questo articolo illustra come distribuire il componente aggiuntivo Open Service Mesh (OSM) nel servizio Azure Kubernetes usando un modello Bicep .

Importante

A partire dal 30 settembre 2027, il servizio Azure Kubernetes non supporta più il componente aggiuntivo Open Service Mesh (OSM). Il progetto Open Service Mesh upstream è stato ritirato.

Se il cluster usa il componente aggiuntivo OSM, eseguire la migrazione al componente aggiuntivo Istio prima della data di fine del supporto. Questo avviso di ritiro si applica solo al componente aggiuntivo OSM gestito e non riguarda le installazioni open source o autogestite della mesh di servizi. Per la procedura di migrazione, vedere Indicazioni sulla migrazione dal componente aggiuntivo OSM al componente aggiuntivo Istio. Per rimanere aggiornati sugli annunci e gli aggiornamenti di AKS, vedi le note sulla versione di AKS.

Importante

In base alla versione di Kubernetes in esecuzione, il componente aggiuntivo OSM installa una versione diversa di OSM.

Versione di Kubernetes Versione di OSM installata
1.24.0 o versione successiva 1.2.5
Tra 1.23.5 e 1.24.0 1.1.3
Inferiore a 1.23.5 1.0.0

Le versioni precedenti di OSM potrebbero non essere disponibili per l'installazione o il supporto attivo se la versione corrispondente del servizio Azure Kubernetes ha raggiunto la fine del ciclo di vita. Per informazioni sulle finestre di supporto della versione del servizio Azure Kubernetes, vedere il calendario della versione del servizio Azure Kubernetes .

Bicep è un linguaggio specifico di dominio che usa la sintassi dichiarativa per distribuire le risorse di Azure. È possibile usare Bicep al posto della creazione di modelli di Azure Resource Manager per distribuire le risorse di Azure di infrastruttura come codice.

Operazioni preliminari

Prima di iniziare, verificare di aver soddisfatto i prerequisiti seguenti:

Installare il componente aggiuntivo OSM per un nuovo cluster AKS usando Bicep

Per distribuire un nuovo cluster AKS, si abilita il componente aggiuntivo OSM durante la creazione del cluster. Le istruzioni seguenti utilizzano un modello Bicep generico che distribuisce un cluster AKS usando dischi effimeri e l'interfaccia di rete dei contenitori kubenet, quindi abilitano il componente aggiuntivo OSM. Per scenari di distribuzione più avanzati, vedere Che cos'è Bicep?

Creare un gruppo di risorse

  • Creare un gruppo di risorse usando il comando az group create.

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

Creare i file Bicep principali e dei parametri

  1. Creare una directory per archiviare i file di distribuzione Bicep necessari. L'esempio seguente crea una directory denominata bicep-osm-aks-addon e passa alla directory:

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. Creare il file principale e il file parametri.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. Aprire il file osm.aks.bicep e copiarlo nel contenuto seguente:

    // 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. Aprire il file osm.aks.parameters.json e copiarlo nel contenuto seguente. Assicurarsi di sostituire i valori dei parametri di distribuzione con i propri valori.

    Nota

    Il file osm.aks.parameters.json è un file di parametri modello di esempio necessario per la distribuzione Bicep. Aggiornare i parametri in modo specifico per l'ambiente di distribuzione. I parametri per cui è necessario aggiungere valori includono: clusterName, clusterDNSPrefix, k8VersionsshPubKey, location, e adminUsername. Per trovare un elenco delle versioni di Kubernetes supportate nell'area, usare il comando 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>"
        }
      }
    }
    

Distribuire i file Bicep

  1. Aprire un terminale ed eseguire l'autenticazione all'account Azure per l'interfaccia della riga di comando di Azure usando il comando az login.

  2. Distribuisci i file Bicep con il comando 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
    

Convalidare l'installazione del componente aggiuntivo OSM

  1. Eseguire una query sui profili del componente aggiuntivo del cluster per controllare lo stato abilitato dei componenti aggiuntivi installati. Il comando seguente deve restituire true:

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. Ottenere lo stato di osm-controller usando i comandi seguenti kubectl.

    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
    

Accedere alla configurazione del componente aggiuntivo OSM

È possibile configurare il controller OSM usando la risorsa MeshConfig OSM ed è possibile visualizzare le impostazioni di configurazione del controller OSM usando l'interfaccia della riga di comando di Azure.

  • Visualizzare le impostazioni di configurazione del controller OSM usando il comando kubectl get.

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

    Ecco un esempio di output di 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
    

    Si noti che enablePermissiveTrafficPolicyMode è configurato per true. In OSM la modalità dei criteri di traffico permissiva ignora l'applicazione dei criteri di traffico SMI. In questa modalità, OSM individua automaticamente i servizi che fanno parte di mesh di servizi. I servizi individuati avranno regole di criteri di traffico programmate su ogni sidecar del proxy Envoy per consentire le comunicazioni tra questi servizi.

    Avviso

    Prima di procedere, verificare che la modalità della policy di traffico permissiva sia impostata su true. Se così non fosse, impostalo su true con il comando seguente:

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

Pulire le risorse

Passaggi successivi

Questo articolo ha illustrato come installare il componente aggiuntivo OSM in un cluster del servizio Azure Kubernetes e verificare che sia installato e in esecuzione. Con il componente aggiuntivo OSM installato nel cluster, è possibile distribuire un'applicazione di esempio o eseguire l'onboarding di un'applicazione esistente per lavorare con la mesh OSM.