Compartir por


Implementación del complemento Open Service Mesh (OSM) en Azure Kubernetes Service (AKS) mediante Bicep

En este artículo, se muestra cómo implementar el complemento Open Service Mesh (OSM) en Azure Kubernetes Service (AKS) mediante una plantilla de Bicep.

Nota:

Con la retirada de Open Service Mesh (OSM) de Cloud Native Computing Foundation (CNCF), se recomienda identificar las configuraciones de OSM y migrarlas a una configuración equivalente de Istio. Para obtener información sobre la migración de OSM a Istio, consulte Guía de migración para configuraciones de Open Service Mesh (OSM) a Istio.

Importante

Según la versión de Kubernetes que ejecuta el clúster, el complemento de OSM instalará una versión diferente de OSM.

Versión de Kubernetes Versión instalada de OSM
1.24.0 o superior 1.2.5
Entre 1.23.5 y 1.24.0 1.1.3
Anterior a 1.23.5 1.0.0

Es posible que las versiones anteriores de OSM no estén disponibles para su instalación o se admita activamente si la versión de AKS correspondiente ha alcanzado el final del ciclo de vida. Puede comprobar el calendario de versiones de Kubernetes de AKS para obtener información sobre las ventanas de compatibilidad con versiones de AKS.

Bicep es un lenguaje específico de dominio que usa una sintaxis declarativa para implementar recursos de Azure. Puede usar Bicep en lugar de crear plantillas de Azure Resource Manager para implementar los recursos de Azure de infraestructura como código.

Antes de empezar

Asegúrese de que cumple los siguientes requisitos previos antes de empezar:

Instalación del complemento OSM para un nuevo clúster de AKS mediante Bicep

Para la implementación de un nuevo clúster de AKS, habilite el complemento OSM en la creación del clúster. En las instrucciones siguientes, se usa una plantilla genérica de Bicep que implementa un clúster de AKS mediante discos efímeros y la interfaz de red de contenedor kubenet y, a continuación, habilita el complemento OSM. Para escenarios de implementación más avanzados, consulte ¿Qué es Bicep?

Crear un grupo de recursos

  • Cree un grupo de recursos con el comando az group create.

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

Creación de los archivos de Bicep principal y de parámetros

  1. Cree un directorio para almacenar los archivos de implementación de Bicep necesarios. El ejemplo siguiente crea un directorio llamado bicep-osm-aks-addon y cambia a dicho directorio:

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. Cree el archivo principal y el archivo de parámetros.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. Abra el archivo osm.aks.bicep y copie dentro el siguiente contenido:

    // 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. Abra el archivo osm.aks.parameters.json y copie dentro el siguiente contenido. Asegúrese de reemplazar los valores de los parámetros de implementación por sus propios valores.

    Nota:

    El archivo osm.aks.parameters.json es un archivo de parámetros de plantilla de ejemplo necesario para la implementación de Bicep. Actualice los parámetros específicamente para el entorno de implementación. Los parámetros para los que tienes que añadir valores son: clusterName, clusterDNSPrefix, k8Version, sshPubKey, location y adminUsername. Para buscar una lista de las versiones de Kubernetes admitidas en la región, use el 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>"
        }
      }
    }
    

Implementación de los archivos de Bicep

  1. Abra el terminal y autentíquese en la cuenta de Azure para la CLI de Azure mediante el comando az login.

  2. Implemente los archivos de Bicep mediante el 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
    

Validación de la instalación del complemento OSM

  1. Consulte los perfiles de los complementos del clúster para comprobar el estado habilitado de los complementos instalados. El siguiente comando debe devolver true:

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. Obtén el estado del osm-controller usando los siguientes comandos 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
    

Acceso a la configuración del complemento OSM

Puede configurar el controlador de OSM mediante el recurso MeshConfig de OSM y puede ver las opciones de configuración del controlador de OSM mediante la CLI de Azure.

  • Vea las opciones de configuración del controlador de OSM mediante el comando kubectl get.

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

    Esta es una salida de ejemplo 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
    

    Observe que enablePermissiveTrafficPolicyMode está configurado en true. En OSM, el modo de directiva de tráfico permisivo omite la aplicación de directivas de tráfico SMI. En este modo, OSM detecta automáticamente los servicios que forman parte de la malla de servicio. Los servicios detectados tendrán reglas de directiva de tráfico programadas en cada sidecar de proxy de Envoy para permitir las comunicaciones entre estos servicios.

    Advertencia

    Antes de continuar, compruebe que el modo de directiva de tráfico permisivo esté establecido en true. Si no es así, cámbielo a true mediante el comando siguiente:

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

Limpieza de recursos

Pasos siguientes

En este artículo, se ha mostrado cómo instalar el complemento OSM en un clúster de AKS y comprobar que esté instalado y en ejecución. Con el complemento OSM instalado en el clúster, puede implementar una aplicación de ejemplo o incorporar una aplicación existente para trabajar con la malla de OSM.