Развертывание надстройки Сетки Open Service Mesh с помощью Bicep в Служба Azure Kubernetes (AKS)

В этой статье показано, как развернуть надстройку Open Service Mesh (OSM) в Служба Azure Kubernetes (AKS) с помощью шаблона Bicep.

Примечание.

При выходе из системы Open Service Mesh (OSM) в Cloud Native Computing Foundation (CNCF) рекомендуется определить конфигурации OSM и перенести их в эквивалентную конфигурацию Istio. Сведения о миграции из OSM в Istio см . в руководстве по миграции конфигураций Open Service Mesh (OSM) в Istio.

Важно!

В зависимости от версии Kubernetes, запущенной в кластере, надстройка OSM устанавливает другую версию OSM.

Версия Kubernetes Установленная версия OSM
1.24.0 или более поздней версии 1.2.5
От 1.23.5 до 1.24.0 1.1.3
Ниже 1.23.5 1.0.0

Более старые версии OSM могут быть недоступны для установки или активно поддерживаться, если соответствующая версия AKS достигла конца срока действия. Вы можете проверка календарь выпуска AKS Kubernetes для получения сведений о окнах поддержки версий AKS.

Bicep — это предметно-ориентированный язык, который использует декларативный синтаксис для развертывания ресурсов Azure. Вы можете развертывать ресурсы Azure категории "инфраструктура как код" с помощью Bicep вместо шаблонов Azure Resource Manager.

Подготовка к работе

Прежде чем начать, убедитесь, что у вас есть следующие предварительные требования:

Установка надстройки OSM для нового кластера AKS с помощью Bicep

Для развертывания нового кластера AKS включите надстройку OSM при создании кластера. В приведенных ниже инструкциях используется универсальный шаблон Bicep, который развертывает кластер AKS с помощью временных дисков и сетевого интерфейса контейнера kubenet, а затем включает надстройку OSM. Дополнительные сценарии развертывания см. в статье "Что такое Bicep?"

Создание или изменение группы ресурсов

  • Создайте группу ресурсов с помощью az group create команды.

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

Создание главного файла и файла параметров Bicep

  1. Создайте каталог для хранения необходимых файлов развертывания Bicep. Следующий пример создает каталог с именем bicep-osm-aks-addon и переходит в него:

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. Создайте основной файл и файл параметров.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. Откройте файл osm.aks.bicep и скопируйте его в следующее содержимое:

    // 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. Откройте файл osm.aks.parameters.json и скопируйте его в следующее содержимое. Убедитесь, что значения параметров развертывания заменяются собственными значениями.

    Примечание.

    Файл osm.aks.parameters.json представляет собой пример файла параметров шаблона, которые требуются для развертывания Bicep. Скорректируйте параметры для своей среды развертывания. Параметры, необходимые для добавления значений: clusterName, , clusterDNSPrefixk8Version, , sshPubKeyи locationadminUsername. Чтобы найти список поддерживаемых версий Kubernetes в своем регионе, используйте команду 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>"
        }
      }
    }
    

Развертывание файлов Bicep

  1. Откройте терминал и выполните проверку подлинности в учетной записи Azure для Azure CLI с помощью az login команды.

  2. Разверните файлы Bicep с помощью 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
    

Проверка установки надстройки OSM

  1. Запросите профили надстроек кластера, чтобы проверка включенное состояние установленных надстроек. Следующая команда должна возвращать значение true:

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. Получите состояние осм-контроллера с помощью следующих 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
    

Доступ к конфигурации надстройки OSM

Контроллер OSM можно настроить с помощью ресурса OSM MeshConfig и просмотреть параметры конфигурации контроллера OSM с помощью Azure CLI.

  • Просмотрите параметры конфигурации контроллера OSM с помощью kubectl get команды.

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

    Вот пример выходных данных 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
    

    Обратите внимание, что enablePermissiveTrafficPolicyMode для задано значение true. В OSM разрешительный режим политики трафика обходит применение политики трафика SMI. В этом режиме OSM автоматически обнаруживает службы, которые являются частью сети службы. Для обнаруженных служб задаются правила политики трафика для каждого расширения прокси-сервера Envoy, что делает возможным обмен данными между этими службами.

    Предупреждение

    Прежде чем продолжать, убедитесь, что для разрешительного режима политики трафика задано значение true. Если это не так, измените его на true использование следующей команды:

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

Очистка ресурсов

  • Если ресурсы Azure больше не нужны, удалите тестовую группу ресурсов развертывания с помощью az group delete команды.

    az group delete --name osm-bicep-test
    

    Кроме того, можно удалить надстройку OSM и связанные с ней ресурсы из кластера. Дополнительные сведения см. в разделе Удаление надстройки Open Service Mesh из кластера AKS.

Следующие шаги

В этой статье вы увидели, как установить надстройку OSM в кластере AKS и убедиться, что она установлена и работает. После установки надстройки OSM в кластере можно развернуть пример приложения или подключить существующее приложение для работы с сеткой OSM.