Kanonischen Dienst definieren
Hinweis: Kanonische Dienste werden in der Cloud Service Mesh-Version 1.6.8 und höher automatisch unterstützt.
Kanonische Dienste sind eine Gruppe von Arbeitslasten, die dieselben Dienste und APIs implementieren. Für unterstützte Arbeitslasttypen erstellt Cloud Service Mesh automatisch kanonische Dienste anhand der im Kubernetes API-Server vorhandenen Informationen. Auf dieser Seite wird beschrieben, mit welchen Labels kanonische Dienste automatisch definiert werden und wie Sie den Umfang Ihrer Dienste manuell anpassen können.
Die unterstützten Instanztypen für Arbeitslasten sind:
- Kubernetes-Pods (auch über Kubernetes-Bereitstellungen, Kube Run Services usw.)
- Mesh-externe Dienste (insbesondere „ServiceEntry“-Ressourcen mit dem Standort
MESH_EXTERNAL)
Definition von kanonischen Diensten
Cloud Service Mesh ermittelt die Mitgliedschaft kanonischer Dienste anhand des Labels service.istio.io/canonical-name der Kubernetes-Konfigurationsressource, die mit jeder Arbeitslastinstanz verknüpft ist:
- Bei Pods befindet sich das Label in der Kubernetes Pod-Ressource.
- Bei externen Diensten befindet sich das Label in der Istio ServiceEntry-Ressource
Kanonische Dienste verwenden denselben Kubernetes-Namespace wie die verknüpften Arbeitslastinstanzen und können sich nicht über mehrere Namespaces erstrecken.
Regeln für automatische Labels
Cloud Service Mesh gruppiert Ihre Arbeitslasten automatisch in kanonische Dienste, ohne dass Sie etwas unternehmen müssen. Sie müssen lediglich Folgendes tun:
- Labels zur besseren Verständlichkeit für Nutzer oder Leser anpassen
- Das Standardverhalten überschreiben
Automatische Label in Kubernetes-Pods
Kanonische Dienste konzentrieren sich auf die Kubernetes-Label app.kubernetes.io/name und app. Dabei hat das erste Label Vorrang.
Wenn Sie eines dieser beiden Label für Ihre Arbeitslasten verwenden, ist keine weitere Maßnahme erforderlich.
Manuelle Label
Wenn Sie für einen kanonischen Dienst ein Label manuell anwenden oder überschreiben möchten, wenden Sie das Label service.istio.io/canonical-name auf unterstützte Arbeitslastressourcen-Konfigurationen an.
Damit ein externer Dienst als kanonischer Dienst erkannt wird, müssen Sie zum entsprechenden „ServiceEntry“ manuell ein Label hinzufügen.
Manuelle Label in Kubernetes-Pods
Wenn Sie mit einer Bereitstellung mehrere Pods gleichzeitig bereitstellen möchten, geben Sie in der „PodTemplateSpec“ das Label service.istio.io/canonical-name an:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
spec:
replicas: 3
template:
metadata:
labels:
service.istio.io/canonical-name: my-service
spec:
containers:
...
Wenn Sie dem kanonischen Dienst eines einzelnen Pods ein Label hinzufügen möchten, fügen Sie das Label service.istio.io/canonical-name dem Abschnitt labels Ihrer Pod-Konfiguration hinzu:
apiVersion: v1
kind: Pod
metadata:
name: my-test-pod
namespace: my-namespace
labels:
service.istio.io/canonical-name: my-service
spec:
...
Manuelle Label für externe Dienste
Wenn Sie dem kanonischen Dienst eines einzelnen externen Dienstes/„ServiceEntry“ ein Label hinzufügen möchten, fügen Sie das Label service.istio.io/canonical-name dem Abschnitt „labels“ Ihrer „ServiceEntry“-Konfiguration hinzu.
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: example-com
namespace: my-namespace
labels:
service.istio.io/canonical-name: an-external-service
spec:
location: MESH_EXTERNAL
...