Over service-meshes
Een service-mesh is een infrastructuurlaag in uw toepassing die communicatie tussen services mogelijk maakt. Service-meshes bieden mogelijkheden zoals verkeerbeheer, tolerantie, beleid, beveiliging, sterke identiteit en waarneembaarheid voor uw workloads. Uw toepassing is losgekoppeld van deze operationele mogelijkheden, terwijl de service-mesh ze uit de toepassingslaag en omlaag verplaatst naar de infrastructuurlaag.
Scenario's
Wanneer u een service-mesh gebruikt, kunt u scenario's inschakelen, zoals:
Alle 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 veilige standaardoptie zonder dat er wijzigingen nodig zijn voor toepassingscode en infrastructuur.
Canary- en gefaseerde implementaties: geef voorwaarden op voor een subset van het verkeer dat moet worden gerouteerd naar een set nieuwe services in het cluster. Bij een geslaagde test van canary release verwijdert u voorwaardelijke routering en fase geleidelijk het percentage van al het verkeer naar een nieuwe service. Uiteindelijk wordt al het verkeer omgeleid naar de nieuwe service.
Verkeerbeheer en manipulatie: maak een beleid voor een service waarmee alle 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 fouten tussen opgegeven services. Live verkeer spiegelen naar nieuwe versies van services tijdens een migratie of om problemen op te sporen. Injecteer fouten tussen services in een testomgeving om tolerantie te testen.
Waarneembaarheid: krijg inzicht in de manier waarop uw services zijn verbonden en het verkeer dat ertussen stroomt. 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 uw vereisten en redenering voor het installeren van een service-mesh begrijpen. Stel de volgende vragen:
Is een ingangscontroller voldoende voor mijn behoeften?: soms is het voldoende om een mogelijkheid te hebben zoals A/B-tests of het splitsen van verkeer bij inkomend verkeer om het vereiste scenario te ondersteunen. Voeg geen complexiteit toe aan uw omgeving zonder nadeel.
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 kunnen bieden voor service-mesh-onderdelen, moet u overwegen om een service-mesh te gebruiken.
Voegt dit onnodige complexiteit toe?: Als u een service-mesh wilt installeren om een mogelijkheid te gebruiken die niet essentieel is voor de bedrijfs- of operationele teams, kunt u overwegen of de toegevoegde complexiteit van de installatie, het onderhoud en de configuratie de moeite waard is.
Kan dit worden aangenomen in een incrementele benadering?: sommige service-meshes die veel mogelijkheden bieden, kunnen in een meer incrementele benadering worden gebruikt. Installeer alleen de onderdelen die u nodig hebt om uw succes te garanderen. Als u later merkt dat er meer mogelijkheden nodig zijn, verkent u deze op een later tijdstip. Verzet 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 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 service mesh-standaardisatie-inspanningen:
Azure Kubernetes Service