Azure Arc Open Service Mesh (preview) ingeschakeld

Open Service Mesh (OSM) is een lichtgewicht, extensible Cloud Native-service-mesh waarmee gebruikers op uniforme wijze waarneembaarheidsfuncties voor zeer dynamische microserviceomgevingen kunnen beheren, beveiligen en out-of-the-box waarneembaarheid kunnen krijgen.

OSM voert een op Envoy gebaseerd besturingsvlak uit op Kubernetes, kan worden geconfigureerd met SMI-API's en werkt door een Envoy-proxy te injecteren als een sidecar-container naast elk exemplaar van uw toepassing. Lees meer over de service-mesh-scenario's die worden ingeschakeld door Open Service Mesh.

Ondersteuningsbeperkingen voor Azure Arc Open Service Mesh met ingeschakelde ondersteuning

  • Er kan slechts één exemplaar van Open Service Mesh worden geïmplementeerd op een Azure Arc verbonden Kubernetes-cluster.
  • Openbare preview is beschikbaar voor Open Service Mesh versie v0.8.4 en hoger. Ontdek hier de nieuwste versie van de release. De ondersteunde releaseversies worden toegevoegd met opmerkingen. Negeer de tags die zijn gekoppeld aan tussenliggende releases.
  • De volgende Kubernetes-distributies worden momenteel ondersteund:
    • AKS-engine
    • AKS op HCI
    • Cluster-API Azure
    • Google Kubernetes Engine
    • Canonieke Kubernetes-distributie
    • Engine van Engine Van Engine
    • OpenShift Kubernetes-distributie
    • Amazon Elastic Kubernetes Service
  • Azure Monitor integratie met Azure Arc Open Service Mesh is beschikbaar met beperkte ondersteuning.

Belangrijk

De preview-functies van Azure Arc enabled Kubernetes zijn beschikbaar in een self-service. Previews worden als ' as is ' en ' als beschikbaar ' gegeven en zijn uitgesloten van de service level agreements en de beperkte garantie. Kubernetes-previews voor Azure Arc zijn gedeeltelijk gedekt door de klant ondersteuning.

Vereisten

  • Zorg ervoor dat u hebt voldaan aan alle algemene vereisten voor clusterextensies die hier worden vermeld.
  • Gebruik az k8s-extension CLI version >= v0.4.0

Een Azure Arc Open Service Mesh (OSM) installeren op Azure Arc Kubernetes-cluster met ingeschakelde service

In de volgende stappen wordt ervan uitgenomen dat u al een cluster hebt met een ondersteunde Kubernetes-distributie die is verbonden met Azure Arc.

Een specifieke versie van OSM installeren

Zorg ervoor dat uw KUBECONFIG-omgevingsvariabele naar de kubeconfig van het Kubernetes-cluster wijst waar u de OSM-extensie wilt installeren.

Stel de omgevingsvariabelen in:

export VERSION=<osm-arc-version>
export CLUSTER_NAME=<arc-cluster-name>
export RESOURCE_GROUP=<resource-group-name>

Hoewel Azure Arc Open Service Mesh in preview is, accepteert de opdracht az k8s-extension create alleen voor de vlag pilot --release-train . --auto-upgrade-minor-version is altijd ingesteld op false en er moet een versie worden opgegeven. Als u een OpenShift-cluster hebt, gebruikt u de stappen in de sectie.

az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION

Als het goed is, ziet u uitvoer die vergelijkbaar is met de uitvoer die hieronder wordt weergegeven. Het kan 3-5 minuten duren voordat de daadwerkelijke OSM Helm-grafiek is geïmplementeerd in het cluster. Totdat deze implementatie wordt geïmplementeerd, blijft installState in behandeling.

{
  "autoUpgradeMinorVersion": false,
  "configurationSettings": {},
  "creationTime": "2021-04-29T17:50:11.4116524+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.openservicemesh",
  "id": "/subscriptions/<subscription-id>/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Kubernetes/connectedClusters/$CLUSTER_NAME/providers/Microsoft.KubernetesConfiguration/extensions/osm",
  "identity": null,
  "installState": "Pending",
  "lastModifiedTime": "2021-04-29T17:50:11.4116525+00:00",
  "lastStatusTime": null,
  "location": null,
  "name": "osm",
  "releaseTrain": "pilot",
  "resourceGroup": "$RESOURCE_GROUP",
  "scope": {
    "cluster": {
      "releaseNamespace": "arc-osm-system"
    },
    "namespace": null
  },
  "statuses": [],
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "x.x.x"
}

Een specifieke versie van OSM installeren in een OpenShift-cluster

  1. Kopieer de volgende inhoud en sla deze op in een JSON-bestand. Als u al een configuratie-instellingenbestand hebt gemaakt, voegt u de volgende regel toe aan het bestaande bestand om uw vorige wijzigingen te behouden.

    {
        "osm.OpenServiceMesh.enablePrivilegedInitContainer": "true"
    }
    

    Stel het bestandspad in als een omgevingsvariabele:

    export SETTINGS_FILE=<json-file-path>
    
  2. Voer de opdracht az k8s-extension create uit die wordt gebruikt om de OSM-extensie te maken en geef het instellingenbestand door met behulp van configuratie-instellingen:

    az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION --configuration-settings-file $SETTINGS_FILE
    
  3. Voeg de contextbeperking voor bevoegde beveiliging toe aan elk serviceaccount voor de toepassingen in de mesh.

    oc adm policy add-scc-to-user privileged -z <service account name> -n <service account namespace>
    

Het kan 3-5 minuten duren voordat de daadwerkelijke OSM Helm-grafiek is geïmplementeerd in het cluster. Totdat deze implementatie wordt geïmplementeerd, blijft installState in behandeling.

Geef de osm door om ervoor te zorgen dat de instelling voor de bevoegde init-container niet wordt terugge zetten naar de standaardinstelling. OpenServiceMesh.enablePrivilegedInitContainer" : "true" configuratie-instelling voor alle volgende az k8s-extension create-opdrachten.

Een Azure Arc OSM installeren met behulp van een ARM-sjabloon

Nadat u uw cluster hebt verbonden met Azure Arc, maakt u een JSON-bestand met de volgende indeling, en zorgt u ervoor dat u de waarden <cluster-name> en <osm-arc-version> bij te werken:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "ConnectedClusterName": {
            "defaultValue": "<cluster-name>",
            "type": "String",
            "metadata": {
                "description": "The Connected Cluster name."
            }
        },
        "ExtensionInstanceName": {
            "defaultValue": "osm",
            "type": "String",
            "metadata": {
                "description": "The extension instance name."
            }
        },
        "ExtensionVersion": {
            "defaultValue": "<osm-arc-version>",
            "type": "String",
            "metadata": {
                "description": "The extension type version."
            }
        },
        "ExtensionType": {
            "defaultValue": "Microsoft.openservicemesh",
            "type": "String",
            "metadata": {
                "description": "The extension type."
            }
        },
        "ReleaseTrain": {
            "defaultValue": "Pilot",
            "type": "String",
            "metadata": {
                "description": "The release train."
            }
        }
    },
    "functions": [],
    "resources": [
        {
            "type": "Microsoft.KubernetesConfiguration/extensions",
            "apiVersion": "2020-07-01-preview",
            "name": "[parameters('ExtensionInstanceName')]",
            "properties": {
                "extensionType": "[parameters('ExtensionType')]",
                "releaseTrain": "[parameters('ReleaseTrain')]",
                "version": "[parameters('ExtensionVersion')]"
            },
            "scope": "[concat('Microsoft.Kubernetes/connectedClusters/', parameters('ConnectedClusterName'))]"
        }
    ]
}

Stel nu de omgevingsvariabelen in:

export TEMPLATE_FILE_NAME=<template-file-path>
export DEPLOYMENT_NAME=<desired-deployment-name>

Voer ten slotte deze opdracht uit om de OSM-extensie te installeren via az CLI:

az deployment group create --name $DEPLOYMENT_NAME --resource-group $RESOURCE_GROUP --template-file $TEMPLATE_FILE_NAME

Nu moet u de OSM-resources kunnen bekijken en de OSM-extensie in uw cluster kunnen gebruiken.

De Azure Arc Open Service Mesh-installatie valideren

Voer de volgende opdracht uit.

az k8s-extension show --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name osm

U ziet een JSON-uitvoer die vergelijkbaar is met de onderstaande uitvoer:

{
  "autoUpgradeMinorVersion": false,
  "configurationSettings": {},
  "creationTime": "2021-04-29T19:22:00.7649729+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.openservicemesh",
  "id": "/subscriptions/<subscription-id>/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Kubernetes/connectedClusters/$CLUSTER_NAME/providers/Microsoft.KubernetesConfiguration/extensions/osm",
  "identity": null,
  "installState": "Installed",
  "lastModifiedTime": "2021-04-29T19:22:00.7649731+00:00",
  "lastStatusTime": "2021-04-29T19:23:27.642+00:00",
  "location": null,
  "name": "osm",
  "releaseTrain": "pilot",
  "resourceGroup": "$RESOURCE_GROUP",
  "scope": {
    "cluster": {
      "releaseNamespace": "arc-osm-system"
    },
    "namespace": null
  },
  "statuses": [],
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "x.x.x"
}

Configuratie van OSM-controller

OSM implementeert een MeshConfig-resource als onderdeel van het osm-mesh-config besturingsvlak in de naamruimte arc-osm-system. Het doel van deze MeshConfig is om de mesh-eigenaar/operator de mogelijkheid te bieden om een aantal mesh-configuraties bij te werken op basis van hun behoeften. Als u de standaardwaarden wilt weergeven, gebruikt u de volgende opdracht.

kubectl describe meshconfig osm-mesh-config -n arc-osm-system

In de uitvoer worden de standaardwaarden weergegeven:

Certificate:
    Service Cert Validity Duration:  24h
  Feature Flags:
    Enable Egress Policy:      true
    Enable Multicluster Mode:  false
    Enable WASM Stats:         true
  Observability:
    Enable Debug Server:  false
    Osm Log Level:        info
    Tracing:
      Address:   jaeger.osm-system.svc.cluster.local
      Enable:    false
      Endpoint:  /api/v2/spans
      Port:      9411
  Sidecar:
    Config Resync Interval:            0s
    Enable Privileged Init Container:  false
    Envoy Image:                       mcr.microsoft.com/oss/envoyproxy/envoy:v1.18.3
    Init Container Image:              mcr.microsoft.com/oss/openservicemesh/init:v0.9.1
    Log Level:                         error
    Max Data Plane Connections:        0
    Resources:
  Traffic:
    Enable Egress:                          false
    Enable Permissive Traffic Policy Mode:  true
    Inbound External Authorization:
      Enable:              false
      Failure Mode Allow:  false
      Stat Prefix:         inboundExtAuthz
      Timeout:             1s
    Use HTTPS Ingress:     false

Raadpleeg de naslaginformatie over de Config-API voor meer informatie. U ziet dat spec.traffic.enablePermissiveTrafficPolicyMode is ingesteld op true. De modus voor het afdwingen van verkeersbeleid in OSM is een modus waarin het afdwingen van het SMI-verkeersbeleid wordt omzeild. In deze modus detecteert OSM automatisch services die deel uitmaken van de service-mesh en programma's voor verkeersbeleidsregels op elke Envoy-proxy sidecar om te kunnen communiceren met deze services.

Wijzigingen aanbrengen in de configuratie van de OSM-controller

Notitie

