Skip to content

Instantly share code, notes, and snippets.

@JooKS-me
Last active August 23, 2023 23:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JooKS-me/387ed3d2edba5bf427282df84125b2a0 to your computer and use it in GitHub Desktop.
Save JooKS-me/387ed3d2edba5bf427282df84125b2a0 to your computer and use it in GitHub Desktop.
Gsoc 2023 - shenyu-ingress-controller

Proposal: https://gist.github.com/JooKS-me/bd7cc7c759fd0df5d7c3a2fcdc2f5d1b

How to use: https://shenyu.apache.org/docs/user-guide/kubernetes-controller/build-deploy/

1 The goals

Implement a Kubernetes Ingress Controller for Apache ShenYu, it requires the following abilities:

  1. HTTP proxy
  2. TLS dynamic configuration
  3. Automatically change gateway configuration according to Endpoints

2 The work I did

  1. Write shenyu-kubernetes-spring-boot-starter, embed ingress-controller into the gateway in the form of spring-boot-starter, and have pluggable capabilities.
  2. Refactor the core code of shenyu gateway to support the SNI protocol and lay the foundation for realizing the kubernetes ingress tls capability.
  3. Write the code of shenyu-ingress-controller to achieve the goals mentioned above.
  4. Provide unit tests and integration tests for the written code.
  5. Write usage and configuration documentation.

3 The current state

The goals of Gsoc 2023 have all been achieved.

4 Future Work

Further optimization and expansion:

  1. The annotation based on ingress supports the unique functions of shenyu;
  2. Refactor to trigger horizontally.
  3. Support shenyu's unique functions based on CRD;
  4. Provide a separate architecture for shenyu kubernetes controller;
  5. Write helm chart for shenyu kubernetes controller;
  6. Implement the Kubernetes Gateway API;
  7. Connect with Kubernetes ecological projects such as Knative and KubeVela.

5 The code

All code have been merged into master branch of Apache ShenYu.

  1. apache/shenyu#4620
  2. apache/shenyu#4820
  3. apache/shenyu#5051
  4. apache/shenyu#4742
  5. apache/shenyu-website#944
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment