zufardhiyaulhaq / frp-operator

Expose your service in Kubernetes to the Internet with open source FRP!
MIT License
36 stars 15 forks source link
frp frp-alternative frp-kubernetes frp-operator frpc frps k8s kubernetes kubernetes-frp kubernetes-tunnel operator private-kubernetes proxy tunnel

frp-operator

Expose your service in Kubernetes to the Internet with open source FRP!

Version: 1.2.0 Type: application AppVersion: 0.3.1 made with Go Github main branch build GitHub issues GitHub pull requestsArtifact Hub

Document

  1. RFC: Fast Reverse Proxy Operator

Installing

To install the chart with the release name my-release:

helm repo add frp-operator https://zufardhiyaulhaq.com/frp-operator/charts/releases/
helm install my-frp-operator frp-operator/frp-operator --values values.yaml

Prerequisite

To expose your private Kubernetes service into public network. You need public machine running FRP Server that act as a proxy. Currently the operator doesn't have capability to spine a new machine on cloud providers, but this can be setup in a minute.

  1. Create machine on cloud provider
  2. Download frps binary
  3. Create server configuration
    
    vi frps.ini

[common] bind_address = 0.0.0.0 bind_port = 7000 token = yourtoken

4. Run FRP server

frps -c ./frps.ini


You can reuse our build-in ansible playbook to setup the FRP server on your machine, please check https://github.com/zufardhiyaulhaq/frp-operator/tree/main/ansible/server

## Usage
1. Apply some example
```console
kubectl apply -f examples/deployment/
kubectl apply -f examples/client/
  1. Check frpc object
    
    kubectl get client
    NAME        AGE
    client-01   17m

kubectl get upstream NAME AGE nginx 17m


3. access the URL
```console
http://178.128.100.87:8080/

Values

Key Type Default Description
operator.image string "zufardhiyaulhaq/frp-operator"
operator.replica int 1
operator.tag string "v0.3.1"
resources.limits.cpu string "200m"
resources.limits.memory string "100Mi"
resources.requests.cpu string "100m"
resources.requests.memory string "20Mi"

see example files here