Waarden in MeshConfig osm-mesh-config blijven behouden tussen upgrades.

Wijzigingen in osm-mesh-config kunnen worden aangebracht met behulp van de opdracht kubectl patch. In het volgende voorbeeld wordt de modus voor het verkeersbeleid gewijzigd in false.

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

Als er een onjuiste waarde wordt gebruikt, wordt de wijziging door validaties op de MeshConfig-CRD voorkomen met een foutbericht waarin wordt uitgelegd waarom de waarde ongeldig is. De onderstaande opdracht laat bijvoorbeeld zien wat er gebeurt als we enableEgress patchen naar een niet-Booleaanse waarde.

kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":"no"}}}'  --type=merge

# Validations on the CRD will deny this change
The MeshConfig "osm-mesh-config" is invalid: spec.traffic.enableEgress: Invalid value: "string": spec.traffic.enableEgress in body must be of type boolean: "string"

Configuratie van OSM-controller (versie v0.8.4)

Momenteel kunt u de configuratie van de OSM-controller openen en configureren via de ConfigMap. Als u de configuratie-instellingen van de OSM-controller wilt weergeven, moet u een query uitvoeren op osm-config de ConfigMap via kubectl om de configuratie-instellingen ervan weer te geven.

kubectl get configmap osm-config -n arc-osm-system -o json

Uitvoer:

{
  "egress": "false",
  "enable_debug_server": "false",
  "enable_privileged_init_container": "false",
  "envoy_log_level": "error",
  "permissive_traffic_policy_mode": "true",
  "prometheus_scraping": "true",
  "service_cert_validity_duration": "24h",
  "tracing_enable": "false",
  "use_https_ingress": "false"
}

Lees de documentatie over OSM ConfigMap voor meer informatie over elk van de beschikbare configuraties.

Als u wijzigingen wilt aanbrengen in de OSM ConfigMap voor versie v0.8.4, gebruikt u de volgende richtlijnen:

  1. Kopieer de wijzigingen die u wilt aanbrengen en sla ze op in een JSON-bestand. In dit voorbeeld wijzigen we de permissive_traffic_policy_mode van waar in onwaar. Telkens wanneer u een wijziging aan aanbrengen in , moet u de volledige lijst met wijzigingen (vergeleken met de osm-config osm-config standaardinstelling ) in een JSON-bestand verstrekken.

    {
        "osm.OpenServiceMesh.enablePermissiveTrafficPolicy" : "false"
    }
    

    Stel het bestandspad in als een omgevingsvariabele:

    export SETTINGS_FILE=<json-file-path>
    
  2. Voer dezelfde opdracht az k8s-extension create uit die u hebt gebruikt om de extensie te maken, maar geef nu het configuratie-instellingenbestand door:

    az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION --configuration-settings-file $SETTINGS_FILE
    

    Notitie

    Geef dezelfde configuratie-instellingen door aan alle volgende az k8s-extension create-opdrachten om ervoor te zorgen dat de ConfigMap-wijzigingen niet worden teruggedraaid naar de standaardinstelling.

Open Service Mesh Azure Arc ingeschakeld

Als u OSM-mogelijkheden wilt gaan gebruiken, moet u eerst de naamruimten van de toepassing onboarden in de service-mesh. Download de OSM CLI van osm GitHub pagina met releases. Zodra de naamruimten zijn toegevoegd aan de mesh, kunt u het SMI-beleid configureren om de gewenste OSM-mogelijkheid te bereiken.

Naamruimten onboarden in de service-mesh

Voeg naamruimten toe aan de mesh door de volgende opdracht uit te voeren:

osm namespace add <namespace_name>

Meer informatie over onboardingservices vindt u hier.

OSM configureren met SMI-beleid (Service Mesh Interface)

U kunt beginnen met een demotoepassing of uw testomgeving gebruiken om SMI-beleid uit te proberen.

Notitie

