A Kubernetes controller that provides discovery service for Istio mesh federation.
Mesh federation allows exposing services between meshes and enabling communication across mesh boundaries. Each mesh may expose a subset of its services to allow other meshes to connect to the exposed services.
Controllers utilize XDS protocol to discover exported services in federated meshes. Controllers are deployed with sidecars, so cross-cluster connections between controllers are secured with Istio mTLS.
In this deployment model, independent meshes deployed in different clusters can connect services without configuring access to the k8s api-server in remote clusters. This allows to achieve multi-cluster connectivity for meshes managed by different teams in different clusters.
- Go 1.22+
- protoc 3.19.0+
- protoc-gen-go v1.30.0+
- protoc-get-golang-deepcopy
- Compile controller:
make
- Run unit tests:
make test
- Build image:
HUB=quay.io/maistra-dev TAG=test make docker-build
- Push image:
HUB=quay.io/maistra-dev TAG=test make docker-push
- Run e2e tests:
make e2e
- Run e2e tests with specific Istio version and custom controller image:
HUB=quay.io/maistra-dev TAG=test ISTIO_VERSION=1.23.0 make e2e
- Run specific test suites:
TEST_SUITES="spire" make e2e
- Customize federation controller image used in tests (
TAG
is ignored ifUSE_LOCAL_IMAGE=true
or not set):USE_LOCAL_IMAGE=false HUB=quay.io/maistra-dev TAG=0.1 make e2e