Distribuire il componente aggiuntivo Open Service Mesh usando Bicep nel servizio Azure Kubernetes
Questo articolo illustra come distribuire il componente aggiuntivo Open Service Mesh (OSM) nel servizio Azure Kubernetes usando un modello Bicep .
Nota
Con il ritiro di Open Service Mesh (OSM) dalla Cloud Native Computing Foundation (CNF), è consigliabile identificare le configurazioni OSM e eseguirne la migrazione a una configurazione Istio equivalente. Per informazioni sulla migrazione da OSM a Istio, vedere Indicazioni sulla migrazione per le configurazioni Open Service Mesh (OSM) a Istio.
Importante
In base alla versione di Kubernetes in esecuzione, il componente aggiuntivo OSM installa una versione diversa di OSM.
Versione di Kubernetes | Versione di OSM installata |
---|---|
1.24.0 o versione successiva | 1.2.5 |
Tra 1.23.5 e 1.24.0 | 1.1.3 |
Inferiore a 1.23.5 | 1.0.0 |
Le versioni precedenti di OSM potrebbero non essere disponibili per l'installazione o essere supportate attivamente se la versione del servizio Azure Kubernetes corrispondente ha raggiunto la fine del ciclo di vita. È possibile controllare il calendario della versione del servizio Azure Kubernetes per informazioni sulle finestre di supporto della versione del servizio Azure Kubernetes.
Bicep è un linguaggio specifico di dominio che usa la sintassi dichiarativa per distribuire le risorse di Azure. È possibile usare Bicep al posto della creazione di modelli di Azure Resource Manager per distribuire le risorse di Azure di infrastruttura come codice.
Operazioni preliminari
Prima di iniziare, verificare di aver soddisfatto i prerequisiti seguenti:
- Interfaccia della riga di comando di Azure versione 2.20.0 o successiva. Eseguire
az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure. - Una chiave pubblica SSH usata per la distribuzione del servizio Azure Kubernetes. Per altre informazioni, vedere Creare chiavi SSH utilizzando l'interfaccia della riga di comando di Azure.
- Visual Studio Code con un terminale Bash.
- Estensione Bicep di Visual Studio Code.
Installare il componente aggiuntivo OSM per un nuovo cluster del servizio Azure Kubernetes usando Bicep
Per la distribuzione di un nuovo cluster del servizio Azure Kubernetes, abilitare il componente aggiuntivo OSM in fase di creazione del cluster. Le istruzioni seguenti usano un modello Bicep generico che distribuisce un cluster del servizio Azure Kubernetes usando dischi del sistema operativo temporaneo e l'interfaccia di rete del contenitore kubenet
e quindi abilita il componente aggiuntivo OSM. Per scenari di distribuzione più avanzati, vedere Che cos'è Bicep?
Creare un gruppo di risorse
Creare un gruppo di risorse usando il comando
az group create
.az group create --name <my-osm-bicep-aks-cluster-rg> --location <azure-region>
Creare i file Bicep principali e i parametri
Creare una directory per archiviare i file di distribuzione Bicep necessari. L'esempio seguente crea una directory denominata bicep-osm-aks-addon e cambia nella directory:
mkdir bicep-osm-aks-addon cd bicep-osm-aks-addon
Creare il file principale e il file parametri.
touch osm.aks.bicep && touch osm.aks.parameters.json
Aprire il file osm.aks.bicep e copiarlo nel contenuto seguente:
// 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: {} } } } }
Aprire il file osm.aks.parameters.json e copiarlo nel contenuto seguente. Assicurarsi di sostituire i valori dei parametri di distribuzione con i propri valori.
Nota
Il file osm.aks.parameters.json è un file di parametri modello di esempio necessario per la distribuzione Bicep. Aggiornare i parametri in modo specifico per l'ambiente di distribuzione. I parametri per cui è necessario aggiungere valori includono:
clusterName
,clusterDNSPrefix
,k8Version
sshPubKey
,location
, eadminUsername
. Per trovare un elenco delle versioni di Kubernetes supportate nell'area, usare il 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>" } } }
Distribuire il file Bicep
Aprire un terminale ed eseguire l'autenticazione all'account Azure per l'interfaccia della riga di comando di Azure usando il comando
az login
.Distribuire i file Bicep usando il 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
Convalidare l'installazione del componente aggiuntivo OSM
Eseguire una query sui profili del componente aggiuntivo del cluster per controllare lo stato abilitato dei componenti aggiuntivi installati. Il comando seguente deve restituire
true
:az aks list -g <my-osm-aks-cluster-rg> -o json | jq -r '.[].addonProfiles.openServiceMesh.enabled'
Ottenere lo stato di osm-controller usando i comandi seguenti
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
Accedere alla configurazione del componente aggiuntivo OSM
È possibile configurare il controller OSM usando la risorsa MeshConfig OSM ed è possibile visualizzare le impostazioni di configurazione del controller OSM usando l'interfaccia della riga di comando di Azure.
Visualizzare le impostazioni di configurazione del controller OSM usando il comando
kubectl get
.kubectl get meshconfig osm-mesh-config -n kube-system -o yaml
Ecco un esempio di output di 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
Si noti che
enablePermissiveTrafficPolicyMode
è configurato pertrue
. In OSM la modalità dei criteri di traffico permissiva ignora l'applicazione dei criteri di traffico SMI. In questa modalità, OSM individua automaticamente i servizi che fanno parte di mesh di servizi. I servizi individuati avranno regole di criteri di traffico programmate su ogni sidecar proxy Envoy per consentire le comunicazioni tra questi servizi.Avviso
Prima di procedere, verificare che la modalità dei criteri di traffico permissivo sia impostata su
true
. In caso contrario, modificare intrue
usando il comando seguente:kubectl patch meshconfig osm-mesh-config -n kube-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
Pulire le risorse
Quando le risorse di Azure non sono più necessarie, eliminare il gruppo di risorse di test della distribuzione usando il comando
az group delete
.az group delete --name osm-bicep-test
In alternativa, è possibile disinstallare il componente aggiuntivo OSM e le risorse correlate dal cluster. Per altre informazioni, vedere Disinstallare il componente aggiuntivo Open Service Mesh dal cluster del servizio Azure Kubernetes.
Passaggi successivi
Questo articolo ha illustrato come installare il componente aggiuntivo OSM in un cluster del servizio Azure Kubernetes e verificare che sia installato e in esecuzione. Con il componente aggiuntivo OSM installato nel cluster, è possibile distribuire un'applicazione di esempio o eseguire l'onboarding di un'applicazione esistente per lavorare con la mesh OSM.
Azure Kubernetes Service