Zorg ervoor dat de versie van de boekwinkeltoepassing die u hebt uitgevoerd, overeenkomt met de versie van de OSM-extensie die op uw cluster is geïnstalleerd. Bijvoorbeeld: als u v0.8.4 van de OSM-extensie gebruikt, gebruikt u de bookstore-demo van de upstream-vertakking release-v0.8 van de OSM-upstream-opslagplaats.

Uw eigen Jaeger-, Prometheus- en Grafana-instanties configureren

De OSM-extensie installeert geen invoegtoepassingen zoals Jaeger, Prometheus en Grafana, zodat gebruikers OSM kunnen integreren met hun eigen exemplaren van deze hulpprogramma's. Als u wilt integreren met uw eigen exemplaren, raadpleegt u de volgende documentatie:

Notitie

Gebruik voorzichtig de opdrachten in de osm-GitHub documentatie. Zorg ervoor dat u de juiste naam van de naamruimte 'arc-osm-system' gebruikt bij het aanbrengen van wijzigingen in osm-mesh-config .

Toepassing bewaken met Azure Monitor toepassingen en Insights

Zowel Azure Monitor als Azure-toepassing Insights helpt u de beschikbaarheid en prestaties van uw toepassingen en services te maximaliseren door een uitgebreide oplossing te bieden voor het verzamelen, analyseren en gebruiken van telemetrie vanuit uw cloud- en on-premises omgevingen.

Azure Arc Open Service Mesh met ingeschakelde service heeft diepe integraties in beide Azure-services en biedt een lijktloze Azure-ervaring voor het weergeven en reageren op kritieke KPI's die worden geleverd door metrische OSM-gegevens. Volg de onderstaande stappen om toe te staan Azure Monitor prometheus-eindpunten te scrapen voor het verzamelen van metrische gegevens van toepassingen.

  1. Zorg ervoor dat de toepassingsnaamruimten die u wilt bewaken, worden ge onboardd naar de mesh. Volg de richtlijnen die hier beschikbaar zijn.

  2. De prometheus-eindpunten voor toepassingsnaamruimten blootstellen.

    osm metrics enable --namespace <namespace1>
    osm metrics enable --namespace <namespace2>
    

    Zorg ervoor dat voor v0.8.4 prometheus_scraping is ingesteld op in de true osm-config ConfigMap.

  3. Installeer de Azure Monitor-extensie aan de hand van de richtlijnen die hier beschikbaar zijn.

  4. Voeg de naamruimten toe die u wilt bewaken in container-azm-ms-osmconfig ConfigMap. Download de ConfigMap hier.

    monitor_namespaces = ["namespace1", "namespace2"]
    
  5. Voer de volgende kubectl-opdracht uit

    kubectl apply -f container-azm-ms-osmconfig.yaml
    

Het kan tot 15 minuten duren voordat de metrische gegevens worden weer geven in Log Analytics. U kunt proberen een query uit te voeren op de InsightsMetrics-tabel.

InsightsMetrics
| where Name contains "envoy"
| extend t=parse_json(Tags)
| where t.app == "namespace1"

Meer informatie over integratie met Azure Monitor hier.

  1. Gebruik deze koppeling om Azure Arc kubernetes-cluster te openen.
  2. Ga naar Azure Monitor en navigeer naar het tabblad Rapporten om toegang te krijgen tot de OSM-werkmap.
  3. Selecteer het tijdsbereik & naamruimte om het bereik van uw services te variëren.

OSM-werkmap

Tabblad Aanvragen

  • Dit tabblad bevat een overzicht van alle HTTP-aanvragen die via service naar service in OSM worden verzonden.
  • U kunt alle services en alle services die met de service communiceren, weergeven door de service in het raster te selecteren.
  • U kunt het totale aantal aanvragen bekijken, het foutpercentage van & P90-latentie.
  • U kunt inzoomen op de bestemming en trends bekijken voor HTTP-fout-/succescode, slagingspercentage, podresourcegebruik en latentie in verschillende percentielen.

Tabblad Verbindingen

  • Dit tabblad bevat een overzicht van alle verbindingen tussen uw services in Open Service Mesh.
  • Uitgaande verbindingen: totaal aantal verbindingen tussen bron- en doelservices.
  • Uitgaande actieve verbindingen: laatste aantal actieve verbindingen tussen bron en doel in het geselecteerde tijdsbereik.
  • Uitgaande mislukte verbindingen: totaal aantal mislukte verbindingen tussen de bron- en doelservice

Het exemplaar van de OSM-extensie upgraden naar een specifieke versie

Tijdens upgrades kan er enige downtime van het besturingsvlak zijn. De gegevensvlak wordt alleen beïnvloed tijdens CRD-upgrades.

Ondersteunde upgrades

De OSM-extensie kan worden bijgewerkt naar de volgende secundaire versie. Downgrades en belangrijke versie-upgrades worden op dit moment niet ondersteund.

CRD-upgrades

De OSM-extensie kan niet worden bijgewerkt naar een nieuwe versie als deze versie CRD-versie-updates bevat zonder eerst de bestaande CRD's te verwijderen. U kunt controleren of een OSM-upgrade ook CRD-versie-updates bevat door de sectie CRD-updates van de OPMERKINGEN bij de OSM-release te controleren.

Zorg ervoor dat u vóór het verwijderen van de CRD's een back-up maakt van uw aangepaste resources, zodat deze eenvoudig opnieuw kunnen worden gemaakt na de upgrade. Volg daarna de onderstaande upgrade-instructies.

Notitie

Het upgraden van de CRD's is van invloed op het gegevensvlak, omdat het SMI-beleid niet bestaat tussen het moment dat ze worden verwijderd en het moment dat ze opnieuw worden gemaakt.

Upgrade-instructies

  1. Verwijder de oude CRD's en aangepaste resources (Uitvoeren vanuit de hoofdmap van de OSM-repo). Zorg ervoor dat de tag van de OSM-CRD's overeenkomt met de nieuwe versie van de grafiek.

    kubectl delete --ignore-not-found --recursive -f ./charts/osm/crds/
    
    
  2. Install the updated CRDs.

    kubectl apply -f charts/osm/crds/
    
  3. Stel de nieuwe grafiekversie in als een omgevingsvariabele:

    export VERSION=<chart version>
    
  4. Voer az k8s-extension create uit met de nieuwe grafiekversie

    az k8s-extension create --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters --extension-type Microsoft.openservicemesh --scope cluster --release-train pilot --name osm --version $VERSION --configuration-settings-file $SETTINGS_FILE
    
  5. Aangepaste resources opnieuw maken met nieuwe CRD's

Open Service Mesh Azure Arc verwijderen

Gebruik de volgende opdracht:

az k8s-extension delete --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name osm -y

Controleer of het extensie-exemplaar is verwijderd:

az k8s-extension list --cluster-type connectedClusters --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Deze uitvoer mag geen OSM bevatten. Als er geen andere extensies op uw cluster zijn geïnstalleerd, is het gewoon een lege matrix.

Wanneer u de opdracht az k8s-extension gebruikt om de OSM-extensie te verwijderen, wordt de naamruimte arc-osm-system niet verwijderd en duurt het ongeveer 10 minuten om de werkelijke resources in de naamruimte (zoals het muteren van de configuratie van de webhook en osm-controller-pod) te verwijderen.

Notitie

Gebruik de CLI az k8s-extension om OSM-onderdelen te verwijderen die worden beheerd door Arc. Het verwijderen van de OSM CLI wordt niet ondersteund door Arc en kan leiden tot ongewenst gedrag.

Problemen oplossen

Raadpleeg de gids voor probleemoplossing die hier beschikbaar is.

Volgende stappen

Wilt u gewoon iets uitproberen?
Ga snel aan de slag met een snelstartscenario Azure Arc cluster-API.