Skip to content

Commit fe528f1

Browse files
committed
feat: add support for helm chart
1 parent 418edc0 commit fe528f1

File tree

10 files changed

+344
-0
lines changed

10 files changed

+344
-0
lines changed

charts/Chart.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: v2
2+
name: api7-ingress-controller-manager
3+
description: Api7 Ingress Controller for Kubernetes
4+
icon: https://apache.org/logos/res/apisix/apisix.png
5+
keywords:
6+
- ingress
7+
- apisix
8+
- nginx
9+
- crd
10+
type: application
11+
version: 0.1.0
12+
appVersion: 2.0.0
13+
sources:
14+
- https://github.com/api7/api7-ingress-controller
15+
maintainers:
16+
- name: AlinsRan
17+
- name: Revolyssup
18+
19+
# ref: https://artifacthub.io/docs/topics/annotations/helm/
20+
annotations:
21+
artifacthub.io/prerelease: "true"

charts/templates/cluster_role.yaml

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRole
3+
metadata:
4+
name: api7-ingress-manager-role
5+
rules:
6+
- apiGroups:
7+
- ""
8+
resources:
9+
- events
10+
verbs:
11+
- create
12+
- patch
13+
- apiGroups:
14+
- ""
15+
resources:
16+
- services
17+
verbs:
18+
- get
19+
- list
20+
- watch
21+
- apiGroups:
22+
- ""
23+
resources:
24+
- secrets
25+
verbs:
26+
- get
27+
- list
28+
- watch
29+
- apiGroups:
30+
- ""
31+
resources:
32+
- namespaces
33+
verbs:
34+
- get
35+
- list
36+
- watch
37+
- apiGroups:
38+
- coordination.k8s.io
39+
resources:
40+
- leases
41+
verbs:
42+
- create
43+
- delete
44+
- get
45+
- list
46+
- patch
47+
- update
48+
- watch
49+
- apiGroups:
50+
- discovery.k8s.io
51+
resources:
52+
- endpointslices
53+
verbs:
54+
- get
55+
- list
56+
- watch
57+
- apiGroups:
58+
- gateway.networking.k8s.io
59+
resources:
60+
- gatewayclasses
61+
verbs:
62+
- get
63+
- list
64+
- update
65+
- watch
66+
- apiGroups:
67+
- gateway.networking.k8s.io
68+
resources:
69+
- gatewayclasses/status
70+
verbs:
71+
- get
72+
- update
73+
- apiGroups:
74+
- gateway.networking.k8s.io
75+
resources:
76+
- gateways
77+
verbs:
78+
- get
79+
- list
80+
- update
81+
- watch
82+
- apiGroups:
83+
- gateway.networking.k8s.io
84+
resources:
85+
- gateways/status
86+
verbs:
87+
- get
88+
- update
89+
- apiGroups:
90+
- gateway.networking.k8s.io
91+
resources:
92+
- httproutes
93+
verbs:
94+
- get
95+
- list
96+
- watch
97+
- apiGroups:
98+
- gateway.networking.k8s.io
99+
resources:
100+
- httproutes/status
101+
verbs:
102+
- get
103+
- update
104+
105+
---
106+
apiVersion: rbac.authorization.k8s.io/v1
107+
kind: ClusterRole
108+
metadata:
109+
name: api7-ingress-metrics-auth-role
110+
rules:
111+
- apiGroups:
112+
- authentication.k8s.io
113+
resources:
114+
- tokenreviews
115+
verbs:
116+
- create
117+
- apiGroups:
118+
- authorization.k8s.io
119+
resources:
120+
- subjectaccessreviews
121+
verbs:
122+
- create
123+
---
124+
apiVersion: rbac.authorization.k8s.io/v1
125+
kind: ClusterRole
126+
metadata:
127+
name: api7-ingress-metrics-reader
128+
rules:
129+
- nonResourceURLs:
130+
- /metrics
131+
verbs:
132+
- get
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
labels:
5+
app.kubernetes.io/name: api7-ingress
6+
name: api7-ingress-manager-rolebinding
7+
roleRef:
8+
apiGroup: rbac.authorization.k8s.io
9+
kind: ClusterRole
10+
name: api7-ingress-manager-role
11+
subjects:
12+
- kind: ServiceAccount
13+
name: {{ .Release.Name }}
14+
namespace: {{ .Values.namespace }}
15+
---
16+
apiVersion: rbac.authorization.k8s.io/v1
17+
kind: ClusterRoleBinding
18+
metadata:
19+
name: api7-ingress-metrics-auth-rolebinding
20+
roleRef:
21+
apiGroup: rbac.authorization.k8s.io
22+
kind: ClusterRole
23+
name: api7-ingress-metrics-auth-role
24+
subjects:
25+
- kind: ServiceAccount
26+
name: {{ .Release.Name }}
27+
namespace: {{ .Values.namespace }}

