Admiral provides automatic configuration and service discovery for multicluster Istio service mesh
Istio has a very robust set of multi-cluster capabilities. Managing this configuration across multiple clusters at scale is challenging. Admiral takes an opinionated view on this configuration and provides automatic provisioning and syncing across clusters.
Admiral defines two custom resources, the Dependency and GlobalTrafficPolicy, which are used to configure ServiceEntries, VirtualServices, and DestinationRules on each cluster for each cross-cluster service. This removes the complexity for developers and mesh operators.
Organizations below are officially using Admiral. Please send a PR with your organization name if you are using Admiral.
-
Multicluster Istio configuration and service discovery using Admiral
-
Stitching a Service Mesh Across Hundreds of Discrete Networks
-
Scaling Service Mesh to an Enterprise Microservices Ecosystem
Note:
This channel is under Istio slack org, please fill out this form to get access to Istio slack.
Refer to Local Development Setup
Refer to Contributing doc
Details can be found here
SE - Istio ServiceEntry
VS - Istio VirtualService
K8s API - Kubernetes API Server
GTP - Admiral GlobalTrafficPolicy
sequenceDiagram
autonumber 1
Service/VirtualService Handler->>+Rollout/Deployment Handler: Add/Update/Delete events
autonumber 1
GTP/OutlierDetection Handler->>Update All Resources: Add/Update
autonumber 1
DependencyRecord Handler->>Update All Resources: Add/Update
autonumber 1
Rollout/Deployment Handler->>Update All Resources: Add/Update
autonumber 2
Update All Resources->>RemoteControllers: Fetch All Cluster Controllers
rect rgb(255, 255, 220)
loop
Update All Resources->>K8sAPI 1..N: For each cluster, get corresponding service object
K8sAPI 1..N-->>Update All Resources: Continue if service does not exist for deployment/rollout
K8sAPI 1..N-->>Update All Resources: Build list of source services
end
end
rect rgb(255, 255, 220)
loop
Update All Resources->>K8sAPI 1..N: Derive SE from each service in the list
Update All Resources->>GTP/OutlierDetection Cache: Derive DR from GTP/OutlierDetection
rect rgb(204, 255, 204)
loop
Update All Resources->>K8sAPI 1..N: Add/Update SE/DR/VS in source clusters
Update All Resources->>DynamoDB: Add/Update WorkloadData for source clusters
end
end
end
end
Update All Resources->>DependencyCache: Fetch dependent clusters
rect rgb(204, 255, 204)
loop
Update All Resources->>K8sAPI 1..N: Add/Update SE/DR/VS in dependent clusters
Update All Resources->>DynamoDB: Add/Update WorkloadData for dependent clusters
end
end