Skip to content

Conversation

madmecodes
Copy link
Contributor

@madmecodes madmecodes commented Sep 21, 2025

Pull Request Template for Kubeflow Manifests

✏️ Summary of Changes

This PR implements Istio Ambient Mode support for Kubeflow deployments using the overlay pattern within the existing istio-install structure.

Ambient mode provides a sidecar-free service mesh solution that reduces resource overhead while maintaining full L4/L7 traffic processing capabilities.

For Standard Deployments:
In example/kustomization.yaml, replace:

  • ../common/istio/istio-install/overlays/oauth2-proxy
    With:
  • ../common/istio/istio-install/overlays/ambient

For GKE Deployments:
In example/kustomization.yaml, use:

  • ../common/istio/istio-install/overlays/ambient-gke

For OAuth2-Proxy + Ambient:
In example/kustomization.yaml, use:

  • ../common/istio/istio-install/overlays/ambient-oauth2-proxy

📦 Dependencies

none

🐛 Related Issues

none

✅ Contributor Checklist

  • I have tested these changes with kustomize. See Installation Prerequisites.
  • All commits are signed-off to satisfy the DCO check.
  • I have considered adding my company to the adopters page to support Kubeflow and help the community, since I expect help from the community for my issue (see 1. and 2.).

You can join the CNCF Slack and access our meetings at the Kubeflow Community website. Our channel on the CNCF Slack is here #kubeflow-platform.

@google-oss-prow
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign juliusvonkohout for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@madmecodes
Copy link
Contributor Author

/retest

@madmecodes
Copy link
Contributor Author

@juliusvonkohout ambient overlay working fine, i tested in GKE, will test on kind too, and share the logs and confirming testing steps, maybe we can create pipeline test too.

@juliusvonkohout
Copy link
Member

can we use kustomize components instead of overlays for GKE to reduce the complexity ?

@madmecodes
Copy link
Contributor Author

can we use kustomize components instead of overlays for GKE to reduce the complexity ?

Yes, we can do that, also for this PR we can use inheritance the same way we do for base installation right now, and if we want component, we can create a followup PR for the same.
For this PR we can go something like this:

## overlays/ambient-gke/kustomization.yaml
  apiVersion: kustomize.config.k8s.io/v1beta1
  kind: Kustomization

  resources:
  - ../ambient              ### <-Inherit from ambient overlay!

  patches:
  - path: gke-cni-patch.yaml
    target:
      kind: DaemonSet
      name: istio-cni-node
      namespace: kube-system
  - path: gke-ztunnel-patch.yaml
    target:
      kind: DaemonSet
      name: ztunnel
      namespace: istio-system

@juliusvonkohout
Copy link
Member

juliusvonkohout commented Sep 30, 2025

can we use kustomize components instead of overlays for GKE to reduce the complexity ?

Yes, we can do that, also for this PR we can use inheritance the same way we do for base installation right now, and if we want component, we can create a followup PR for the same. For this PR we can go something like this:

## overlays/ambient-gke/kustomization.yaml
  apiVersion: kustomize.config.k8s.io/v1beta1
  kind: Kustomization

  resources:
  - ../ambient              ### <-Inherit from ambient overlay!

  patches:
  - path: gke-cni-patch.yaml
    target:
      kind: DaemonSet
      name: istio-cni-node
      namespace: kube-system
  - path: gke-ztunnel-patch.yaml
    target:
      kind: DaemonSet
      name: ztunnel
      namespace: istio-system

Yes we can make all GKE patches kustomize components in this PR here, also for istio-cni. But it should be a kustomize component without inheritance via - ../ambient ### <-Inherit from ambient overlay! We want to avoid inheritance for GKE stuff, that is the goal.

@juliusvonkohout
Copy link
Member

See also https://www.fosstechnix.com/kubernetes-customization-with-kustomize-components/

@madmecodes
Copy link
Contributor Author

/retest

@juliusvonkohout
Copy link
Member

please also use a GKE kustomize component for istio-cni

@google-oss-prow google-oss-prow bot added size/L and removed size/XL labels Oct 1, 2025
@madmecodes
Copy link
Contributor Author

/retest

madmecodes and others added 18 commits October 2, 2025 18:56
…ient

Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
…ic ambient-gke

Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: madmecodes <ayushguptadev1@gmail.com>
Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
@madmecodes
Copy link
Contributor Author

I am also wondering where https://github.com/LogicalGuy77/manifests-logical/blob/acc205c3275dc40ec68bceb8bda33d32b95cb879/tests/kserve_jwt_authentication_test.sh#L15 is coming from. That line looks dangerous. Why did you add it in the first place?

I added it because the test needs a ServiceAccount to generate JWT tokens (kubectl create token default-editor), and without it the test was failing with "serviceaccount not found." (as i remember, in PR #3180 )

I used --dry-run=client | kubectl apply to make it idempotent, but I'm not sure if this is the right approach for tests. Should the test assume default-editor already exists (created by profile controller or elsewhere)?

Or is there a better pattern for creating test service accounts?

Happy to revise if there's a more appropriate way to handle this.

@madmecodes
Copy link
Contributor Author

Also https://github.com/kubeflow/manifests/blob/master/.github/workflows/kserve_test.yaml is not properly merged. you just tripled the code. and it is not used in the full end-to-end test

Most of that belongs in the actual test.sh files. and it must be included here in a minimal and elegant fashion

Created the new PR for the same, sorry for the overlook, #3254

@juliusvonkohout
Copy link
Member

I am also wondering where https://github.com/LogicalGuy77/manifests-logical/blob/acc205c3275dc40ec68bceb8bda33d32b95cb879/tests/kserve_jwt_authentication_test.sh#L15 is coming from. That line looks dangerous. Why did you add it in the first place?

I added it because the test needs a ServiceAccount to generate JWT tokens (kubectl create token default-editor), and without it the test was failing with "serviceaccount not found." (as i remember, in PR #3180 )

I used --dry-run=client | kubectl apply to make it idempotent, but I'm not sure if this is the right approach for tests. Should the test assume default-editor already exists (created by profile controller or elsewhere)?

Or is there a better pattern for creating test service accounts?

Happy to revise if there's a more appropriate way to handle this.

The service account is created automatically by installing the multi-tenancy component and then creating the Kubeflow profile. SO please do not create it manually. Just by creating the profile.

Copy link
Member

Choose a reason for hiding this comment

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

Can we deploy Ztunnel in another namespace called istio-ztunnel or so? So separate and isolated ?

Copy link
Member

Choose a reason for hiding this comment

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

See also #3246 (comment)

…pace-pss-privilege.yaml

Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
Signed-off-by: Julius von Kohout <45896133+juliusvonkohout@users.noreply.github.com>
operator: Exists
containers:
- name: istio-proxy
image: "docker.io/istio/ztunnel:1.27.1"
Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Contributor

Choose a reason for hiding this comment

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

we have to the update the https://github.com/kubeflow/manifests/blob/master/scripts/synchronize-istio-manifests.sh to handle and include ztunnel manifest generation

@juliusvonkohout
Copy link
Member

juliusvonkohout commented Oct 7, 2025

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants