You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR implements the Service Sync feature. The purpose of this feature
is to facilitate exposing a service in one cluster to other clusters,
using Cilium Global Services.
It implements all the behaviors described in
[docs/service-sync.md](https://github.com/powerhome/keess/blob/main/docs/service-sync.md).
In a high level overview, this PR
- Implements service sync create and update flows
- Refactors package structure, moving service sync to a subpackage and
renaming main package
- Implements service orphan handling
It does not implement managed namespace deletion, that is left for
another version.
## Notes about the code
- I did an extensive work on the Go E2E tests, trying my best to make
them correct, readable, and covering most if not all from Service Sync
functionality.
- Now for the unit tests (the new ones, for service), they are mostly
the exact thing generated by AI. Quite incomplete, not so good quality,
but don't seem to be harmful either. So I left them there, but I think
we should move on with this and not wait for me to improve them now.
- I placed a few TODO notes on places I believe to be good spots for
unit tests, but left that for the future.
## How this was tested
This code is passing tests-e2e (new) and tests-python-e2e (old).
Together those are covering most functionality of the operator (both
namespace sync and cluster sync).
## How to run tests
```shell
# Create the clusters
make setup-local-clusters-with-keess
# Run tests
make tests
make tests-e2e
make tests-python-e2e
# or run make tests-all
```
---------
Co-authored-by: Copilot <[email protected]>
# Keess: Kubernetes Secrets, ConfigMaps, and Services Synchronization
3
3
4
-
Keess (Keep Stuff Synchronized) is a versatile command-line tool designed to synchronize secretsand configmaps across different namespaces and Kubernetes clusters. Built with simplicity and efficiency in mind, it ensures that your Kubernetes environments are consistently updated, secure, and easy to manage.
4
+
Keess (Keep Stuff Synchronized) is a versatile command-line tool designed to synchronize secrets, configmaps, and services across different namespaces and Kubernetes clusters. Built with simplicity and efficiency in mind, it ensures that your Kubernetes environments are consistently updated, secure, and easy to manage.
5
5
6
6
## Features
7
7
8
-
-**Cross-Namespace Synchronization**: Effortlessly sync secretsand configmaps across multiple namespaces within a single Kubernetes cluster.
8
+
-**Cross-Namespace Synchronization**: Effortlessly sync secrets, configmaps, and services across multiple namespaces within a single Kubernetes cluster.
9
9
-**Inter-Cluster Synchronization**: Extend your synchronization capabilities to multiple clusters, keeping your configurations consistent across different environments.
10
+
-**Service Synchronization**: Sync services across clusters using Cilium Global Services, enabling seamless cross-cluster service access.
10
11
-**Secure and Reliable**: Implements robust mechanisms to securely transfer sensitive information, ensuring data integrity and confidentiality.
11
12
-**Automation**: Automates the synchronization process, reducing manual overhead and minimizing human error.
12
13
-**Customizable**: Offers flexible command line options and Kubernetes annotations to tailor the synchronization process to your specific needs.
@@ -67,6 +68,50 @@ Configure which namespaces to synchronize with:
67
68
68
69
Specify the remote clusters for synchronization: `keess.powerhrg.com/clusters: clustera, clusterb`
69
70
71
+
#### Service Synchronization
72
+
73
+
Keess supports synchronizing services across clusters using Cilium Global Services. This feature enables applications in one cluster to access services in another cluster as if they were local.
74
+
75
+
**Prerequisites:**
76
+
- Cilium CNI with ClusterMesh enabled on all participating clusters
77
+
- Services must have the `service.cilium.io/global: "true"` annotation
78
+
79
+
**Configuration:**
80
+
1. Add the sync label to your service: `keess.powerhrg.com/sync: cluster`
81
+
2. Add the clusters annotation: `keess.powerhrg.com/clusters: clustera, clusterb`
82
+
3. Ensure the service has the Cilium global annotation: `service.cilium.io/global: "true"`
0 commit comments