Skip to content

Commit cae0d49

Browse files
Added Helm values schema
1 parent 2f149ab commit cae0d49

5 files changed

Lines changed: 222 additions & 2 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ The frp Kubernetes Operator simplifies the deployment of frp clients and tunnels
2525
- Compatible with any IngressController
2626
- Portable IP address for flexibility
2727

28+
### Built with the Operator SDK
29+
30+
This operator was built using the [Operator SDK](https://sdk.operatorframework.io/docs/building-operators/), a toolkit that simplifies the creation of Kubernetes operators. The SDK streamlines the process of defining, developing, and deploying custom resources.
31+
2832
## Installation via Helm
2933

3034
To install the frp Operator using Helm, follow these steps:

artifacthub-repo.yml

Lines changed: 0 additions & 1 deletion
This file was deleted.

charts/frp-operator/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apiVersion: v2
22
name: frp-operator
3-
version: 1.0.1
3+
version: 1.0.2
44
description: Helm chart for frp Operator
55
type: application
66
keywords:

charts/frp-operator/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,34 @@ The **frp Kubernetes Operator** automates the deployment of FRP clients (connect
2020

2121
[frp](https://github.com/fatedier/frp) is an open-source reverse proxy that allows you to expose local servers to the internet securely. It supports TCP, UDP, HTTP, and HTTPS.
2222

23+
## Configuration Parameters
24+
25+
| Parameter | Description | Default |
26+
|---------------------------|------------------------------------|----------------------------------------|
27+
| `replicaCount` | Number of replicas to deploy. | `1` |
28+
| `image.repository` | Container image repository. | `ghcr.io/aureum-cloud/frp-operator` |
29+
| `image.pullPolicy` | Image pull policy. | `Always` |
30+
| `image.tag` | Container image tag. | `""` (default tag) |
31+
| `imagePullSecrets` | List of image pull secrets. | `[]` |
32+
| `nameOverride` | Override the chart name. | `""` |
33+
| `fullnameOverride` | Override the full chart name. | `""` |
34+
| `serviceAccount.create` | Whether to create a service account. | `true` |
35+
| `serviceAccount.name` | Name of the service account. | `controller-manager` |
36+
| `podAnnotations` | Annotations for pods. | `{}` |
37+
| `podLabels` | Labels for pods. | `{}` |
38+
| `podSecurityContext.runAsNonRoot` | Run pods as non-root user. | `true` |
39+
| `securityContext.allowPrivilegeEscalation` | Prevent privilege escalation. | `false` |
40+
| `securityContext.capabilities.drop` | Capabilities to drop. | `["ALL"]` |
41+
| `service.type` | Service type. | `ClusterIP` |
42+
| `service.port` | Service port. | `8443` |
43+
| `resources.limits.cpu` | CPU limit. | `500m` |
44+
| `resources.limits.memory` | Memory limit. | `128Mi` |
45+
| `resources.requests.cpu` | CPU request. | `10m` |
46+
| `resources.requests.memory` | Memory request. | `64Mi` |
47+
| `nodeSelector` | Node selector for pods. | `{}` |
48+
| `tolerations` | Tolerations for pod scheduling. | `[]` |
49+
| `affinity` | Affinity rules for pod scheduling.| `{}` |
50+
2351
## Resources
2452

2553
### ExitServer
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"title": "Helm Values Schema",
4+
"type": "object",
5+
"properties": {
6+
"replicaCount": {
7+
"type": "integer",
8+
"default": 1,
9+
"description": "Number of replicas to deploy."
10+
},
11+
"image": {
12+
"type": "object",
13+
"properties": {
14+
"repository": {
15+
"type": "string",
16+
"default": "ghcr.io/aureum-cloud/frp-operator",
17+
"description": "Container image repository."
18+
},
19+
"pullPolicy": {
20+
"type": "string",
21+
"default": "Always",
22+
"description": "Image pull policy."
23+
},
24+
"tag": {
25+
"type": "string",
26+
"default": "",
27+
"description": "Container image tag (empty uses default tag)."
28+
}
29+
},
30+
"required": ["repository", "pullPolicy"]
31+
},
32+
"imagePullSecrets": {
33+
"type": "array",
34+
"items": { "type": "string" },
35+
"default": [],
36+
"description": "List of image pull secrets."
37+
},
38+
"nameOverride": {
39+
"type": "string",
40+
"default": "",
41+
"description": "Override the chart name."
42+
},
43+
"fullnameOverride": {
44+
"type": "string",
45+
"default": "",
46+
"description": "Override the full chart name."
47+
},
48+
"serviceAccount": {
49+
"type": "object",
50+
"properties": {
51+
"create": {
52+
"type": "boolean",
53+
"default": true,
54+
"description": "Whether to create a service account."
55+
},
56+
"name": {
57+
"type": "string",
58+
"default": "controller-manager",
59+
"description": "Name of the service account."
60+
},
61+
"annotations": {
62+
"type": "object",
63+
"additionalProperties": { "type": "string" },
64+
"default": {},
65+
"description": "Annotations for the service account."
66+
}
67+
},
68+
"required": ["create", "name"]
69+
},
70+
"podAnnotations": {
71+
"type": "object",
72+
"additionalProperties": { "type": "string" },
73+
"default": {},
74+
"description": "Annotations for pods."
75+
},
76+
"podLabels": {
77+
"type": "object",
78+
"additionalProperties": { "type": "string" },
79+
"default": {},
80+
"description": "Labels for pods."
81+
},
82+
"podSecurityContext": {
83+
"type": "object",
84+
"properties": {
85+
"runAsNonRoot": {
86+
"type": "boolean",
87+
"default": true,
88+
"description": "Run pods as non-root user."
89+
}
90+
},
91+
"required": ["runAsNonRoot"]
92+
},
93+
"securityContext": {
94+
"type": "object",
95+
"properties": {
96+
"allowPrivilegeEscalation": {
97+
"type": "boolean",
98+
"default": false,
99+
"description": "Prevent privilege escalation."
100+
},
101+
"capabilities": {
102+
"type": "object",
103+
"properties": {
104+
"drop": {
105+
"type": "array",
106+
"items": { "type": "string" },
107+
"default": ["ALL"],
108+
"description": "Capabilities to drop."
109+
}
110+
},
111+
"required": ["drop"]
112+
}
113+
},
114+
"required": ["allowPrivilegeEscalation", "capabilities"]
115+
},
116+
"service": {
117+
"type": "object",
118+
"properties": {
119+
"type": {
120+
"type": "string",
121+
"default": "ClusterIP",
122+
"description": "Service type."
123+
},
124+
"port": {
125+
"type": "integer",
126+
"default": 8443,
127+
"description": "Service port."
128+
}
129+
},
130+
"required": ["type", "port"]
131+
},
132+
"resources": {
133+
"type": "object",
134+
"properties": {
135+
"limits": {
136+
"type": "object",
137+
"properties": {
138+
"cpu": {
139+
"type": "string",
140+
"default": "500m",
141+
"description": "CPU limit."
142+
},
143+
"memory": {
144+
"type": "string",
145+
"default": "128Mi",
146+
"description": "Memory limit."
147+
}
148+
},
149+
"required": ["cpu", "memory"]
150+
},
151+
"requests": {
152+
"type": "object",
153+
"properties": {
154+
"cpu": {
155+
"type": "string",
156+
"default": "10m",
157+
"description": "CPU request."
158+
},
159+
"memory": {
160+
"type": "string",
161+
"default": "64Mi",
162+
"description": "Memory request."
163+
}
164+
},
165+
"required": ["cpu", "memory"]
166+
}
167+
},
168+
"required": ["limits", "requests"]
169+
},
170+
"nodeSelector": {
171+
"type": "object",
172+
"additionalProperties": { "type": "string" },
173+
"default": {},
174+
"description": "Node selector for pods."
175+
},
176+
"tolerations": {
177+
"type": "array",
178+
"items": { "type": "object" },
179+
"default": [],
180+
"description": "Tolerations for pod scheduling."
181+
},
182+
"affinity": {
183+
"type": "object",
184+
"default": {},
185+
"description": "Affinity rules for pod scheduling."
186+
}
187+
},
188+
"required": ["replicaCount", "image", "serviceAccount", "podSecurityContext", "securityContext", "service", "resources"]
189+
}

0 commit comments

Comments
 (0)