Déployer le module complémentaire Open Service Mesh à l’aide de Bicep dans Azure Kubernetes Service (AKS)

Cet article montre comment déployer le module complémentaire OSM (Open Service Mesh) sur AKS (Azure Kubernetes Service) à l’aide d’un modèle Bicep.

Remarque

Avec la mise hors service d’Open Service Mesh (OSM) par la CNCF (Cloud Native Computing Foundation), nous vous recommandons d’identifier vos configurations OSM et de les migrer vers une configuration Istio équivalente. Pour obtenir des informations sur la migration d’OSM vers Istio, consultez Conseils de migration pour les configurations Open Service Mesh (OSM) vers Istio.

Important

En fonction de la version de Kubernetes exécutée par votre cluster, le module complémentaire OSM installe une autre version d’OSM.

Version de Kubernetes Version d’OSM installée
1.24.0 ou version ultérieure 1.2.5
Entre 1.23.5 et 1.24.0 1.1.3
Antérieure à la version 1.23.5 1.0.0

Les versions antérieures d’OSM peuvent ne pas être disponibles pour l’installation ou être activement prises en charge, si la version AKS correspondante a atteint sa fin de vie. Vous pouvez consulter le Calendrier des versions d’AKS Kubernetes pour plus d’informations sur les fenêtres de prise en charge des versions d’AKS.

Bicep est un langage spécifique à un domaine qui utilise la syntaxe déclarative pour déployer des ressources Azure. Vous pouvez utiliser Bicep au lieu de créer des modèles Azure Resource Manager pour déployer vos ressources Azure d’infrastructure en tant que code.

Avant de commencer

Avant de commencer, vérifiez que les conditions préalables suivantes sont en place :

Installer le module complémentaire OSM pour un nouveau cluster AKS à l’aide de Bicep

Pour le déploiement d’un nouveau cluster AKS, vous activez le module complémentaire OSM lors de la création du cluster. Les instructions suivantes utilisent un modèle Bicep générique qui déploie un cluster AKS à l’aide de disques éphémères et de l’interface réseau du conteneur kubenet, puis active le module complémentaire OSM. Pour des scénarios de déploiement plus avancés, consultez Qu’est-ce que Bicep ?

Créer un groupe de ressources

  • Créez un groupe de ressources avec la commande az group create.

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

Créer les fichiers Bicep main et parameters

  1. Créez un répertoire pour stocker les fichiers de déploiement Bicep nécessaires. L’exemple suivant crée un répertoire nommé bicep-osm-aks-addon et apporte des modifications au répertoire :

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. Créez le fichier principal et le fichier de paramètres.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. Ouvrez le fichier osm.aks.bicep et copiez le contenu suivant :

    // 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. Ouvrez le fichier osm.aks.parameters.json et copiez le contenu suivant. Assurez-vous de remplacer les valeurs de paramètre de déploiement par vos propres valeurs.

    Remarque

    Le fichier osm.aks.parameters.json est un exemple de fichier de paramètres de modèle nécessaire pour le déploiement Bicep. Mettez à jour les paramètres spécifiquement pour votre environnement de déploiement. Les paramètres dont vous avez besoin pour ajouter des valeurs afin d’inclure : clusterName, clusterDNSPrefix, k8Version, sshPubKey, location et adminUsername. Pour obtenir la liste des versions Kubernetes prises en charge dans votre région, utilisez la commande 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>"
        }
      }
    }
    

Déployer les fichiers Bicep

  1. Ouvrez un terminal et authentifiez-vous auprès de votre compte Azure pour Azure CLI à l’aide de la commande az login.

  2. Déployez les fichiers Bicep à l’aide de la commande 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
    

Valider l’installation du module complémentaire OSM

  1. Interrogez les profils de module complémentaire du cluster pour vérifier l’état activé des modules complémentaires installés. La commande suivante doit retourner true :

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. Obtenez l’état d’osm-controller à l’aide des commandes kubectl suivantes.

    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
    

Accéder à la configuration du module complémentaire OSM

Vous pouvez configurer le contrôleur OSM à l’aide de la ressource OSM MeshConfig et afficher les paramètres de configuration du contrôleur OSM à l’aide d’Azure CLI.

  • Affichez les paramètres de configuration du contrôleur OSM à l’aide de la commande kubectl get.

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

    Voici un exemple de sortie de 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
    

    Notez que enablePermissiveTrafficPolicyMode a la valeur true. Dans OSM, le mode de stratégie de trafic permissive ignore l’application de la stratégie de trafic SMI. Dans ce mode, OSM découvre automatiquement les services qui font partie du maillage de services. Les services découverts auront des règles de stratégie de trafic programmées sur chaque side-car de proxy Envoy pour permettre les communications entre ces services.

    Avertissement

    Avant de continuer, vérifiez que votre mode de stratégie de trafic permissive est défini sur true. Si ce n’est pas le cas, passez ce mode à true à l’aide de la commande suivante :

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

Nettoyer les ressources

Étapes suivantes

Cet article vous a montré comment installer le module complémentaire OSM sur un cluster AKS, puis comment vérifier qu’il est installé et en cours d’exécution. Avec le module complémentaire OSM installé sur votre cluster, vous pouvez déployer un exemple d’application ou intégrer une application existante pour utiliser votre maillage OSM.