Implantar o complemento Open Service Mesh usando o Bicep no Serviço Kubernetes do Azure (AKS)

Este artigo mostra como implantar o complemento Open Service Mesh (OSM) no Serviço Kubernetes do Azure (AKS) usando um modelo Bicep .

Nota

Com a desativação do Open Service Mesh (OSM) pela Cloud Native Computing Foundation (CNCF), recomendamos identificar suas configurações OSM e migrá-las para uma configuração Istio equivalente. Para obter informações sobre como migrar do OSM para o Istio, consulte Diretrizes de migração para configurações do Open Service Mesh (OSM) para o Istio.

Importante

Com base na versão do Kubernetes que seu cluster está executando, o complemento OSM instala uma versão diferente do OSM.

Versão do Kubernetes Versão do OSM instalada
1.24.0 ou superior 1.2.5
Entre 1.23.5 e 1.24.0 1.1.3
Abaixo de 1.23.5 1.0.0

As versões mais antigas do OSM podem não estar disponíveis para instalação ou ser ativamente suportadas se a versão correspondente do AKS tiver chegado ao fim da vida útil. Você pode verificar o calendário de lançamento do AKS Kubernetes para obter informações sobre as janelas de suporte da versão do AKS.

O Bicep é uma linguagem específica do domínio que usa sintaxe declarativa para implantar recursos do Azure. Você pode usar o Bicep em vez de criar modelos do Azure Resource Manager para implantar seus recursos do Azure de infraestrutura como código.

Antes de começar

Antes de começar, certifique-se de que tem os seguintes pré-requisitos:

Instale o complemento OSM para um novo cluster AKS usando o Bicep

Para a implantação de um novo cluster AKS, habilite o complemento OSM na criação do cluster. As instruções a seguir usam um modelo Bicep genérico que implanta um cluster AKS usando discos efêmeros e a interface de rede de kubenet contêiner e, em seguida, habilita o complemento OSM. Para cenários de implantação mais avançados, consulte O que é Bicep?

Criar um grupo de recursos

  • Crie um grupo de recursos usando o az group create comando.

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

Criar os principais e parâmetros arquivos Bicep

  1. Crie um diretório para armazenar os arquivos de implantação do Bicep necessários. O exemplo a seguir cria um diretório chamado bicep-osm-aks-addon e altera o diretório:

    mkdir bicep-osm-aks-addon
    cd bicep-osm-aks-addon
    
  2. Crie o arquivo principal e o arquivo de parâmetros.

    touch osm.aks.bicep && touch osm.aks.parameters.json
    
  3. Abra o arquivo osm.aks.bicep e copie o seguinte conteúdo:

    // 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 o arquivo osm.aks.parameters.json e copie no conteúdo a seguir. Certifique-se de substituir os valores dos parâmetros de implantação por seus próprios valores.

    Nota

    O arquivo osm.aks.parameters.json é um exemplo de arquivo de parâmetros de modelo necessário para a implantação do Bicep. Atualize os parâmetros especificamente para seu ambiente de implantação. Os parâmetros para os quais você precisa adicionar valores incluem: clusterName, , , sshPubKey, locationclusterDNSPrefixk8Versione .adminUsername Para encontrar uma lista de versões do Kubernetes suportadas na sua região, use o az aks get-versions --location <region> comando.

    {
      "$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>"
        }
      }
    }
    

Implantar os arquivos Bicep

  1. Abra um terminal e autentique-se em sua conta do Azure para a CLI do Azure usando o az login comando.

  2. Implante os arquivos Bicep usando o az deployment group create comando.

    az deployment group create \
      --name OSMBicepDeployment \
      --resource-group osm-bicep-test \
      --template-file osm.aks.bicep \
      --parameters @osm.aks.parameters.json
    

Validar a instalação do complemento OSM

  1. Consulte os perfis de complementos do cluster para verificar o estado ativado dos complementos instalados. O seguinte comando deve retornar true:

    az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
    
  2. Obtenha o status do osm-controller usando os seguintes kubectl comandos.

    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
    

Acessar a configuração do complemento OSM

Você pode configurar o controlador OSM usando o recurso OSM MeshConfig e pode exibir as definições de configuração do controlador OSM usando a CLI do Azure.

  • Exiba as definições de configuração do controlador OSM usando o kubectl get comando.

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

    Aqui está um exemplo de saída 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 como true. No OSM, o modo de política de tráfego permissivo ignora a aplicação da política de tráfego SMI . Nesse modo, o OSM descobre automaticamente os serviços que fazem parte da malha de serviços. Os serviços descobertos terão regras de política de tráfego programadas em cada sidecar proxy Envoy para permitir comunicações entre esses serviços.

    Aviso

    Antes de continuar, verifique se o modo de política de tráfego permissivo está definido como true. Se não estiver, altere-o para true usar o seguinte comando:

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

Clean up resources (Limpar recursos)

  • Quando você não precisar mais dos recursos do Azure, exclua o grupo de recursos de teste da implantação usando o az group delete comando.

    az group delete --name osm-bicep-test
    

    Como alternativa, você pode desinstalar o complemento OSM e os recursos relacionados do cluster. Para obter mais informações, consulte Desinstalar o complemento Open Service Mesh do cluster AKS.

Próximos passos

Este artigo mostrou como instalar o complemento OSM em um cluster AKS e verificar se ele está instalado e em execução. Com o complemento OSM instalado em seu cluster, você pode implantar um aplicativo de exemplo ou integrar um aplicativo existente para trabalhar com sua malha OSM.