Implantar o complemento Open Service Mesh usando o Bicep no Serviço de Kubernetes do Azure (AKS)
Este artigo mostra como implantar o complemento Open Service Mesh (OSM) no Serviço de Kubernetes do Azure (AKS) utilizando um modelo Bicep.
Observação
Com a desativação do Open Service Mesh (OSM) pela Cloud Native Computing Foundation (CNCF), recomendamos identificar suas configurações de OSM e migrá-las para uma configuração equivalente do Istio. Para obter informações sobre como migrar do OSM para o Istio, consulte Diretrizes de migração para configurações do OSM (Open Service Mesh) 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 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 não ter suporte ativo se a versão correspondente do AKS tiver atingido o fim da vida útil. Você pode conferir o calendário de lançamento do Kubernetes do AKS para obter informações sobre as janelas de suporte à versão do AKS.
O Bicep é uma linguagem específica de domínio que usa a sintaxe declarativa para implantar recursos do Azure. Use o Bicep no lugar da criação de modelos do Azure Resource Manager para implantar recursos de infraestrutura como código do Azure.
Antes de começar
Antes de começar, você deve fazer os seguintes pré-requisitos:
- A CLI do Azure versão 2.20.0 ou posterior. Execute
az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. - Uma chave pública SSH utilizada para implantar o AKS. Para obter mais informações, consulte Criar chaves SSH utilizando a CLI do Azure.
- Visual Studio Code com um terminal Bash.
- A extensão do Bíceps do Visual Studio Code.
Instalar o complemento do OSM em um novo cluster do AKS usando o Bicep
Para a implantação de um novo cluster do AKS, habilite o complemento do OSM na criação do cluster. As instruções a seguir usam um modelo Bicep genérico que implanta um cluster do AKS usando discos efêmeros e o adaptador de rede do contêiner kubenet
e habilita o complemento do OSM. Para cenários de implantação mais avançados, consulte O que é o Bicep?
Criar um grupos de recursos
Crie um grupo de recursos usando o comando
az group create
.az group create --name <my-osm-bicep-aks-cluster-rg> --location <azure-region>
Criar os arquivos principais e de parâmetros do Bicep
Crie um diretório para armazenar os arquivos de implantação do Bicep necessários. O seguinte exemplo cria um diretório chamado bicep-osm-aks-addon e alterna para o diretório:
mkdir bicep-osm-aks-addon cd bicep-osm-aks-addon
Criar o arquivo principal e o arquivo de parâmetros.
touch osm.aks.bicep && touch osm.aks.parameters.json
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: {} } } } }
Abra o arquivo osm.aks.parameters.json e copie o seguinte conteúdo. Verifique se você substituiu os valores dos parâmetros de implantação por seus próprios valores.
Observação
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
,clusterDNSPrefix
,k8Version
,sshPubKey
,location
eadminUsername
. Para localizar uma lista de versões do Kubernetes com suporte na sua região, use o comandoaz 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>" } } }
Implantar os arquivos Bicep
Abra um terminal e autentique-se na sua conta do Azure para a CLI do Azure utilizando o comando
az login
.Implantar os arquivos do Bicep utilizando o 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
Validar a instalação do complemento do OSM
Consultar os perfis de complemento do cluster para verificar o estado habilitado dos complementos instalados. O seguinte comando retornará
true
:az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
Obtenha o status do osm-controller utilizando os seguintes 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
Acessar a configuração do complemento do OSM
Você pode configurar o controlador OSM usando o recurso OSM MeshConfig e pode exibir as configurações do controlador OSM utilizando a CLI do Azure.
Exiba as configurações do controlador OSM utilizando o comando
kubectl get
.kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
Esta é 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 comotrue
. No OSM, o modo de política de tráfego permissivo ignora a imposição de política de tráfego SMI. Neste modo, o OSM descobre automaticamente serviços que são uma parte da malha de serviço. Os serviços descobertos terão regras de política de tráfego programadas em cada sidecar de proxy Envoy para permitir as comunicações entre esses serviços.Aviso
Antes de prosseguir, verifique se o modo de política de tráfego permissivo está definido como
true
. Se não for o caso, altere-o paratrue
utilizando o seguinte comando:kubectl patch meshconfig osm-mesh-config -n kube-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
Limpar os recursos
Quando você não precisar mais dos recursos do Azure, exclua o grupo de recursos de teste da implantação utilizando o comando
az group delete
.az group delete --name osm-bicep-test
Como alternativa, você pode desinstalar o complemento da OSM e os recursos relacionados do cluster. Para obter mais informações, confira Desinstalar o complemento do Open Service Mesh do cluster do AKS.
Próximas etapas
Este artigo mostrou como instalar o complemento do OSM em um cluster do AKS e verificar se ele está funcionando. Com o complemento do OSM instalado no cluster, você pode implantar um aplicativo de exemplo ou integrar um aplicativo existente para trabalhar com a malha do OSM.
Azure Kubernetes Service