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 .

Nota

Con il ritiro di Open Service Mesh (OSM) dalla Cloud Native Computing Foundation (CNF), è consigliabile identificare le configurazioni OSM e eseguirne la migrazione a una configurazione Istio equivalente. Per informazioni sulla migrazione da OSM a Istio, vedere Indicazioni sulla migrazione per le configurazioni Open Service Mesh (OSM) a Istio.

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 essere supportate attivamente se la versione del servizio Azure Kubernetes corrispondente ha raggiunto la fine del ciclo di vita. È possibile controllare il calendario della versione del servizio Azure Kubernetes per informazioni sulle finestre di supporto 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 del servizio Azure Kubernetes usando Bicep

Per la distribuzione di un nuovo cluster del servizio Azure Kubernetes, abilitare il componente aggiuntivo OSM in fase di creazione del cluster. Le istruzioni seguenti usano un modello Bicep generico che distribuisce un cluster del servizio Azure Kubernetes usando dischi del sistema operativo temporaneo e l'interfaccia di rete del contenitore kubenet e quindi abilita 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 i 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 cambia nella 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://video2.skills-academy.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, k8Version sshPubKey, 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 il 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. Distribuire i file Bicep usando 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 proxy Envoy per consentire le comunicazioni tra questi servizi.

    Avviso

    Prima di procedere, verificare che la modalità dei criteri di traffico permissivo sia impostata su true. In caso contrario, modificare in true usando 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.