Skip to content

[PoC] Kubernetes ingress controller - #162

Draft
patatoid wants to merge 31 commits into
masterfrom
kubernetes-ingress-controller
Draft

[PoC] Kubernetes ingress controller#162
patatoid wants to merge 31 commits into
masterfrom
kubernetes-ingress-controller

Conversation

@patatoid

@patatoid patatoid commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

Here is a proof of concept of zero-trust brought to Kubernetes through the implementation of a gateway as an ingress controller and microgateways as sidecars. This enables mTLS interactions between the main ingress and the services with a common authority for the instances forming a cluster as an identity platform to have both authentication, authorization and security provided to secure the infrastructure.

Features

  • An ingress controller that forward the incoming requests to the services
    • using Kubernetes templates definitions
    • annotations to configure the upstreams
    • enables on top of routing TLS/mTLS, authorization, rate limiting
  • A microgateway sitting along with the services as a process controlling incoming traffic
  • Example Ansible playbooks to test the infrastructure on a Kubernetes Cluster

Test

  1. You can use a local instance of kubernetes linke minikube with a one liner installer then start it
minikube start
  1. Install kubectl, ansible and kubernetes plugin
sudo apt install ansible kubectl curl
kubectl config use-context minikube
ansible-galaxy collection install kubernetes.core
  1. Run the playbooks
ansible-playbook -i ansible/hosts ansible/ingress-controller.yml
ansible-playbook -i ansible/hosts ansible/oauth.yml
ansible-playbook -i ansible/hosts ansible/kagome.yml
  1. Expose the locally the ingress service and map hosts
minikube -n boruta-staging service boruta-ingress-controller
# /etc/hosts

<minikube ip>    kagome.local
  1. Perform the test

You'll then be able to request the service at curl http://kagome.local:30080/echo passing through the ingress the connection will go through a mTLS tunnel toward the echo service.

$ kubectl -n boruta-staging logs -l app=boruta-ingress-controller
[...]
2026-06-04T21:25:56.668Z request_id=1cde6e93 [info] boruta_gateway GET /echo - sent 200 from 10.244.0.1 tls=http in 58ms
2026-06-04T21:25:56.668Z request_id=1cde6e93 [info] boruta_gateway gateway proxy - success upstream_id=154ffd5c-7d0d-4ab1-8d8e-7dfe47d36f15 upstream_host=kagome-web.kagome.svc.cluster.local upstream_port=8044 upstream_tls=mtls request_time=1274 gateway_time=538 upstream_time=736

@patatoid
patatoid force-pushed the kubernetes-ingress-controller branch 2 times, most recently from 37fac13 to 7644be0 Compare June 4, 2026 05:06
@patatoid
patatoid force-pushed the kubernetes-ingress-controller branch 2 times, most recently from e73616f to 4814f0c Compare June 4, 2026 08:22
@patatoid
patatoid force-pushed the gateway-service-registry branch from 3986ef3 to 2e3ab5f Compare June 11, 2026 14:42
@patatoid
patatoid force-pushed the kubernetes-ingress-controller branch from e8699c3 to 748df36 Compare August 10, 2026 15:29
@patatoid
patatoid changed the base branch from gateway-service-registry to master August 10, 2026 15:51
@patatoid
patatoid force-pushed the kubernetes-ingress-controller branch from a37cd89 to 994cd0b Compare August 10, 2026 17:17
@patatoid
patatoid force-pushed the kubernetes-ingress-controller branch from 994cd0b to 7724d69 Compare August 12, 2026 17:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant