Over service-meshes

Een service-mesh is een infrastructuurlaag in uw toepassing die communicatie tussen services mogelijk maakt. Service-meshes bieden mogelijkheden zoals verkeersbeheer, tolerantie, beleid, beveiliging, sterke identiteit en waarneembaarheid voor uw workloads. Uw toepassing wordt losgekoppeld van deze operationele mogelijkheden, terwijl de service-mesh ze van de toepassingslaag naar beneden naar de infrastructuurlaag verplaatst.

Scenario's

Wanneer u een service-mesh gebruikt, kunt u scenario's inschakelen zoals:

  • Al het verkeer in het cluster versleutelen: schakel wederzijdse TLS in tussen de opgegeven services in het cluster. Dit kan worden uitgebreid naar inkomend en uitgaand verkeer op de netwerkperimeter en biedt een standaardbeveiligingsoptie zonder dat er wijzigingen nodig zijn voor de toepassingscode en -infrastructuur.

  • Canary en gefaseerde implementaties: geef voorwaarden op voor een subset van verkeer die moet worden gerouteerd naar een set nieuwe services in het cluster. Na een geslaagde test van canary release verwijdert u voorwaardelijke routering en fase geleidelijk het verhogen van % van al het verkeer naar een nieuwe service. Uiteindelijk wordt al het verkeer omgeleid naar de nieuwe service.

  • Verkeersbeheer en -manipulatie: maak een beleid voor een service waarmee al het verkeer wordt beperkt tot een versie van een service van een specifieke oorsprong, of een beleid dat een strategie voor opnieuw proberen toepast op klassen van fouten tussen opgegeven services. Liveverkeer spiegelen naar nieuwe versies van services tijdens een migratie of om problemen op te sporen. Injecteer fouten tussen services in een testomgeving om de tolerantie te testen.

  • Waarneembaarheid: krijg inzicht in hoe uw services zijn verbonden en het verkeer tussen de services. Verzamel metrische gegevens, logboeken en traceringen voor al het verkeer in het cluster, inclusief inkomend/uitgaand verkeer. Gedistribueerde traceringsmogelijkheden toevoegen aan toepassingen.

Selectiecriteria

Voordat u een service-mesh selecteert, moet u de vereisten en de redenering voor het installeren van een service-mesh begrijpen. Stel de volgende vragen:

  • Is een controller voor inkomend verkeer voldoende voor mijn behoeften?: Soms is het voldoende om het vereiste scenario te ondersteunen met een mogelijkheid zoals A/B-tests of het splitsen van verkeer op het toegangsbeheerobject. Voeg geen complexiteit toe aan uw omgeving zonder voordeel.

  • Kunnen mijn workloads en omgeving de extra overhead tolereren?: Alle onderdelen die nodig zijn om de service-mesh te ondersteunen, vereisen resources zoals CPU en geheugen. Alle proxy's en de bijbehorende beleidscontroles voegen latentie toe aan uw verkeer. Als u workloads hebt die zeer gevoelig zijn voor latentie of geen extra resources kunt bieden voor service mesh-onderdelen, moet u het gebruik van een service-mesh overwegen.

  • Voegt dit onnodige complexiteit toe?: Als u een service-mesh wilt installeren om een mogelijkheid te gebruiken die niet essentieel is voor het zakelijke of operationele team, moet u overwegen of de extra complexiteit van de installatie, het onderhoud en de configuratie de moeite waard is.

  • Kan dit worden toegepast in een incrementele benadering?: Sommige service-meshes die veel mogelijkheden bieden, kunnen worden gebruikt in een meer incrementele benadering. Installeer alleen de onderdelen die u nodig hebt om uw succes te garanderen. Als u later merkt dat er meer mogelijkheden nodig zijn, kunt u deze op een later tijdstip verkennen. Weersta de drang om alles vanaf het begin te installeren.

Volgende stappen

Azure Kubernetes Service (AKS) biedt officieel ondersteunde invoegtoepassingen voor Istio en Open Service Mesh:

Er zijn ook service-meshes die worden geleverd door opensource-projecten en derden die vaak worden gebruikt met AKS. Deze service-meshes vallen niet onder het AKS-ondersteuningsbeleid.

Zie Service Mesh Landscape van laag 5 voor meer informatie over het service-mesh-landschap.

Zie voor meer informatie over de standaardisatie van service mesh: