Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support new kubernetes resource EndpointsSlice #17158

Closed
2 of 9 tasks
howardjohn opened this issue Sep 17, 2019 · 8 comments
Closed
2 of 9 tasks

Support new kubernetes resource EndpointsSlice #17158

howardjohn opened this issue Sep 17, 2019 · 8 comments
Assignees
Labels
area/config area/networking lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while
Milestone

Comments

@howardjohn
Copy link
Member

howardjohn commented Sep 17, 2019

https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/20190603-EndpointSlice-API.md adds a new API to Kubernetes. It has a lot of overlap with our ServiceEntry. It seems plausible that we could completely remove ServiceEntry in favor of the new API.

At the very least, we will need to update Pilot/Galley to understand EndpointSlices

Actions:

  • Initial support: Initial support for endpoint slice #18394
  • Improve unit test coverage - run all tests with endpoints and slices: Test both endpoints and slices for unit tests #19645
  • Improve e2e coverage
  • Add a mode where both endpoints and slices are read
  • Do not read nodes if just using slice
  • Do not require pod reading if just using slice? Needs more stuff put into the slices like SA
  • Documentation
  • Replace/add Endpoint Slice in place of STATIC service entry in tests/docs/users usage
  • Investigate backporting endpoint slice as a CRD to old clusters
@howardjohn
Copy link
Member Author

howardjohn commented Sep 19, 2019

Test using kind:

kind: Cluster
apiVersion: kind.sigs.k8s.io/v1alpha3
kubeadmConfigPatches:
- |
  apiVersion: kubeadm.k8s.io/v1beta2
  kind: ClusterConfiguration
  metadata:
    name: config
  apiServer:
    extraArgs:
      "feature-gates": "EndpointSlice=true"
      "runtime-config": "discovery.k8s.io/v1alpha1=true"
  controllerManager:
    extraArgs:
      "controllers": "*,-endpoint,endpointslice"

kind create cluster --image aojea/kindnode:latest --config config.yaml (there is not official 1.16 node image yet, config.yaml refers to above)

@hzxuzhonghu
Copy link
Member

@howardjohn EndpointsSlice is to replace Endpoints, it is 1:n relation for service and endpointslices , so it is a little complicated to support it. In k8s 1.16 it is an alpha feature, so maybe in 1.17 or 1.18, it can be beta.

BTW, kube-proxy is a good example to understand EndpointSlices.

@howardjohn
Copy link
Member Author

It seems we also cannot use EndpointSlice until we update client-go. We cannot update client-go to 1.16, because then we lose support for things that were removed in 1.16. And additionally, we depend on other libraries that refuse to upgrade to 1.16 for the same reason... not sure what we can do here.

@bowei
Copy link

bowei commented Oct 21, 2019

cc: @freehan @robscott

@howardjohn
Copy link
Member Author

status update: blocked by #17831, which shouldn't be too much work to get working. Once we have that done, I have a WIP that is probably 80% done for base level support. To actually do similar splicing in Envoy is much more work and dependent on some Envoy side changes

@howardjohn howardjohn self-assigned this Nov 27, 2019
howardjohn added a commit to howardjohn/istio-installer that referenced this issue Nov 27, 2019
@howardjohn
Copy link
Member Author

I am about 80% done with this in https://github.com/istio/istio/pull/18394/files, just need to fix a few tests and clean things up I think

@istio-policy-bot
Copy link

🧭 This issue or pull request has been automatically marked as stale because it has not had activity from an Istio team member since 2019-11-27. It will be closed on 2020-03-11 unless an Istio team member takes action. Please see this wiki page for more information. Thank you for your contributions.

Created by the issue and PR lifecycle manager.

@istio-policy-bot istio-policy-bot added the lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while label Feb 26, 2020
@chihaiaalex
Copy link

Hello. From which version does Istio support the new EndpointSlice resource?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/config area/networking lifecycle/stale Indicates a PR or issue hasn't been manipulated by an Istio team member for a while
Projects
None yet
Development

No branches or pull requests

6 participants