Skip to content

clustermesh: cli: pass every service clustermesh-apiserver IPs#41253

Merged
giorio94 merged 1 commit intocilium:mainfrom
MrFreezeex:clustermesh-cli-pass-multiple-svcips
Aug 19, 2025
Merged

clustermesh: cli: pass every service clustermesh-apiserver IPs#41253
giorio94 merged 1 commit intocilium:mainfrom
MrFreezeex:clustermesh-cli-pass-multiple-svcips

Conversation

@MrFreezeex
Copy link
Copy Markdown
Member

@MrFreezeex MrFreezeex commented Aug 18, 2025

See the commit description for more details

clustermesh: cli: accept more than one service IPs (excluding when connecting to NodePort Services) when connecting to remote clustermesh-apiserver

Also there is some additional context here https://cilium.slack.com/archives/C06AC2H4XQ9/p1754995899479629 where we were essentially checking if /etc/hosts support multiple IPs and it seems to be the case in Go at least.

@MrFreezeex MrFreezeex requested a review from a team as a code owner August 18, 2025 17:43
@MrFreezeex MrFreezeex requested a review from giorio94 August 18, 2025 17:43
@github-actions github-actions bot added cilium-cli This PR contains changes related with cilium-cli cilium-cli-exclusive This PR only impacts cilium-cli binary labels Aug 18, 2025
@maintainer-s-little-helper maintainer-s-little-helper bot added dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. labels Aug 18, 2025
@MrFreezeex MrFreezeex added release-note/minor This PR changes functionality that users may find relevant to operating Cilium. area/clustermesh Relates to multi-cluster routing functionality in Cilium. and removed dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. labels Aug 18, 2025
@MrFreezeex MrFreezeex force-pushed the clustermesh-cli-pass-multiple-svcips branch from b8126dd to 184b903 Compare August 18, 2025 17:44
Pass every service IPs instead of only the first one.

This seems to have been forgotten during some code refactoring here
because the ServiceIPs are correctly filtered in `extractAccessInformation`.
For instance, when processing a service NodePort it already only take the first
IPs. And for a service LoadBalancer it can get multiple IPs (or an hostname
that resolves to multiple ones) and everything should already be handle
correctly here. Also the helm code after that state that this should be
supported.

A few examples of when that would be useful:
- On some cloud providers you might get multiple IPs in the load balancer
  service status (for instance one per AZ)
- There could be some dualstack consideration here that were maybe not handled
  correctly (like connecting a single stack cluster to a dual stack one and the CLI
  pick an IP with a protocol not supported). While we could just pass all the
  IPs here and then the client would naturally use the correct IP protocol.
- `--destination-endpoint` in the CLI theoretically accept multiple endpoints
  but then we were just taking into account the first one here.

Signed-off-by: Arthur Outhenin-Chalandre <git@mrfreezeex.fr>
@MrFreezeex MrFreezeex force-pushed the clustermesh-cli-pass-multiple-svcips branch from 184b903 to 1711fcc Compare August 18, 2025 17:46
@MrFreezeex
Copy link
Copy Markdown
Member Author

/test

Copy link
Copy Markdown
Member

@giorio94 giorio94 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Arthur!

I think that the change overall makes sense, realistically it shouldn't change much, as most likely the service would have a single IP address (especially in the LB case, and a single one it is already forced for NodePorts).

It is also a bit weird that we are resolving possible DNS names, instead of directly propagating them, but I guess that stems from both historical reasons, and for ease of use, as it doesn't require configuring the certificate with extra SANs. Still acceptable considering that the CLI is mostly for testing, while in production environments one should use helm anyways for increased control.

@giorio94 giorio94 enabled auto-merge August 19, 2025 07:23
@giorio94 giorio94 added this pull request to the merge queue Aug 19, 2025
@maintainer-s-little-helper maintainer-s-little-helper bot added the ready-to-merge This PR has passed all tests and received consensus from code owners to merge. label Aug 19, 2025
Merged via the queue into cilium:main with commit e972f7a Aug 19, 2025
68 checks passed
zocimek added a commit to zocimek/home-ops that referenced this pull request Oct 1, 2025
… ) (#222)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
|
[aqua:cilium/cilium-cli](https://redirect.github.com/cilium/cilium-cli)
| patch | `0.18.6` -> `0.18.7` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>cilium/cilium-cli (aqua:cilium/cilium-cli)</summary>

###
[`v0.18.7`](https://redirect.github.com/cilium/cilium-cli/releases/tag/v0.18.7)

[Compare
Source](https://redirect.github.com/cilium/cilium-cli/compare/v0.18.6...v0.18.7)

#### What's Changed

## Summary of Changes

**Minor Changes:**

- clustermesh: cli: accept more than one service IPs (excluding when
connecting to NodePort Services) when connecting to remote
clustermesh-apiserver
([cilium/cilium#41253](https://redirect.github.com/cilium/cilium/issues/41253),
[@&#8203;MrFreezeex](https://redirect.github.com/MrFreezeex))
- clustermesh: cli: add support for dict for helm values
`clustermesh.config.clusters`
([cilium/cilium#40879](https://redirect.github.com/cilium/cilium/issues/40879),
[@&#8203;MrFreezeex](https://redirect.github.com/MrFreezeex))
- clustermesh: cli: support outputting `clustermesh.config.clusters` to
the new dict format if the cluster is running Cilium >= 1.20
([cilium/cilium#40959](https://redirect.github.com/cilium/cilium/issues/40959),
[@&#8203;MrFreezeex](https://redirect.github.com/MrFreezeex))

**Bugfixes:**

- Add l7 proxy check to policy-local-cluster-egress connectivity test
([cilium/cilium#40797](https://redirect.github.com/cilium/cilium/issues/40797),
[@&#8203;camrynl](https://redirect.github.com/camrynl))
- cilium-cli: also restart cilium-operator pods on config changes
([cilium/cilium#41067](https://redirect.github.com/cilium/cilium/issues/41067),
[@&#8203;aanm](https://redirect.github.com/aanm))

**CI Changes:**

- Allow Egress Gateway connectivity tests to run concurrently
([cilium/cilium#40980](https://redirect.github.com/cilium/cilium/issues/40980),
[@&#8203;tommyp1ckles](https://redirect.github.com/tommyp1ckles))
- cilium-cli: connectivity tests: Ignore some logs in error log check
([cilium/cilium#40690](https://redirect.github.com/cilium/cilium/issues/40690),
[@&#8203;jrife](https://redirect.github.com/jrife))
- cilium-cli: IPv6 connectivity tests for PodToIngress
([cilium/cilium#39667](https://redirect.github.com/cilium/cilium/issues/39667),
[@&#8203;gentoo-root](https://redirect.github.com/gentoo-root))

**Misc Changes:**

- chore(deps): update all-dependencies (main)
([cilium/cilium#40893](https://redirect.github.com/cilium/cilium/issues/40893),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- chore(deps): update all-dependencies (main)
([cilium/cilium#41046](https://redirect.github.com/cilium/cilium/issues/41046),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- chore(deps): update all-dependencies (main)
([cilium/cilium#41340](https://redirect.github.com/cilium/cilium/issues/41340),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- chore(deps): update all-dependencies (main)
([cilium/cilium#41433](https://redirect.github.com/cilium/cilium/issues/41433),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- chore(deps): update docker.io/library/golang:1.25.0 docker digest to
[`5502b0e`](https://redirect.github.com/cilium/cilium-cli/commit/5502b0e)
(main)
([cilium/cilium#41343](https://redirect.github.com/cilium/cilium/issues/41343),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- chore(deps): update go to v1.24.6 (main)
([cilium/cilium#40992](https://redirect.github.com/cilium/cilium/issues/40992),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- cilium-cli: Optimized feature detection by running cluster-wide checks
once
([cilium/cilium#40715](https://redirect.github.com/cilium/cilium/issues/40715),
[@&#8203;HadrienPatte](https://redirect.github.com/HadrienPatte))
- Include bgp remote peer capabilities in the sysdump
([cilium/cilium#40719](https://redirect.github.com/cilium/cilium/issues/40719),
[@&#8203;liyihuang](https://redirect.github.com/liyihuang))
- Update all-dependencies (main)
([cilium/cilium#41175](https://redirect.github.com/cilium/cilium/issues/41175),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- Update docker.io/alpine/socat:1.8.0.3 Docker digest to
[`29d0f24`](https://redirect.github.com/cilium/cilium-cli/commit/29d0f24)
(main)
([cilium/cilium#41204](https://redirect.github.com/cilium/cilium/issues/41204),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- Update Go to v1.25.0 (main)
([cilium/cilium#41209](https://redirect.github.com/cilium/cilium/issues/41209),
[@&#8203;cilium-renovate](https://redirect.github.com/cilium-renovate)\[bot])
- Update stable release to v0.18.6 by
[@&#8203;tklauser](https://redirect.github.com/tklauser) in
[#&#8203;3075](https://redirect.github.com/cilium/cilium-cli/pull/3075)
- chore(deps): update golangci/golangci-lint docker tag to v2.3.1 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3076](https://redirect.github.com/cilium/cilium-cli/pull/3076)
- chore(deps): update golang docker tag to v1.24.6 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3079](https://redirect.github.com/cilium/cilium-cli/pull/3079)
- chore(deps): update gcr.io/distroless/static:latest docker digest to
[`2e114d2`](https://redirect.github.com/cilium/cilium-cli/commit/2e114d2)
by [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3077](https://redirect.github.com/cilium/cilium-cli/pull/3077)
- chore(deps): update docker/login-action action to v3.5.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3078](https://redirect.github.com/cilium/cilium-cli/pull/3078)
- chore(deps): update go to v1.24.6 (patch) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3080](https://redirect.github.com/cilium/cilium-cli/pull/3080)
- chore(deps): update actions/checkout action to v5 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3082](https://redirect.github.com/cilium/cilium-cli/pull/3082)
- chore(deps): update golangci/golangci-lint docker tag to v2.4.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3086](https://redirect.github.com/cilium/cilium-cli/pull/3086)
- chore(deps): update golang docker tag to v1.25.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3085](https://redirect.github.com/cilium/cilium-cli/pull/3085)
- chore(deps): update go to v1.25.0 (minor) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3088](https://redirect.github.com/cilium/cilium-cli/pull/3088)
- chore(deps): update dependency cilium/cilium to v1.18.1 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3089](https://redirect.github.com/cilium/cilium-cli/pull/3089)
- chore(deps): update dependency kubernetes-sigs/kind to v0.30.0 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3091](https://redirect.github.com/cilium/cilium-cli/pull/3091)
- chore(deps): update golang-images - autoclosed by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3090](https://redirect.github.com/cilium/cilium-cli/pull/3090)
- Prepare for v0.18.7 release by
[@&#8203;michi-covalent](https://redirect.github.com/michi-covalent) in
[#&#8203;3092](https://redirect.github.com/cilium/cilium-cli/pull/3092)

**Full Changelog**:
<cilium/cilium-cli@v0.18.6...v0.18.7>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://redirect.github.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS45NS4wIiwidXBkYXRlZEluVmVyIjoiNDEuMTMyLjUiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInR5cGUvcGF0Y2giXX0=-->

Co-authored-by: zocimek-renovate[bot] <134739422+zocimek-renovate[bot]@users.noreply.github.com>
Co-authored-by: Łukasz Pospiech <zocimek@users.noreply.github.com>
@cilium-release-bot cilium-release-bot bot moved this to Released in cilium v1.19.0 Feb 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/clustermesh Relates to multi-cluster routing functionality in Cilium. cilium-cli This PR contains changes related with cilium-cli cilium-cli-exclusive This PR only impacts cilium-cli binary ready-to-merge This PR has passed all tests and received consensus from code owners to merge. release-note/minor This PR changes functionality that users may find relevant to operating Cilium.

Projects

No open projects
Status: Released

Development

Successfully merging this pull request may close these issues.

2 participants