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:
- La versión 2.20.0 de la CLI de Azure, o cualquier versión posterior. Ejecute
az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure. - Una clave pública SSH usada para implementar AKS. Para más información, consulte Creación de claves SSH mediante la CLI de Azure.
- Visual Studio Code con un terminal de Bash.
- La extensión de Bicep de Visual Studio Code.
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
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
Cree el archivo principal y el archivo de parámetros.
touch osm.aks.bicep && touch osm.aks.parameters.json
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: {} } } } }
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
yadminUsername
. Para buscar una lista de las versiones de Kubernetes admitidas en la región, use el 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>" } } }
Implementación de los archivos de Bicep
Abra el terminal y autentíquese en la cuenta de Azure para la CLI de Azure mediante el comando
az login
.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
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'
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 entrue
. 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 atrue
mediante el comando siguiente:kubectl patch meshconfig osm-mesh-config -n kube-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
Limpieza de recursos
Cuando ya no necesite los recursos de Azure, elimine el grupo de recursos de prueba de la implementación con el comando
az group delete
.az group delete --name osm-bicep-test
Como alternativa, puede desinstalar el complemento de OSM y los recursos relacionados del clúster. Para más información, consulte Desinstalación del complemento Open Service Mesh (OSM) del clúster de AKS.
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.
Azure Kubernetes Service