Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erste Schritte mit AWS App Mesh und Kubernetes
Wichtig
Hinweis zum Ende des Supports: Am 30. September 2026 AWS wird der Support für eingestellt. AWS App Mesh Nach dem 30. September 2026 können Sie nicht mehr auf die AWS App Mesh Konsole oder die Ressourcen zugreifen. AWS App Mesh Weitere Informationen finden Sie in diesem Blogbeitrag Migration von AWS App Mesh zu Amazon ECS Service Connect
Bei der Integration AWS App Mesh mit Kubernetes mithilfe des App Mesh Mesh-Controllers für Kubernetes verwalten Sie App Mesh Mesh-Ressourcen wie Meshes, virtuelle Dienste, virtuelle Knoten, virtuelle Router und Routen über Kubernetes. Außerdem fügen Sie die App Mesh-Sidecar-Container-Images automatisch zu den Kubernetes-Pod-Spezifikationen hinzu. Dieses Tutorial führt Sie durch die Installation des App Mesh Mesh-Controllers für Kubernetes, um diese Integration zu aktivieren.
Der Controller geht mit der Bereitstellung der folgenden benutzerdefinierten Kubernetes-Ressourcendefinitionen einher: meshes, virtual services, virtual nodes und virtual routers. Der Controller überwacht die Erstellung, Änderung und Löschung der benutzerdefinierten Ressourcen und nimmt über die App Mesh-API Änderungen an den entsprechenden App Mesh- Servicenetze Virtuelle Dienste Virtuelle Knoten Virtuelle GatewaysGateway-Routen,,,, Virtuelle Router (einschließlichRouten) Ressourcen vor. Weitere Informationen oder Beiträge zum Controller finden Sie im GitHubProjekt
Der Controller installiert auch einen Webhook, der die folgenden Container in Kubernetes-Pods injiziert, die mit einem von Ihnen angegebenen Namen beschriftet sind.
-
App Mesh Envoy-Proxy — Envoy verwendet die in der App Mesh-Steuerebene definierte Konfiguration, um zu bestimmen, wohin Ihr Anwendungsdatenverkehr gesendet werden soll.
-
App Mesh Proxy Route Manager — Aktualisiert
iptablesRegeln im Netzwerk-Namespace eines Pods, die eingehenden und ausgehenden Datenverkehr über Envoy weiterleiten. Dieser Container wird als Kubernetes-Init-Container innerhalb des Pods ausgeführt.
Voraussetzungen
-
Ein vorhandenes Verständnis von App Mesh Mesh-Konzepten. Weitere Informationen finden Sie unter Was ist AWS App Mesh?.
-
Vorhandene Grundlagen zu Kubernetes-Konzepten. Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Was ist Kubernetes
. -
Ein vorhandener Kubernetes-Cluster. Wenn Sie noch keinen Cluster haben, finden Sie weitere Informationen unter Erste Schritte mit Amazon EKS im Amazon EKS-Benutzerhandbuch. Wenn Sie Ihren eigenen Kubernetes-Cluster auf Amazon ausführen, stellen Sie sicher EC2, dass Docker gegenüber dem Amazon ECR-Repository authentifiziert ist, in dem sich das Envoy-Image befindet. Weitere Informationen finden Sie unter Envoy-Image, Registry-Authentifizierung im Amazon Elastic Container Registry User Guide und Pull an Image from a Private Registry
in der Kubernetes-Dokumentation. -
App Mesh unterstützt Linux-Dienste, die mit DNS oder beidem registriert sind. AWS Cloud Map Um dieses Handbuch für Erste Schritte zu verwenden, empfehlen wir, dass Sie über drei vorhandene Services verfügen, die bei DNS registriert sind. Bei den Verfahren in diesem Thema wird davon ausgegangen
serviceAserviceB, dass die vorhandenen Dienste benannt sindserviceBv2und dass alle Dienste über einen Namespace namens auffindbar sind.apps.localSie können ein Service-Mesh und seine Ressourcen erstellen, auch wenn die Services nicht vorhanden sind. Sie können das Mesh jedoch erst verwenden, wenn Sie tatsächliche Services bereitgestellt haben.
-
Die AWS CLI Version 1.18.116 oder höher oder 2.0.38 oder höher ist installiert. Informationen zur Installation oder zum Upgrade von finden Sie unter Installation von. AWS CLIAWS CLI
-
Einen
kubectl-Client, der für die Kommunikation mit Ihrem Kubernetes-Cluster konfiguriert ist. Wenn Sie Amazon Elastic Kubernetes Service verwenden, können Sie die Anweisungen zur Installationkubectlund Konfiguration einerkubeconfigDatei verwenden. -
Helm Version 3.0 oder höher ist installiert. Wenn Sie Helm nicht installiert haben, finden Sie weitere Informationen unter Using Helm with Amazon EKS im Amazon EKS-Benutzerhandbuch.
-
Amazon EKS unterstützt
IPv4_ONLYderzeitIPv6_ONLYnur IP-Einstellungen, da Amazon EKS derzeit nur Pods unterstützt, die entweder nurIPv4Traffic oder nurIPv6Traffic bereitstellen können.
Die verbleibenden Schritte gehen davon aus, dass die tatsächlichen Services als serviceA, serviceB und serviceBv2 benannt sind, und dass alle Services über einen Namespace mit dem Namen apps.local gefunden werden können.
Schritt 1: Installieren der Integrationskomponenten
Installieren Sie die Integrationskomponenten einmal auf jedem Cluster, der Pods hostet, die Sie mit App Mesh verwenden möchten.
So installieren Sie die Integrationskomponenten
-
Für die verbleibenden Schritte dieses Verfahrens ist ein Cluster erforderlich, ohne dass eine Vorabversion des Controllers installiert ist. Wenn Sie eine Vorabversion installiert haben oder sich nicht sicher sind, ob Sie eine installiert haben, können Sie ein Skript herunterladen und ausführen, das überprüft, ob eine Vorabversion auf Ihrem Cluster installiert ist.
curl -o pre_upgrade_check.sh https://raw.githubusercontent.com/aws/eks-charts/master/stable/appmesh-controller/upgrade/pre_upgrade_check.sh sh ./pre_upgrade_check.shWenn das Skript
Your cluster is ready for upgrade. Please proceed to the installation instructionszurückgibt, können Sie mit dem nächsten Schritt fortfahren. Wenn eine andere Meldung zurückgegeben wird, müssen Sie die Upgrade-Schritte ausführen, bevor Sie fortfahren. Weitere Informationen zum Upgrade einer Vorabversion finden Sie unter Upgrade auf.GitHub -
Fügen Sie das
eks-charts-Repository Helm hinzu.helm repo add eks https://aws.github.io/eks-charts -
Installieren Sie die benutzerdefinierte Ressourcendefinitionen (CRD) von App Mesh Kubernetes.
kubectl apply -k "https://github.com/aws/eks-charts/stable/appmesh-controller/crds?ref=master" -
Erstellen Sie einen Kubernetes-Namespace für den Controller.
kubectl create ns appmesh-system -
Legen Sie die folgenden Variablen für die Verwendung in späteren Schritten fest. Ersetzen Sie
undcluster-namedurch die Werte für Ihren vorhandenen Cluster.Region-codeexport CLUSTER_NAME=cluster-nameexport AWS_REGION=Region-code -
(Optional) Wenn Sie den Controller auf Fargate ausführen möchten, müssen Sie ein Fargate-Profil erstellen. Falls Sie es noch nicht
eksctlinstalliert haben, finden Sie weitere Informationen unter Installation oder Upgradeeksctlim Amazon EKS-Benutzerhandbuch. Wenn Sie das Profil lieber mit der Konsole erstellen möchten, finden Sie weitere Informationen unter Erstellen eines Fargate-Profils im Amazon EKS-Benutzerhandbuch.eksctl create fargateprofile --cluster $CLUSTER_NAME --nameappmesh-system--namespaceappmesh-system -
Erstellen Sie einen OpenID Connect (OIDC)-Identitätsanbieter für Ihren Cluster. Wenn Sie es noch nicht
eksctlinstalliert haben, können Sie es mithilfe der Anweisungen unter Installation oder Upgradeeksctlim Amazon EKS-Benutzerhandbuch installieren. Wenn Sie den Anbieter lieber über die Konsole erstellen möchten, finden Sie weitere Informationen unter Aktivieren von IAM-Rollen für Dienstkonten auf Ihrem Cluster im Amazon EKS-Benutzerhandbuch.eksctl utils associate-iam-oidc-provider \ --region=$AWS_REGION \ --cluster $CLUSTER_NAME \ --approve -
Erstellen Sie eine IAM-Rolle, fügen Sie ihr die AWSAppMeshFullAccess
und die AWSCloudMapFullAccess AWS verwalteten Richtlinien hinzu und binden Sie sie an das appmesh-controllerKubernetes-Servicekonto. Die Rolle ermöglicht es dem Controller, App Mesh-Ressourcen hinzuzufügen, zu entfernen und zu ändern.Anmerkung
Der Befehl erstellt eine AWS IAM-Rolle mit einem automatisch generierten Namen. Sie können den erstellten IAM-Rollennamen nicht angeben.
eksctl create iamserviceaccount \ --cluster $CLUSTER_NAME \ --namespace appmesh-system \ --name appmesh-controller \ --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapFullAccess,arn:aws:iam::aws:policy/AWSAppMeshFullAccess \ --override-existing-serviceaccounts \ --approveWenn Sie das Servicekonto lieber mit dem AWS Management Console oder erstellen möchten AWS CLI, finden Sie weitere Informationen unter Erstellen einer IAM-Rolle und -Richtlinie für Ihr Servicekonto im Amazon EKS-Benutzerhandbuch. Wenn Sie das AWS Management Console oder verwenden, AWS CLI um das Konto zu erstellen, müssen Sie die Rolle auch einem Kubernetes-Servicekonto zuordnen. Weitere Informationen finden Sie unter Angeben einer IAM-Rolle für Ihr Servicekonto im Amazon EKS-Benutzerhandbuch.
-
Stellen Sie den App Mesh Mesh-Controller bereit. Eine Liste aller Konfigurationsoptionen finden Sie unter Konfiguration
unter GitHub. -
Um den App Mesh-Controller für einen privaten Cluster bereitzustellen, müssen Sie zuerst App Mesh und Service Discovery Amazon VPC-Endpoints für das verknüpfte private Subnetz aktivieren. Sie müssen auch die festlegen.
accountId--set accountId=$AWS_ACCOUNT_IDUm X-Ray Tracing in einem privaten Cluster zu aktivieren, aktivieren Sie die Amazon VPC-Endpoints X-Ray und Amazon ECR. Der Controller verwendet
public.ecr.aws/xray/aws-xray-daemon:lateststandardmäßig. Ziehen Sie dieses Bild also lokal und übertragen Sie es in Ihr persönliches ECR-Repository.Anmerkung
Amazon VPC-Endpunkte unterstützen derzeit keine öffentlichen Amazon ECR-Repositorys.
Das folgende Beispiel zeigt die Bereitstellung des Controllers mit Konfigurationen für X-Ray.
helm upgrade -i appmesh-controller eks/appmesh-controller \ --namespace appmesh-system \ --set region=$AWS_REGION\ --set serviceAccount.create=false \ --set serviceAccount.name=appmesh-controller \ --set accountId=$AWS_ACCOUNT_ID\ --set log.level=debug \ --set tracing.enabled=true \ --set tracing.provider=x-ray \ --set xray.image.repository=your-account-id.dkr.ecr.your-region.amazonaws.com/your-repository\ --set xray.image.tag=your-xray-daemon-image-tagÜberprüfen Sie, ob der X-Ray-Daemon erfolgreich injiziert wurde, wenn Sie die Anwendungsbereitstellung mit Ihrem virtuellen Knoten oder Gateway verbinden.
Weitere Informationen finden Sie unter Private Clusters im Amazon EKS-Benutzerhandbuch.
-
Stellen Sie den App Mesh Mesh-Controller für andere Cluster bereit. Eine Liste aller Konfigurationsoptionen finden Sie unter Konfiguration
unter GitHub. helm upgrade -i appmesh-controller eks/appmesh-controller \ --namespace appmesh-system \ --set region=$AWS_REGION \ --set serviceAccount.create=false \ --set serviceAccount.name=appmesh-controller
Anmerkung
Wenn es sich bei Ihrer Amazon EKS-Cluster-Familie um eine handelt
IPv6, legen Sie bei der Bereitstellung des App Mesh Mesh-Controllers den Cluster-Namen fest, indem Sie dem vorherigen Befehl die folgende Option hinzufügen--set clusterName=$CLUSTER_NAME.Wichtig
Wenn sich Ihr Cluster in den
af-south-1Regionenme-south-1ap-east-1ap-southeast-3,eu-south-1,il-central-1,, oder befindet, müssen Sie dem vorherigen Befehl die folgende Option hinzufügen:Ersetzen Sie
account-idundRegion-codedurch einen der entsprechenden Wertesätze.-
Für das Beiwagenbild:
-
--set image.repository=account-id.dkr.ecr.Region-code.amazonaws.com/amazon/appmesh-controller -
772975370895.dkr. ecr.me-south-1.amazonaws.com /:v1.29.12.3-prod aws-appmesh-envoy
-
856666278305.dkr. ecr.ap-east-1.amazonaws.com /:v1.29.12.3-prod aws-appmesh-envoy
-
909464085924.dkr. ecr.ap-southeast-3.amazonaws.com /:v1.29.12.3-prod aws-appmesh-envoy
-
422531588944.dkr. ecr.eu-south-1.amazonaws.com /:v1.29.12.3-prod aws-appmesh-envoy
-
564877687649.dkr. ecr.il-central-1.amazonaws.com /:v1.29.12.3-prod aws-appmesh-envoy
-
924023996002.dkr. ecr.af-south-1.amazonaws.com /:v1.29.12.3-prod aws-appmesh-envoy
-
-
Das ältere Bild finden Sie im URIs Change Log On.
GitHub Die Version der AWS Konten, auf denen die Bilder vorhanden sind, hat sich geändert v1.5.0. Ältere Versionen der Images werden auf AWS Konten gehostet, die sich in den Amazon Elastic Kubernetes Service Amazon-Container-Image-Registern befinden. -
Für das Controller-Image:
-
--set sidecar.image.repository=account-id.dkr.ecr.Region-code.amazonaws.com/aws-appmesh-envoy -
772975370895.dkr.ecr.me-south-1.amazonaws. com/amazon/appmesh-Controller: v1.13.1
-
856666278305.dkr.ecr.ap-east-1.amazonaws. com/amazon/appmesh-Controller: v1.13.1
-
909464085924.dkr.ecr.ap-southeast-3.amazonaws. com/amazon/appmesh-Controller: v1.13.1
-
422531588944.dkr.ecr.eu-south-1.amazonaws. com/amazon/appmesh-Controller: v1.13.1
-
564877687649.dkr.ecr.il-central-1.amazonaws. com/amazon/appmesh-Controller: v1.13.1
-
924023996002.dkr.ecr.af-south-1.amazonaws. com/amazon/appmesh-Controller: v1.13.1
-
-
Für das Sidecar-Init-Image:
-
--set sidecar.image.repository=account-id.dkr.ecr.Region-code.amazonaws.com/aws-appmesh-envoy -
772975370895.dkr. ecr.me-south-1.amazonaws.com/-manager:v7-prod aws-appmesh-proxy-route
-
856666278305.dkr. ecr.ap-east-1.amazonaws.com/aws-appmesh-proxy-route-manager:v7-prod
-
909464085924.dkr. ecr.ap-southeast-3.amazonaws.com/-manager:v7-prod aws-appmesh-proxy-route
-
422531588944.dkr. ecr.eu-south-1.amazonaws.com/-manager:v7-prod aws-appmesh-proxy-route
-
564877687649.dkr. ecr.il-central-1.amazonaws.com/aws-appmesh-proxy-route-manager:v7-prod
-
924023996002.dkr. ecr.af-south-1.amazonaws.com/-manager:v7-prod aws-appmesh-proxy-route
-
Wichtig
Nur Version v1.9.0.0-prod oder höher wird für die Verwendung mit App Mesh unterstützt.
-
-
Vergewissern Sie sich, dass die Controller-Version
v1.4.0oder höher ist. Sie können das Änderungsprotokoll überprüfen.GitHub kubectl get deployment appmesh-controller \ -n appmesh-system \ -o json | jq -r ".spec.template.spec.containers[].image" | cut -f2 -d ':'Anmerkung
Wenn Sie das Protokoll für den laufenden Container anzeigen, wird möglicherweise eine Zeile angezeigt, die den folgenden Text enthält. Dies kann gefahrlos ignoriert werden kann.
Neither -kubeconfig nor -master was specified. Using the inClusterConfig. This might not work.
Schritt 2: App Mesh Mesh-Ressourcen bereitstellen
Wenn Sie eine Anwendung in Kubernetes bereitstellen, erstellen Sie auch die benutzerdefinierten Kubernetes-Ressourcen, sodass der Controller die entsprechenden App Mesh Mesh-Ressourcen erstellen kann. Das folgende Verfahren hilft Ihnen bei der Bereitstellung von App Mesh Mesh-Ressourcen mit einigen ihrer Funktionen. Beispielmanifeste für die Bereitstellung anderer App Mesh-Ressourcenfunktionen finden Sie in den v1beta2 Unterordnern vieler Feature-Ordner, die unter App Mesh Walkthroughs
Wichtig
Sobald der Controller eine App Mesh Mesh-Ressource erstellt hat, empfehlen wir, dass Sie die App Mesh Mesh-Ressource nur mit dem Controller ändern oder löschen. Wenn Sie mit App Mesh Änderungen an der Ressource vornehmen oder sie löschen, ändert der Controller die geänderte oder gelöschte App Mesh Mesh-Ressource standardmäßig zehn Stunden lang nicht und erstellt sie nicht neu. Sie können diese Dauer so konfigurieren, dass sie geringer ist. Weitere Informationen finden Sie unter Konfiguration von
So stellen Sie App-Mesh-Ressourcen bereit
-
Erstellen Sie einen Kubernetes-Namespace, in dem App Mesh Mesh-Ressourcen bereitgestellt werden sollen.
-
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
namespace.yamlauf Ihrem Computer.apiVersion: v1 kind: Namespace metadata: name:my-appslabels: mesh:my-meshappmesh.k8s.aws/sidecarInjectorWebhook: enabled -
Erstellen Sie den Namespace.
kubectl apply -f namespace.yaml
-
-
Erstellen Sie ein App Mesh Service Mesh.
-
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
mesh.yamlauf Ihrem Computer. Die Datei wird verwendet, um eine Mesh-Ressource mit dem Namen zu erstellen. Ein Service Mesh ist eine logische Begrenzung für den Netzwerkdatenverkehr zwischen den darin vorhandenen Services.my-meshapiVersion: appmesh.k8s.aws/v1beta2 kind: Mesh metadata: name:my-meshspec: namespaceSelector: matchLabels: mesh:my-mesh -
Erzeugen Sie das Mesh.
kubectl apply -f mesh.yaml -
Zeigen Sie die Details der erstellten Kubernetes-Mesh-Ressource an.
kubectl describe meshmy-meshAusgangs-
Name: my-mesh Namespace: Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"Mesh","metadata":{"annotations":{},"name":"my-mesh"},"spec":{"namespaceSelector":{"matchLa... API Version: appmesh.k8s.aws/v1beta2 Kind: Mesh Metadata: Creation Timestamp: 2020-06-17T14:51:37Z Finalizers: finalizers.appmesh.k8s.aws/mesh-members finalizers.appmesh.k8s.aws/aws-appmesh-resources Generation: 1 Resource Version: 6295 Self Link: /apis/appmesh.k8s.aws/v1beta2/meshes/my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Spec: Aws Name: my-mesh Namespace Selector: Match Labels: Mesh: my-mesh Status: Conditions: Last Transition Time: 2020-06-17T14:51:37Z Status: True Type: MeshActive Mesh ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh Observed Generation: 1 Events: <none> -
Sehen Sie sich die Details zum App Mesh Service Mesh an, das der Controller erstellt hat.
aws appmesh describe-mesh --mesh-namemy-meshAusgangs-
{ "mesh": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh", "createdAt": "2020-06-17T09:51:37.920000-05:00", "lastUpdatedAt": "2020-06-17T09:51:37.920000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": {}, "status": { "status": "ACTIVE" } } }
-
-
Erstellen Sie einen virtuellen App-Mesh-Knoten. Ein virtueller Knoten fungiert als logischer Zeiger auf eine Kubernetes-Bereitstellung.
-
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
virtual-node.yamlauf Ihrem Computer. Die Datei wird verwendet, um einen virtuellen App Mesh-Knoten zu erstellen, derimmy-service-aNamespace benannt ist. Der virtuelle Knoten stellt einen Kubernetes-Service dar, der in einem späteren Schritt erstellt wird. Der Wert fürmy-appshostnameist der vollqualifizierte DNS-Hostname des eigentlichen Services, den dieser virtuelle Knoten darstellt.apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualNode metadata: name:my-service-anamespace:my-appsspec: podSelector: matchLabels: app:my-app-1listeners: - portMapping: port:80protocol:httpserviceDiscovery: dns: hostname:my-service-a.my-apps.svc.cluster.localVirtuelle Knoten verfügen über Funktionen wie end-to-end Verschlüsselung und Integritätsprüfungen, die in diesem Tutorial nicht behandelt werden. Weitere Informationen finden Sie unter Virtuelle Knoten. Führen Sie den folgenden Befehl aus, um alle verfügbaren Einstellungen für einen virtuellen Knoten anzuzeigen, die Sie in der vorherigen Spezifikation festlegen können.
aws appmesh create-virtual-node --generate-cli-skeleton yaml-input -
Stellen Sie den virtuellen Knoten bereit.
kubectl apply -f virtual-node.yaml -
Zeigen Sie die Details der erstellten virtuellen Knotenressource von Kubernetes an.
kubectl describe virtualnodemy-service-a-nmy-appsAusgangs-
Name: my-service-a Namespace: my-apps Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"VirtualNode","metadata":{"annotations":{},"name":"my-service-a","namespace":"my-apps"},"s... API Version: appmesh.k8s.aws/v1beta2 Kind: VirtualNode Metadata: Creation Timestamp: 2020-06-17T14:57:29Z Finalizers: finalizers.appmesh.k8s.aws/aws-appmesh-resources Generation: 2 Resource Version: 22545 Self Link: /apis/appmesh.k8s.aws/v1beta2/namespaces/my-apps/virtualnodes/my-service-a UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Spec: Aws Name: my-service-a_my-apps Listeners: Port Mapping: Port: 80 Protocol: http Mesh Ref: Name: my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Pod Selector: Match Labels: App: nginx Service Discovery: Dns: Hostname: my-service-a.my-apps.svc.cluster.local Status: Conditions: Last Transition Time: 2020-06-17T14:57:29Z Status: True Type: VirtualNodeActive Observed Generation: 2 Virtual Node ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualNode/my-service-a_my-apps Events: <none> -
Zeigen Sie die Details des virtuellen Knotens an, den der Controller in App Mesh erstellt hat.
Anmerkung
Obwohl der Name des in Kubernetes erstellten virtuellen Knotens
lautet, hat der in App Mesh erstellte virtuelle Knoten den Namenmy-service-a. Der Controller hängt den Kubernetes-Namespace-Namen an den Namen des virtuellen App Mesh-Knotens an, wenn er die App Mesh Mesh-Ressource erstellt. Der Namespace-Name wird hinzugefügt, weil Sie in Kubernetes virtuelle Knoten mit demselben Namen in verschiedenen Namespaces erstellen können, aber in App Mesh muss ein virtueller Knotenname innerhalb eines Meshs eindeutig sein.my-service-a_my-appsaws appmesh describe-virtual-node --mesh-namemy-mesh--virtual-node-namemy-service-a_my-appsAusgangs-
{ "virtualNode": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualNode/my-service-a_my-apps", "createdAt": "2020-06-17T09:57:29.840000-05:00", "lastUpdatedAt": "2020-06-17T09:57:29.840000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": { "backends": [], "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "my-service-a.my-apps.svc.cluster.local" } } }, "status": { "status": "ACTIVE" }, "virtualNodeName": "my-service-a_my-apps" } }
-
-
Erstellen Sie einen virtuellen App Mesh Mesh-Router. Virtuelle Router verarbeiten den Datenverkehr für einen oder mehrere virtuelle Services innerhalb Ihres Gitters.
-
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
virtual-router.yamlauf Ihrem Computer. Die Datei wird verwendet, um einen virtuellen Router zu erstellen, der den Datenverkehr an den virtuellen Knotenmy-service-aweiterleitet, der im vorherigen Schritt erstellt wurde. Der Controller erstellt den virtuellen App Mesh Mesh-Router und leitet Ressourcen weiter. Sie können viele weitere Funktionen für Ihre Routen angeben und andere Protokolle alshttpverwenden. Weitere Informationen erhalten Sie unter Virtuelle Router und Routen. Beachten Sie, dass der Name des virtuellen Knotens, auf den verwiesen wird, der Name des virtuellen Kubernetes-Knotens ist, nicht der Name des virtuellen App Mesh-Knotens, der vom Controller in App Mesh erstellt wurde.apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualRouter metadata: namespace:my-appsname:my-service-a-virtual-routerspec: listeners: - portMapping: port:80protocol:httproutes: - name:my-service-a-routehttpRoute: match: prefix:/action: weightedTargets: - virtualNodeRef: name:my-service-aweight:1(Optional) Führen Sie den folgenden Befehl aus, um alle verfügbaren Einstellungen für einen virtuellen Router anzuzeigen, die Sie in der vorherigen Spezifikation festlegen können.
aws appmesh create-virtual-router --generate-cli-skeleton yaml-inputFühren Sie den folgenden Befehl aus, um alle verfügbaren Einstellungen für eine Route anzuzeigen, die Sie in der vorherigen Spezifikation festlegen können.
aws appmesh create-route --generate-cli-skeleton yaml-input -
Stellen Sie den virtuellen Router bereit.
kubectl apply -f virtual-router.yaml -
Zeigen Sie die virtuelle Routerressource von Kubernetes an, die erstellt wurde.
kubectl describe virtualroutermy-service-a-virtual-router-nmy-appsGekürzte Ausgabe
Name: my-service-a-virtual-router Namespace: my-apps Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"VirtualRouter","metadata":{"annotations":{},"name":"my-service-a-virtual-router","namespac... API Version: appmesh.k8s.aws/v1beta2 Kind: VirtualRouter ... Spec: Aws Name: my-service-a-virtual-router_my-apps Listeners: Port Mapping: Port: 80 Protocol: http Mesh Ref: Name: my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Routes: Http Route: Action: Weighted Targets: Virtual Node Ref: Name: my-service-a Weight: 1 Match: Prefix: / Name: my-service-a-route Status: Conditions: Last Transition Time: 2020-06-17T15:14:01Z Status: True Type: VirtualRouterActive Observed Generation: 1 Route AR Ns: My - Service - A - Route: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-apps/route/my-service-a-route Virtual Router ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-apps Events: <none> -
Zeigen Sie die virtuelle Router-Ressource an, die der Controller in App Mesh erstellt hat. Sie geben
my-service-a-virtual-router_my-appsfür anname, weil der Controller, als er den virtuellen Router in App Mesh erstellt hat, den Kubernetes-Namespace-Namen an den Namen des virtuellen Routers angehängt hat.aws appmesh describe-virtual-router --virtual-router-namemy-service-a-virtual-router_my-apps--mesh-namemy-meshAusgangs-
{ "virtualRouter": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-apps", "createdAt": "2020-06-17T10:14:01.547000-05:00", "lastUpdatedAt": "2020-06-17T10:14:01.547000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ] }, "status": { "status": "ACTIVE" }, "virtualRouterName": "my-service-a-virtual-router_my-apps" } } -
Zeigen Sie die Routenressource an, die der Controller in App Mesh erstellt hat. Eine Routenressource wurde in Kubernetes nicht erstellt, da die Route Teil der Konfiguration des virtuellen Routers in Kubernetes ist. Die Routeninformationen wurden in den Kubernetes-Ressourcendetails im Teilschritt
cangezeigt. Der Controller hat den Kubernetes-Namespace-Namen nicht an den App Mesh-Routennamen angehängt, als er die Route in App Mesh erstellt hat, da Routennamen für einen virtuellen Router eindeutig sind.aws appmeshdescribe-route\ --route-namemy-service-a-route\ --virtual-router-namemy-service-a-virtual-router_my-apps\ --mesh-namemy-meshAusgangs-
{ "route": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-apps/route/my-service-a-route", "createdAt": "2020-06-17T10:14:01.577000-05:00", "lastUpdatedAt": "2020-06-17T10:14:01.577000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "routeName": "my-service-a-route", "spec": { "httpRoute": { "action": { "weightedTargets": [ { "virtualNode": "my-service-a_my-apps", "weight": 1 } ] }, "match": { "prefix": "/" } } }, "status": { "status": "ACTIVE" }, "virtualRouterName": "my-service-a-virtual-router_my-apps" } }
-
-
Erstellen Sie einen virtuellen App Mesh Mesh-Dienst. Bei einem virtuellen Service handelt es sich um eine Abstraktion eines echten Service, der von einem virtuellen Knoten direkt oder indirekt mittels eines virtuellen Routers bereitgestellt wird. Abhängige Services rufen Ihren virtuellen Service über den Namen auf. Obwohl der Name für App Mesh keine Rolle spielt, empfehlen wir, dem virtuellen Dienst den vollqualifizierten Domainnamen des tatsächlichen Dienstes zu geben, den der virtuelle Dienst darstellt. Wenn Sie Ihre virtuellen Services auf diese Weise benennen, müssen Sie Ihren Anwendungscode nicht ändern, um auf einen anderen Namen zu verweisen. Die Anforderungen werden an den virtuellen Knoten oder virtuellen Router weitergeleitet, der als Anbieter für den virtuellen Service angegeben ist.
-
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
virtual-service.yamlauf Ihrem Computer. Die Datei wird verwendet, um einen virtuellen Dienst zu erstellen, der einen virtuellen Router-Anbieter verwendet, um den Datenverkehr an den virtuellen Knoten weiterzuleitenmy-service-a, der in einem vorherigen Schritt erstellt wurde. Der Wert fürawsNamein derspecist der vollqualifizierte Domänenname (FQDN) des tatsächlichen Kubernetes-Services, den dieser virtuelle Service abstrahiert. Der Kubernetes-Service wird in Schritt 3: Erstellen oder Aktualisieren von Services erstellt. Weitere Informationen finden Sie unter Virtuelle Dienste.apiVersion: appmesh.k8s.aws/v1beta2 kind: VirtualService metadata: name:my-service-anamespace:my-appsspec: awsName:my-service-a.my-apps.svc.cluster.localprovider: virtualRouter: virtualRouterRef: name:my-service-a-virtual-routerFühren Sie den folgenden Befehl aus, um alle verfügbaren Einstellungen für einen virtuellen Service anzuzeigen, die Sie in der vorherigen Spezifikation festlegen können.
aws appmesh create-virtual-service --generate-cli-skeleton yaml-input -
Erstellen Sie den virtuellen Service.
kubectl apply -f virtual-service.yaml -
Zeigen Sie die Details der virtuellen Serviceressource von Kubernetes an, die erstellt wurde.
kubectl describe virtualservicemy-service-a-nmy-appsAusgangs-
Name: my-service-a Namespace: my-apps Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"VirtualService","metadata":{"annotations":{},"name":"my-service-a","namespace":"my-apps"}... API Version: appmesh.k8s.aws/v1beta2 Kind: VirtualService Metadata: Creation Timestamp: 2020-06-17T15:48:40Z Finalizers: finalizers.appmesh.k8s.aws/aws-appmesh-resources Generation: 1 Resource Version: 13598 Self Link: /apis/appmesh.k8s.aws/v1beta2/namespaces/my-apps/virtualservices/my-service-a UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Spec: Aws Name: my-service-a.my-apps.svc.cluster.local Mesh Ref: Name: my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Provider: Virtual Router: Virtual Router Ref: Name: my-service-a-virtual-router Status: Conditions: Last Transition Time: 2020-06-17T15:48:40Z Status: True Type: VirtualServiceActive Observed Generation: 1 Virtual Service ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualService/my-service-a.my-apps.svc.cluster.local Events: <none> -
Zeigen Sie die Details der virtuellen Dienstressource an, die der Controller in App Mesh erstellt hat. Der Kubernetes-Controller hat den Kubernetes-Namespace-Namen nicht an den Namen des virtuellen App Mesh-Dienstes angehängt, als er den virtuellen Dienst in App Mesh erstellt hat, da der Name des virtuellen Dienstes ein eindeutiger FQDN ist.
aws appmesh describe-virtual-service --virtual-service-namemy-service-a.my-apps.svc.cluster.local--mesh-namemy-meshAusgangs-
{ "virtualService": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualService/my-service-a.my-apps.svc.cluster.local", "createdAt": "2020-06-17T10:48:40.182000-05:00", "lastUpdatedAt": "2020-06-17T10:48:40.182000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": { "provider": { "virtualRouter": { "virtualRouterName": "my-service-a-virtual-router_my-apps" } } }, "status": { "status": "ACTIVE" }, "virtualServiceName": "my-service-a.my-apps.svc.cluster.local" } }
-
Obwohl in diesem Tutorial nicht behandelt, kann der Controller auch App Mesh Virtuelle Gateways und bereitstellenGateway-Routen. Eine exemplarische Vorgehensweise zur Bereitstellung dieser Ressourcen mit dem Controller finden Sie unter Konfiguration des Inbound-Gateways
Schritt 3: Erstellen oder Aktualisieren von Services
Allen Pods, die Sie mit App Mesh verwenden möchten, müssen die App Mesh-Sidecar-Container hinzugefügt werden. Der Injektor fügt die Sidecar-Container automatisch jedem Pod hinzu, der mit einer von Ihnen angegebenen Beschriftung bereitgestellt wird.
-
Proxy-Autorisierung aktivieren. Wir empfehlen, dass Sie für jede Kubernetes-Bereitstellung nur die Konfiguration für ihren eigenen virtuellen App Mesh-Knoten streamen.
-
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
proxy-auth.jsonauf Ihrem Computer. Stellen Sie sicher, dass Sie den durch Ihrenalternate-colored valueseigenen ersetzen. -
Erstellen Sie die Richtlinie.
aws iam create-policy --policy-namemy-policy--policy-document file://proxy-auth.json -
Erstellen Sie eine IAM-Rolle, fügen Sie ihr die im vorherigen Schritt erstellte Richtlinie hinzu, erstellen Sie ein Kubernetes-Dienstkonto und binden Sie die Richtlinie an das Kubernetes-Dienstkonto. Die Rolle ermöglicht es dem Controller, App Mesh-Ressourcen hinzuzufügen, zu entfernen und zu ändern.
eksctl create iamserviceaccount \ --cluster $CLUSTER_NAME \ --namespacemy-apps\ --namemy-service-a\ --attach-policy-arn arn:aws:iam::111122223333:policy/my-policy\ --override-existing-serviceaccounts \ --approveWenn Sie das Servicekonto lieber mit dem AWS Management Console oder erstellen möchten AWS CLI, finden Sie weitere Informationen unter Erstellen einer IAM-Rolle und -Richtlinie für Ihr Servicekonto im Amazon EKS-Benutzerhandbuch. Wenn Sie das AWS Management Console oder verwenden, AWS CLI um das Konto zu erstellen, müssen Sie die Rolle auch einem Kubernetes-Servicekonto zuordnen. Weitere Informationen finden Sie unter Angeben einer IAM-Rolle für Ihr Servicekonto im Amazon EKS-Benutzerhandbuch.
-
-
(Optional) Wenn Sie Ihre Bereitstellung auf Fargate-Pods bereitstellen möchten, müssen Sie ein Fargate-Profil erstellen. Wenn Sie es noch nicht
eksctlinstalliert haben, können Sie es mithilfe der Anweisungen unter Installation oder Upgradeeksctlim Amazon EKS-Benutzerhandbuch installieren. Wenn Sie das Profil lieber mit der Konsole erstellen möchten, finden Sie weitere Informationen unter Erstellen eines Fargate-Profils im Amazon EKS-Benutzerhandbuch.eksctl create fargateprofile --clustermy-cluster--regionRegion-code--namemy-service-a--namespacemy-apps -
Erstellen Sie einen Kubernetes-Service und eine entsprechende Bereitstellung. Wenn Sie über eine bestehende Bereitstellung verfügen, die Sie mit App Mesh verwenden möchten, müssen Sie einen virtuellen Knoten bereitstellen, wie Sie es im Unterschritt
3von Schritt 2: App Mesh Mesh-Ressourcen bereitstellen getan haben. Aktualisieren Sie Ihre Bereitstellung, um sicherzustellen, dass ihr Label mit dem Label übereinstimmt, das Sie für den virtuellen Knoten festgelegt haben, sodass die Sidecar-Container automatisch zu den Pods hinzugefügt und die Pods erneut bereitgestellt werden.-
Speichern Sie den folgenden Inhalt in einer Datei mit dem Namen
example-service.yamlauf Ihrem Computer. Wenn Sie den Namespace-Namen ändern und Fargate-Pods verwenden, stellen Sie sicher, dass der Namespace-Name mit dem Namespace-Namen übereinstimmt, den Sie in Ihrem Fargate-Profil definiert haben.apiVersion: v1 kind: Service metadata: name:my-service-anamespace:my-appslabels: app:my-app-1spec: selector: app:my-app-1ports: - protocol:TCPport:80targetPort:80--- apiVersion: apps/v1 kind: Deployment metadata: name:my-service-anamespace:my-appslabels: app:my-app-1spec: replicas:3selector: matchLabels: app:my-app-1template: metadata: labels: app:my-app-1spec: serviceAccountName:my-service-acontainers: - name:nginximage:nginx:1.19.0ports: - containerPort:80Wichtig
Der Wert für die
appmatchLabelsselectorin der Spezifikation muss mit dem Wert übereinstimmen, den Sie beim Erstellen des virtuellen Knotens im Teilschritt3von Schritt 2: App Mesh Mesh-Ressourcen bereitstellen angegeben haben, anderenfalls werden die Sidecar-Container nicht in den Pod injiziert. Im vorherigen Beispiel lautet der Wert für die Beschriftungmy-app-1. Wenn Sie ein virtuelles Gateway anstelle eines virtuellen Knotens bereitstellen, sollte dasDeploymentManifest nur den Envoy-Container enthalten. Weitere Informationen zu dem zu verwendenden Image finden Sie unterBild des Gesandten. Ein Beispiel für ein Manifest finden Sie im Bereitstellungsbeispielunter GitHub. -
Bereitstellen des Services.
kubectl apply -fexample-service.yaml -
Zeigen Sie den Service und die Bereitstellung an.
kubectl -nmy-appsget podsAusgangs-
NAME READY STATUS RESTARTS AGE my-service-a-54776556f6-2cxd9 2/2 Running 0 10s my-service-a-54776556f6-w26kf 2/2 Running 0 18s my-service-a-54776556f6-zw5kt 2/2 Running 0 26s -
Zeigen Sie die Details zu einem der bereitgestellten Pods an.
kubectl -nmy-appsdescribe podmy-service-a-54776556f6-2cxd9Gekürzte Ausgabe
Name: my-service-a-54776556f6-2cxd9 Namespace: my-app-1 Priority: 0 Node: ip-192-168-44-157.us-west-2.compute.internal/192.168.44.157 Start Time: Wed, 17 Jun 2020 11:08:59 -0500 Labels: app=nginx pod-template-hash=54776556f6 Annotations: kubernetes.io/psp: eks.privileged Status: Running IP: 192.168.57.134 IPs: IP: 192.168.57.134 Controlled By: ReplicaSet/my-service-a-54776556f6 Init Containers: proxyinit: Container ID: docker://e0c4810d584c21ae0cb6e40f6119d2508f029094d0e01c9411c6cf2a32d77a59 Image: 111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager:v2 Image ID: docker-pullable://111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager Port: <none> Host Port: <none> State: Terminated Reason: Completed Exit Code: 0 Started: Fri, 26 Jun 2020 08:36:22 -0500 Finished: Fri, 26 Jun 2020 08:36:22 -0500 Ready: True Restart Count: 0 Requests: cpu: 10m memory: 32Mi Environment: APPMESH_START_ENABLED: 1 APPMESH_IGNORE_UID: 1337 APPMESH_ENVOY_INGRESS_PORT: 15000 APPMESH_ENVOY_EGRESS_PORT: 15001 APPMESH_APP_PORTS: 80 APPMESH_EGRESS_IGNORED_IP: 169.254.169.254 APPMESH_EGRESS_IGNORED_PORTS: 22 AWS_ROLE_ARN: arn:aws:iam::111122223333:role/eksctl-app-mesh-addon-iamserviceaccount-my-a-Role1-NMNCVWB6PL0N AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token ... Containers: nginx: Container ID: docker://be6359dc6ecd3f18a1c87df7b57c2093e1f9db17d5b3a77f22585ce3bcab137a Image: nginx:1.19.0 Image ID: docker-pullable://nginx Port: 80/TCP Host Port: 0/TCP State: Running Started: Fri, 26 Jun 2020 08:36:28 -0500 Ready: True Restart Count: 0 Environment: AWS_ROLE_ARN: arn:aws:iam::111122223333:role/eksctl-app-mesh-addon-iamserviceaccount-my-a-Role1-NMNCVWB6PL0N AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token ... envoy: Container ID: docker://905b55cbf33ef3b3debc51cb448401d24e2e7c2dbfc6a9754a2c49dd55a216b6 Image: 840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.12.4.0-prod Image ID: docker-pullable://840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy Port: 9901/TCP Host Port: 0/TCP State: Running Started: Fri, 26 Jun 2020 08:36:36 -0500 Ready: True Restart Count: 0 Requests: cpu: 10m memory: 32Mi Environment: APPMESH_RESOURCE_ARN: arn:aws:iam::111122223333:mesh/my-mesh/virtualNode/my-service-a_my-apps APPMESH_PREVIEW: 0 ENVOY_LOG_LEVEL: info AWS_REGION: us-west-2 AWS_ROLE_ARN: arn:aws:iam::111122223333:role/eksctl-app-mesh-addon-iamserviceaccount-my-a-Role1-NMNCVWB6PL0N AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Pulling 30s kubelet, ip-192-168-44-157.us-west-2.compute.internal Pulling image "111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager:v2" Normal Pulled 23s kubelet, ip-192-168-44-157.us-west-2.compute.internal Successfully pulled image "111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager:v2" Normal Created 21s kubelet, ip-192-168-44-157.us-west-2.compute.internal Created container proxyinit Normal Started 21s kubelet, ip-192-168-44-157.us-west-2.compute.internal Started container proxyinit Normal Pulling 20s kubelet, ip-192-168-44-157.us-west-2.compute.internal Pulling image "nginx:1.19.0" Normal Pulled 16s kubelet, ip-192-168-44-157.us-west-2.compute.internal Successfully pulled image "nginx:1.19.0" Normal Created 15s kubelet, ip-192-168-44-157.us-west-2.compute.internal Created container nginx Normal Started 15s kubelet, ip-192-168-44-157.us-west-2.compute.internal Started container nginx Normal Pulling 15s kubelet, ip-192-168-44-157.us-west-2.compute.internal Pulling image "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.12.4.0-prod" Normal Pulled 8s kubelet, ip-192-168-44-157.us-west-2.compute.internal Successfully pulled image "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.12.4.0-prod" Normal Created 7s kubelet, ip-192-168-44-157.us-west-2.compute.internal Created container envoy Normal Started 7s kubelet, ip-192-168-44-157.us-west-2.compute.internal Started container envoyIn der vorherigen Ausgabe können Sie sehen, dass die Container
proxyinitundenvoyvom Controller dem Pod hinzugefügt wurden. Wenn Sie den Beispieldienst in Fargate bereitgestellt haben, wurde derenvoyContainer vom Controller zum Pod hinzugefügt, derproxyinitContainer jedoch nicht.
-
-
(Optional) Installieren Sie Add-Ons wie Prometheus, Grafana AWS X-Ray, Jaeger und Datadog. Weitere Informationen finden Sie unter App Mesh-Add-Ons
auf GitHub und im Abschnitt Observability im App Mesh Mesh-Benutzerhandbuch.
Anmerkung
Weitere Beispiele und Komplettlösungen für App Mesh finden Sie im App Mesh Mesh-Beispiel-Repository
Schritt 4: Bereinigen
Entfernen Sie alle Beispielressourcen, die in diesem Tutorial erstellt wurden. Der Controller entfernt auch die Ressourcen, die im my-mesh App Mesh Service Mesh erstellt wurden.
kubectl delete namespacemy-apps
Wenn Sie ein Fargate-Profil für den Beispieldienst erstellt haben, entfernen Sie es.
eksctl delete fargateprofile --namemy-service-a--clustermy-cluster--regionRegion-code
Löschen Sie das Mesh.
kubectl delete meshmy-mesh
(Optional) Sie können die Kubernetes-Integrationskomponenten entfernen.
helm delete appmesh-controller -n appmesh-system
(Optional) Wenn Sie die Kubernetes-Integrationskomponenten in Fargate bereitgestellt haben, löschen Sie das Fargate-Profil.
eksctl delete fargateprofile --nameappmesh-system--clustermy-cluster--regionRegion-code