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
Admiral Slack Channel - Note:
This channel is under Istio slack org, please fill out this form to get access to Istio slack.
Refer to Contributing doc
Details can be found here
sequenceDiagram
autonumber 1
Service/VirtualService Handler->>+Rollout/Deployment Handler: Add/Update/Delete events
loop
autonumber 1
GTP Handler->>GTP Handler: Add/Update/Delete events
end
autonumber 1
GTP Handler ->> ServiceEntry Handler: Add/Update
loop
autonumber 1
Rollout/Deployment Handler->>Rollout/Deployment Handler: Add/Delete events of rollout/deployment
end
autonumber 1
Rollout/Deployment Handler->>ServiceEntry Handler: Add/Update
autonumber 2
ServiceEntry Handler->>RemoteControllers: Fetch All Cluster Controllers
rect rgb(255, 255, 220)
loop
ServiceEntry Handler->>K8sAPI 1..N: For each cluster, get corresponding service object
K8sAPI 1..N-->>ServiceEntry Handler: Continue if service does not exist for deployment/rollout
K8sAPI 1..N-->>ServiceEntry Handler: Build list of source services
end
end
rect rgb(255, 255, 220)
loop
ServiceEntry Handler->>K8sAPI 1..N: Derive SE from each service in the list
ServiceEntry Handler->>GTP Cache: Derive DR from GTP
rect rgb(204, 255, 204)
loop
ServiceEntry Handler->>K8sAPI 1..N: Add/Update SE/DR in source clusters
end
end
end
end
ServiceEntry Handler->>DependencyCache: Fetch dependent clusters
rect rgb(204, 255, 204)
loop
ServiceEntry Handler->>K8sAPI 1..N: Add/Update SE/DR in dependent clusters
end
end