17 Commits
Author SHA1 Message Date
Tesshu Flower 63632d11a7 🐛 Apply TLS profile to operator and agent serving endpoints (#1639)
* 🐛 Apply TLS profile to spoke agent serving endpoints

The spoke agent binaries (klusterlet-agent, registration-agent, work-agent)
receive --tls-min-version and --tls-cipher-suites flags from the klusterlet
operator via deployment template rendering, but do not wire them to their own
library-go GenericAPIServer serving endpoint on port 8443.

Add ApplyTLSToCommand to all three spoke agent command constructors
(NewKlusterletAgentCmd, NewRegistrationAgent, NewWorkAgent) so the TLS flags
are consumed by the PersistentPreRunE hook and applied to the serving config.

This matches the pattern already used by all hub component commands
(registration-controller, placement, work, addon-manager, grpc-server).

Signed-off-by: Tesshu Flower <tflower@redhat.com>

* 🐛 Apply TLS profile to operator serving endpoints via ConfigMap

The cluster-manager operator (hub) and klusterlet operator (spoke) serve a
health/metrics endpoint on port 8443 via library-go's GenericAPIServer. Unlike
the hub controllers and spoke agents they manage, these operator binaries do not
receive --tls-min-version and --tls-cipher-suites flags from their deployment
manifests -- no external component injects those flags into the operator pods.

Instead, the operators have direct access to the ocm-tls-profile ConfigMap in
their namespace at startup:
- The cluster-manager operator reads it in RunClusterManagerOperator via
  StartTLSConfigMapWatcher and calls os.Exit(0) on changes to restart.
- The klusterlet operator has a tls-profile-sync sidecar that writes the
  ConfigMap from the local OCP APIServer TLS profile and triggers pod restarts.

Add ApplyTLSFromConfigMapToCommand to both operator commands. This installs a
PersistentPreRunE hook that reads the ocm-tls-profile ConfigMap once (using an
in-cluster kube client) before library-go's StartController creates the server,
writes a minimal GenericOperatorConfig YAML to /tmp, and sets --config to point
at it. This ensures the server's TLS config is set correctly from the first
request, using the same restart-on-change mechanism already in place.

The ConfigMap is optional: if not found (upstream deployments without the ACM
sidecar) or if the in-cluster config is unavailable (local dev), the hook is a
no-op and library-go defaults apply.

Also add ApplyTLSToCommand call-site comments to the three spoke agent commands
explaining the difference: agents receive TLS flags from their deployment
manifests (injected by the klusterlet operator), while the operator itself reads
the ConfigMap directly.

Signed-off-by: Tesshu Flower <tflower@redhat.com>

---------

Signed-off-by: Tesshu Flower <tflower@redhat.com>
2026-08-07 01:05:00 +00:00
Jian Qiu f9d4628f17 Enhance test coverage (#1174)
Signed-off-by: Jian Qiu <jqiu@redhat.com>
2025-09-11 07:26:59 +00:00
Ankit Kurmi cd8827572e feat: updated golang to v1.23.6 and related k8s.io packages (#870)
Signed-off-by: Ankit152 <ankitkurmi152@gmail.com>
2025-04-09 07:46:27 +00:00
Jian Qiu d323b60253 Change the component name to klusterlet-agent (#809)
Signed-off-by: Jian Qiu <jqiu@redhat.com>
2025-01-17 10:34:11 +00:00
Qing Hao 4ebe9d7978 🐛 monitor the bootstrap kubeconfig and restart immediately when changes (#630)
* monitor the bootstrap kubeconfig and restart immediately when changes

Signed-off-by: haoqing0110 <qhao@redhat.com>

* fix comments

Signed-off-by: haoqing0110 <qhao@redhat.com>

---------

Signed-off-by: haoqing0110 <qhao@redhat.com>
2024-09-30 06:24:20 +00:00
Jian Qiu 8c1d286b11 Refactor registration (#535)
* Refactor registration

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Fix integration test

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Refactor cert controller to secret controller

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Update health check func

Signed-off-by: Jian Qiu <jqiu@redhat.com>

---------

Signed-off-by: Jian Qiu <jqiu@redhat.com>
2024-07-17 14:14:11 +00:00
Ohki Nozomu 1227b71043 Fix typo: Rename 'CommoOpts' to 'CommonOpts' (#523)
Signed-off-by: ohkinozomu <nozomunoise@gmail.com>
2024-06-17 02:21:10 +00:00
Zhiwei Yin c4b2c65080 add enable-sync-labels flag to klusterlet operator (#505)
Signed-off-by: Zhiwei Yin <zyin@redhat.com>
2024-06-06 15:03:12 +00:00
Jian Qiu c056181096 Add a disable-default-addon-namespace flag (#484)
* Add a disable-default-addon-namespace flag

if the flag is set, default addon ns will not be created
by the operator.

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Update with comments

Signed-off-by: Jian Qiu <jqiu@redhat.com>

---------

Signed-off-by: Jian Qiu <jqiu@redhat.com>
2024-06-03 06:54:15 +00:00
DONG BEIQING 22da639109 configurable controller replicas and master node selector (#468)
* configurable controller replicas and master node selector

Signed-off-by: Dong Beiqing <350758787@qq.com>

* run make fmt-imports

Signed-off-by: Dong Beiqing <350758787@qq.com>

* shorter lines

Signed-off-by: Dong Beiqing <350758787@qq.com>

* rename ControllerReplicas to DeploymentReplicas

Signed-off-by: Dong Beiqing <350758787@qq.com>

* rename masterNodeLabelSelectors to controlPlaneNodeLabels

Signed-off-by: Dong Beiqing <350758787@qq.com>

* rename controlPlaneNodeLabels to controlPlaneNodeLabelSelector

Signed-off-by: Dong Beiqing <350758787@qq.com>

---------

Signed-off-by: Dong Beiqing <350758787@qq.com>
2024-05-21 10:30:38 +00:00
Yang Le 9aaa1327fa 🐛 move the rebootstrap logic to registration agent (#267)
Signed-off-by: Yang Le <yangle@redhat.com>
2023-10-18 09:58:06 +00:00
Jian Qiu e22faa4545 🌱 Build a commonoption for all managers (#228)
* Build a commonoption for all managers

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Add unit tests

Signed-off-by: Jian Qiu <jqiu@redhat.com>

---------

Signed-off-by: Jian Qiu <jqiu@redhat.com>
2023-07-25 03:12:35 +02:00
Jian Qiu f7cd1402e9 run work and registration as a single binary (#201)
* run registratin/work together

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Fix integration test and lint issue

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Update operator to deploy singleton mode

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Update deps

Signed-off-by: Jian Qiu <jqiu@redhat.com>

---------

Signed-off-by: Jian Qiu <jqiu@redhat.com>
2023-07-14 04:56:48 +02:00
Jian Qiu 8c92c70e6d Being able to match multiple items in jsonpath (#202)
This allows a jsonpatch to match multiple items and
returns a list with jsonraw

Signed-off-by: Jian Qiu <jqiu@redhat.com>
2023-07-05 04:32:52 -04:00
Jian Zhu 7332a585c0 🌱 add a verify rule for golang files import order (#177)
* 🌱 add a verify rule for golang files import order

This PR uses the [gci tool](https://github.com/daixiang0/gci) to make all go files' import section with a specific order, it will organize import with group with order:
1. standard library modules
2. 3rd party modules
3. modules in OCM org, like the `open-cluster-management.io/api`
4. current project `open-cluster-management.io/ocm` modules

developers can use the `make fmt-imports` to format the import automatically and the `make verify-fmt-imports` to check for any violation.

Signed-off-by: zhujian <jiazhu@redhat.com>

* 🌱 format the go files import

Signed-off-by: zhujian <jiazhu@redhat.com>

---------

Signed-off-by: zhujian <jiazhu@redhat.com>
2023-06-12 10:23:04 -04:00
Jian Qiu 62efbf935b Build common options for agent (#163)
Signed-off-by: Jian Qiu <jqiu@redhat.com>
2023-06-08 02:55:43 -04:00
Jian Qiu 116ae8cc28 Refactor version/feature/cmd packages (#148)
Signed-off-by: Jian Qiu <jqiu@redhat.com>
2023-05-30 02:07:32 -04:00