ngrok / kubernetes-ingress-controller

The official ngrok Ingress Controller for Kubernetes
https://ngrok.com
MIT License
183 stars 20 forks source link

Productize an easier way to create access to the k8s api endpoint #372

Open ctindel opened 1 month ago

ctindel commented 1 month ago

Description

Users want a way to expose the k8s api via an ngrok endpoint. Sometimes this would be via a whitelabeled reserved domain, some users would probably be fine with an ngrok.app or other ngrok domain.

Ideally this would be done via some parameters set at helm install time, to be able to configure what domain name to use for the ngrok edge, and any relevant authentication information (mtls etc) to layer on top of the edge.

I wonder also if it makes sense to create a new CRD for accomplishing this directly in a manifest file too?

Below is a manifest file that works but is a bit complicated for users to implement.

apiVersion: ingress.k8s.ngrok.com/v1alpha1
kind: HTTPSEdge
metadata:
  name: kube-api-example-config
  generation: 1
spec:
  description: Proxy kube-api-example
  hostports:
  - k8s.edges.example.com:443
  metadata: '{"owned-by":"kubernetes-ingress-controller"}'
  routes:
  - backend:
      description: Created by kubernetes-ingress-controller
      labels:
        a: "b"
      metadata: '{"owned-by":"kubernetes-ingress-controller"}'
    compression:
      enabled: true
    description: Created by kubernetes-ingress-controller
    match: /
    matchType: path_prefix
    metadata: '{"owned-by":"kubernetes-ingress-controller"}'
---
apiVersion: ingress.k8s.ngrok.com/v1alpha1
kind: Tunnel
metadata:
  name: k8s-api-test
spec:
  appProtocol: http2
  backend:
    protocol: HTTPS
  forwardsTo: kubernetes.default.svc:443
  labels:
    a: "b"
---
apiVersion: ingress.k8s.ngrok.com/v1alpha1
kind: Domain
metadata:
  name: reserved-domain
spec:
  description: Reserved for test
  domain: k8s.edges.example.com

Use Case

No response

Related issues

No response

salilsub commented 2 weeks ago

Investigating, would need spec before development.