charts/templates/configmap.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: ingress-config
5+
data:
6+
config.yaml: |
7+
log_level: "debug"
8+
9+
controller_name: {{ .Values.controllerName | default "gateway.api7.io/api7-ingress-controller" }}
10+
11+
leader_election_id: "api7-ingress-controller-leader"
12+
13+
gateway_configs:
14+
- name: "api7ee"
15+
control_plane:
16+
admin_key: "{{ .Values.admin.key }}"
17+
endpoints:
18+
- "{{ .Values.adminEnpoint }}"
19+
tls_verify: {{ .Values.adminTLSVerify }}
20+
addresses: # record the status address of the gateway-api gateway
21+
- "{{ .Values.statusAddress }}"

charts/templates/deployment.yaml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
labels:
5+
app.kubernetes.io/name: api7-ingress
6+
control-plane: controller-manager
7+
name: {{ .Release.Name }}
8+
namespace: {{ .Values.namespace }}
9+
spec:
10+
replicas: 1
11+
selector:
12+
matchLabels:
13+
control-plane: controller-manager
14+
template:
15+
metadata:
16+
annotations:
17+
kubectl.kubernetes.io/default-container: manager
18+
labels:
19+
control-plane: controller-manager
20+
spec:
21+
containers:
22+
- image: api7/api7-ingress-controller:dev
23+
volumeMounts:
24+
- name: ingress-config
25+
mountPath: /app/conf/config.yaml
26+
subPath: config.yaml
27+
livenessProbe:
28+
httpGet:
29+
path: /healthz
30+
port: 8081
31+
initialDelaySeconds: 15
32+
periodSeconds: 20
33+
name: manager
34+
readinessProbe:
35+
httpGet:
36+
path: /readyz
37+
port: 8081
38+
initialDelaySeconds: 5
39+
periodSeconds: 10
40+
resources:
41+
limits:
42+
cpu: 500m
43+
memory: 128Mi
44+
requests:
45+
cpu: 10m
46+
memory: 64Mi
47+
securityContext:
48+
allowPrivilegeEscalation: false
49+
capabilities:
50+
drop:
51+
- ALL
52+
volumes:
53+
- name: ingress-config
54+
configMap:
55+
name: ingress-config
56+
securityContext:
57+
runAsNonRoot: true
58+
serviceAccountName: {{ .Release.Name }}
59+
terminationGracePeriodSeconds: 10

charts/templates/role.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: Role
3+
metadata:
4+
labels:
5+
app.kubernetes.io/name: api7-ingress
6+
name: api7-ingress-leader-election-role
7+
namespace: {{ .Values.namespace }}
8+
rules:
9+
- apiGroups:
10+
- ""
11+
resources:
12+
- configmaps
13+
verbs:
14+
- get
15+
- list
16+
- watch
17+
- create
18+
- update
19+
- patch
20+
- delete
21+
- apiGroups:
22+
- coordination.k8s.io
23+
resources:
24+
- leases
25+
verbs:
26+
- get
27+
- list
28+
- watch
29+
- create
30+
- update
31+
- patch
32+
- delete
33+
- apiGroups:
34+
- ""
35+
resources:
36+
- events
37+
verbs:
38+
- create
39+
- patch

charts/templates/role_binding.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: RoleBinding
3+
metadata:
4+
labels:
5+
app.kubernetes.io/name: api7-ingress
6+
name: api7-ingress-leader-election-rolebinding
7+
namespace: {{ .Values.namespace }}
8+
roleRef:
9+
apiGroup: rbac.authorization.k8s.io
10+
kind: Role
11+
name: api7-ingress-leader-election-role
12+
subjects:
13+
- kind: ServiceAccount
14+
name: {{ .Release.Name }}
15+
namespace: {{ .Values.namespace }}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
labels:
5+
app.kubernetes.io/name: api7-ingress
6+
name: {{ .Release.Name }}
7+
namespace: {{ .Values.namespace }}

charts/templates/service.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
labels:
5+
app.kubernetes.io/name: api7-ingress
6+
control-plane: controller-manager
7+
name: {{ .Release.Name }}-metrics-service
8+
namespace: {{ .Values.namespace }}
9+
spec:
10+
ports:
11+
- name: https
12+
port: 8443
13+
protocol: TCP
14+
targetPort: 8443
15+
selector:
16+
control-plane: controller-manager

charts/values.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
controllerName: gateway.api7.io/api7-ingress-controller
2+
admin:
3+
key: '' # Pass the admin key generated for the ingress gateway group
4+
adminTLSVerify: false
5+
adminEndpoint: https://api7ee3-dashboard.api7-ee-e2e:7443/apisix/admin
6+
namespace: ingress-apisix
7+
statusAddress: ''

0 commit comments

Comments
 (0)