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
* deploy HelmRelease for external-dns
* finish cluster controller implementation
* actually start cluster controller
* reconcile clusters if external-dns config changes (requires controller-utils update)
* remove label selector from DNSServiceConfig
The label selector is incompatible with the current implementation that loads the config
on-demand during each reconciliation.
We would either need to load it once during startup, which would mean that the controller
needs to be restarted for changes to take effect,
or we would need a more complicated setup with an own controller for the config.
Since clusters can already be filtered by their purposes, there is probably no need for
a label selector anyway, at least not for now.
* fix bugs and add first unit tests
* add more unit tests
* remove library function which should not be used in this context
* fix linting issues
* fix helm release
* fix controller commands
* fix DNSServiceConfig being cluster-scoped
* enable copying any amount of secrets
* implement helm values replace feature
* make purposeSelector behavior more consistent
* add documentation
* bump build submodule
* implement review feedback
Copy file name to clipboardExpand all lines: README.md
+23-2Lines changed: 23 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,32 @@
4
4
5
5
## About this project
6
6
7
-
Platform Service DNS discovers endpoints of remote services
7
+
PlatformService DNS is a `PlatformService` as described in [the OpenMCP Architecture Docs](https://github.com/openmcp-project/docs/blob/main/architecture/general/open-mcp-landscape-overview.md).
8
+
9
+
It is a k8s controller that reconciles `Cluster` resources (from our [Cluster API](https://github.com/openmcp-project/docs/blob/main/adrs/cluster-api.md)) and deploys the [external-dns](https://github.com/kubernetes-sigs/external-dns) operator with a configuration depending on the `Cluster`'s purpose(s). The main goal of the service is to help setting up cross-cluster DNS routing for dynamically managed clusters, especially to enable `ValidatingWebhookConfiguration` resources pointing to webhooks served on other clusters.
8
10
9
11
## Requirements and Setup
10
12
11
-
*Insert a short description what is required to get your project running...*
13
+
In combination with the [openMCP Operator](https://github.com/openmcp-project/openmcp-operator), this controller can be deployed via a simple k8s resource:
go run ./cmd/platform-service-dns/main.go init --environment default --provider-name dns --kubeconfig path/to/kubeconfig
26
+
```
27
+
to deploy the CRDs that are required for the controller and then
28
+
```shell
29
+
go run ./cmd/platform-service-dns/main.go run --environment default --provider-name dns --kubeconfig path/to/kubeconfig
30
+
```
31
+
32
+
Note that a `DNSServiceConfig` resources is required for the platform service. See the [documentation](docs/README.md) for further details regarding resources and configuration.
description: ExternalDNSSource is the source of the external-dns helm
90
100
chart.
91
101
properties:
92
-
copyAuthSecret:
102
+
chartName:
93
103
description: |-
94
-
SecretCopy defines the name of the secret to copy and the name of the copied secret.
95
-
If target is nil or target.name is empty, the secret will be copied with the same name as the source secret.
96
-
properties:
97
-
source:
98
-
description: ObjectReference is a reference to an object in
99
-
any namespace.
100
-
properties:
101
-
name:
102
-
description: Name is the name of the object.
103
-
type: string
104
-
namespace:
105
-
description: Namespace is the namespace of the object.
106
-
type: string
107
-
required:
108
-
- name
109
-
- namespace
110
-
type: object
111
-
target:
112
-
description: ObjectReference is a reference to an object in
113
-
any namespace.
114
-
properties:
115
-
name:
116
-
description: Name is the name of the object.
117
-
type: string
118
-
namespace:
119
-
description: Namespace is the namespace of the object.
120
-
type: string
121
-
required:
122
-
- name
123
-
- namespace
124
-
type: object
125
-
required:
126
-
- source
127
-
- target
128
-
type: object
104
+
ChartName specifies the name of the external-dns chart.
105
+
Depending on the source, this can also be a relative path within the repository.
106
+
When using a source that needs a version (helm or oci), append the version to the chart name using '@', e.g. '[email protected]' or omit for latest version.
107
+
minLength: 1
108
+
type: string
129
109
git:
130
110
description: |-
131
111
GitRepositorySpec specifies the required configuration to produce an
@@ -648,59 +628,63 @@ spec:
648
628
- interval
649
629
- url
650
630
type: object
631
+
required:
632
+
- chartName
651
633
type: object
652
634
x-kubernetes-validations:
653
-
- message: Exactly one of 'helm', 'git', or 'oci' must be set
0 commit comments