Skip to content

GHA: Node without Cilium for GKE workflows#41713

Merged
pchaigno merged 8 commits intomainfrom
pr/max/node-without-cilium
Mar 18, 2026
Merged

GHA: Node without Cilium for GKE workflows#41713
pchaigno merged 8 commits intomainfrom
pr/max/node-without-cilium

Conversation

@gentoo-root
Copy link
Copy Markdown
Contributor

@gentoo-root gentoo-root commented Sep 16, 2025

Use fake external targets on nodes without Cilium in GKE CI workflows for better stability.

@maintainer-s-little-helper maintainer-s-little-helper bot added the dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. label Sep 16, 2025
@github-actions github-actions bot added the cilium-cli This PR contains changes related with cilium-cli label Sep 16, 2025
@gentoo-root gentoo-root added release-note/ci This PR makes changes to the CI. and removed cilium-cli This PR contains changes related with cilium-cli labels Sep 16, 2025
@maintainer-s-little-helper maintainer-s-little-helper bot removed the dont-merge/needs-release-note-label The author needs to describe the release impact of these changes. label Sep 16, 2025
@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch 2 times, most recently from 978a59c to d568c63 Compare September 17, 2025 15:35
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch from d568c63 to 9ec1260 Compare September 17, 2025 16:01
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@github-actions
Copy link
Copy Markdown

This pull request has been automatically marked as stale because it
has not had recent activity. It will be closed if no further activity
occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale The stale bot thinks this issue is old. Add "pinned" label to prevent this from becoming stale. label Oct 18, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Nov 1, 2025

This pull request has not seen any activity since it was marked stale.
Closing.

@github-actions github-actions bot closed this Nov 1, 2025
@gentoo-root gentoo-root removed the stale The stale bot thinks this issue is old. Add "pinned" label to prevent this from becoming stale. label Jan 28, 2026
@gentoo-root gentoo-root reopened this Jan 28, 2026
@github-actions github-actions bot added the cilium-cli This PR contains changes related with cilium-cli label Jan 28, 2026
@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch 2 times, most recently from 3a7cfb2 to 0f8f9e7 Compare January 28, 2026 19:40
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch 2 times, most recently from d2493e4 to 63a97a8 Compare February 10, 2026 18:56
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

1 similar comment
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch from 019d359 to b6153d1 Compare February 12, 2026 17:14
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch from b6153d1 to 18c39a1 Compare February 12, 2026 18:33
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/test

@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch from 18c39a1 to dad65a5 Compare February 16, 2026 19:34
Copy link
Copy Markdown
Contributor

@thorn3r thorn3r left a comment

Choose a reason for hiding this comment

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

looks good for my codeowners

@gentoo-root gentoo-root force-pushed the pr/max/node-without-cilium branch 2 times, most recently from 3a55c5f to 30a44d2 Compare March 9, 2026 14:07
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root
Copy link
Copy Markdown
Contributor Author

test

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/test

@gentoo-root gentoo-root closed this Mar 9, 2026
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/test

@cilium-ariane
Copy link
Copy Markdown

cilium-ariane bot commented Mar 9, 2026

/ci-gke

@cilium-ariane
Copy link
Copy Markdown

cilium-ariane bot commented Mar 9, 2026

/test

Copy link
Copy Markdown
Member

@pchaigno pchaigno left a comment

Choose a reason for hiding this comment

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

Approving for cilium/ipsec.

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/test

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/test

Cloud providers have connectivity to pods without the need to add extra
routes, unlike Kind clusters. Drop the `ip route add` commands to avoid
"Error: Nexthop has invalid gateway".

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
node-local-dns uses port 8080 for liveness probes [1], which prevents
Cilium connectivity tests from deploying echo-external-node on "nodes
without Cilium" if node-local-dns runs there:

Some error occurred Error: listen EADDRINUSE: address already in use :::8080
    at Server.setupListenHandle [as _listen2] (node:net:1940:16)
    at listenInCluster (node:net:1997:12)
    at Server.listen (node:net:2102:7)
    at app.listen (/usr/local/lib/node_modules/json-server/node_modules/express/lib/application.js:636:24)
    at /usr/local/lib/node_modules/json-server/lib/cli/run.js:112:20 {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 8080
}

Move the port used by Cilium tests to fix the clash with node-local-dns.

[1]: https://github.com/kubernetes/kubernetes/blob/7f890ab7ade4ecfff92cc81621216ae1b87fa827/cluster/addons/dns/nodelocaldns/nodelocaldns.yaml#L165

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
The cluster can still have two nodes, one ignored by Cilium, in which
case echo-external-node should be deployed on that node, otherwise it's
skipped, but then waited for.

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
Before commit a1d207c ("cilium-cli: fix wildcard egress tls sni
policy connectivity tests"), wildcard tests used to assume that the
suffixes of the two external targets are different after replacing the
first one or two components of their hostnames with a wildcard. After it
was fixed, double wildcard tests started passing when external targets
have at least some uncommon suffix, but for fake external targets like
 - nginx.external.svc.cluster.local
 - nginx.external-other.svc.cluster.local
it means wildcarding as **.external.svc.cluster.local, skipping testing
the functionality that matches ** on multiple words.

Solve this problem by using the `curl --resolve` option to provide fake
DNS to fake external targets. In tests that don't rely on FQDN policies,
it allows to skip DNS resolution and instead use arbitrary hostnames.
For example, using
 - fake.external.first.target
 - fake.external.second.target
allows to write a double wildcard policy for **.first.target, which will
match on the first target only, and it will also test **.

The downside is the requirement to issue custom TLS certificates with
fake hostnames, so this approach can't be used universally for real
external targets. Therefore, the fake DNS mechanism is conditionally
enabled with the new flag --external-target-fake-dns. It allows to
enable it in CI workflows where external targets are under control and
can provide correct TLS certificates, and disable it when used with
arbitrary external servers (in which case the user still has to ensure
that the hostname suffixes are different).

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
Suggested-by: James Laverack <laverack@cisco.com>
Create the generic-external-targets GitHub action to be used in more
workflows. Unlike kind-external-targerts, this one doesn't assume Kind,
deploys two external targets on nodes without Cilium, and provides DNS
hostnames for them via headless services. It should work in a wider
range of environments, but as a downside requires two extra nodes.

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
They will be used to deploy fake external targets.

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
Use the new generic-external-targets GitHub action in the GKE workflow,
removing dependency on external servers that aren't under our control.

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
Before checking out the pull request branch, store GitHub actions from
the target branch, so that untrusted code from pull requests can't
perform malicious actions in our GKE environment.

Signed-off-by: Alice Mikityanska <alice@isovalent.com>
@gentoo-root
Copy link
Copy Markdown
Contributor Author

/ci-gke

@gentoo-root
Copy link
Copy Markdown
Contributor Author

/test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cilium-cli This PR contains changes related with cilium-cli release-note/ci This PR makes changes to the CI.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants