Skip to content

Commit de284c3

Browse files
committed
feat(controller): use gateway replace ingress
1 parent ff11510 commit de284c3

39 files changed

Lines changed: 1151 additions & 982 deletions

charts/controller/templates/_helpers.tpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
env:
44
- name: REGISTRATION_MODE
55
value: {{ .Values.registrationMode }}
6-
# Environmental variable value for $INGRESS_CLASS
7-
- name: "DRYCC_INGRESS_CLASS"
8-
value: "{{ .Values.global.ingressClass }}"
6+
# Environmental variable value for $GATEWAY_CLASS
7+
- name: "DRYCC_GATEWAY_CLASS"
8+
value: "{{ .Values.global.gatewayClass }}"
99
- name: "DRYCC_PLATFORM_DOMAIN"
1010
value: "{{ .Values.global.platformDomain }}"
1111
- name: "K8S_API_VERIFY_TLS"

charts/controller/templates/controller-certificate.yaml

Lines changed: 0 additions & 15 deletions
This file was deleted.

charts/controller/templates/controller-clusterrole.yaml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ rules:
1212
verbs: ["get", "list", "create", "delete"]
1313
- apiGroups: [""]
1414
resources: ["services"]
15-
verbs: ["get", "list", "create", "update", "delete"]
15+
verbs: ["get", "list", "create", "patch", "update", "delete"]
1616
- apiGroups: [""]
1717
resources: ["nodes"]
1818
verbs: ["get", "list"]
@@ -21,7 +21,7 @@ rules:
2121
verbs: ["list", "create"]
2222
- apiGroups: [""]
2323
resources: ["secrets"]
24-
verbs: ["list", "get", "create", "update", "delete"]
24+
verbs: ["list", "get", "create", "patch", "update", "delete"]
2525
- apiGroups: [""]
2626
resources: ["replicationcontrollers"]
2727
verbs: ["get", "list", "create", "update", "delete"]
@@ -79,7 +79,8 @@ rules:
7979
- apiGroups: ["servicecatalog.k8s.io"]
8080
resources: ["serviceinstances", "servicebindings"]
8181
verbs: ["get", "list", "watch", "create", "delete", "patch", "update"]
82-
- apiGroups: ["traefik.containo.us"]
83-
resources: ["middlewares"]
84-
verbs: ["get", "list", "watch", "create", "delete", "patch", "update"]
82+
- apiGroups: ["gateway.networking.k8s.io"]
83+
resources: ["gateways", "httproutes", "grocroutes", "tcproutes", "udproutes", "tlsroutes"]
84+
verbs: ["get", "patch", "list", "create", "update", "delete"]
8585
{{- end -}}
86+

charts/controller/templates/controller-ingress.yaml

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
apiVersion: gateway.networking.k8s.io/v1beta1
2+
kind: HTTPRoute
3+
metadata:
4+
name: controller-api-server
5+
labels:
6+
app: "controller"
7+
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
8+
release: "{{ .Release.Name }}"
9+
heritage: "{{ .Release.Service }}"
10+
spec:
11+
hostnames:
12+
- drycc.{{ .Values.global.platformDomain }}
13+
parentRefs:
14+
- group: gateway.networking.k8s.io
15+
kind: Gateway
16+
name: drycc-gateway
17+
sectionName: drycc-gateway-listener-http
18+
{{- if .Values.global.certManagerEnabled }}
19+
- group: gateway.networking.k8s.io
20+
kind: Gateway
21+
name: drycc-gateway
22+
sectionName: drycc-gateway-listener-https
23+
{{- end }}
24+
rules:
25+
- matches:
26+
- path:
27+
type: PathPrefix
28+
value: /
29+
backendRefs:
30+
- name: drycc-controller-api
31+
port: 80
32+

charts/controller/values.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ global:
163163
registrySecretPrefix: "private-registry"
164164
# Role-Based Access Control for Kubernetes >= 1.5
165165
rbac: false
166+
# GatewayClass is cluster-scoped resource defined by the infrastructure provider.
167+
gatewayClass: ""
166168
# Please check `kubernetes.io/ingress.class`
167169
ingressClass: ""
168170
# A domain name consists of one or more parts.

rootfs/api/exceptions.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ def custom_exception_handler(exc, context):
3636
if isinstance(exc, Http404):
3737
set_rollback()
3838
return Response(str(exc), status=status.HTTP_404_NOT_FOUND)
39-
4039
# Call REST framework's default exception handler after specific 404 handling,
4140
# to get the standard error response.
4241
response = exception_handler(exc, context)

rootfs/api/fixtures/test_sharing.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"groups": [],
1414
"user_permissions": [],
1515
"password": "pbkdf2_sha256$10000$SLr4X1T9L3QA$NB4d4a0d+3NZuAwLbdnKGb2z3P/hQrKQHVaGG3zAaMw=",
16-
"email": "autotest@drycc.cc",
16+
"email": "autotest-1@drycc.cc",
1717
"date_joined": "2013-11-25T21:58:46.208Z"
1818
}
1919
},
@@ -31,7 +31,7 @@
3131
"groups": [],
3232
"user_permissions": [],
3333
"password": "pbkdf2_sha256$10000$FrfwTVAtWPMD$HUfDokMeY37YshdyS3uhDZ+d/r8galU7kNuBfZxJl2s=",
34-
"email": "autotest@drycc.cc",
34+
"email": "autotest-2@drycc.cc",
3535
"date_joined": "2013-11-25T21:59:30.760Z"
3636
}
3737
},
@@ -49,7 +49,7 @@
4949
"groups": [],
5050
"user_permissions": [],
5151
"password": "pbkdf2_sha256$10000$FrfwTVAtWPMD$HUfDokMeY37YshdyS3uhDZ+d/r8galU7kNuBfZxJl2s=",
52-
"email": "autotest@drycc.cc",
52+
"email": "autotest-3@drycc.cc",
5353
"date_joined": "2013-11-25T21:59:30.760Z"
5454
}
5555
},

rootfs/api/migrations/0001_initial.py

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Generated by Django 4.1.7 on 2023-03-17 08:18
1+
# Generated by Django 4.1.7 on 2023-05-05 03:32
22

33
import api.models.app
44
import api.models.certificate
@@ -185,6 +185,7 @@ class Migration(migrations.Migration):
185185
('uuid', models.UUIDField(auto_created=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, verbose_name='UUID')),
186186
('created', models.DateTimeField(auto_now_add=True)),
187187
('updated', models.DateTimeField(auto_now=True)),
188+
('issuer', models.JSONField(default={'email': 'anonymous@cert-manager.io', 'key_id': '', 'key_secret': '', 'server': 'https://acme-v02.api.letsencrypt.org/directory'})),
188189
('https_enforced', models.BooleanField(null=True)),
189190
('certs_auto_enabled', models.BooleanField(null=True)),
190191
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.app')),
@@ -202,8 +203,7 @@ class Migration(migrations.Migration):
202203
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
203204
('created', models.DateTimeField(auto_now_add=True)),
204205
('updated', models.DateTimeField(auto_now=True)),
205-
('port', models.PositiveIntegerField(default=5000)),
206-
('protocol', models.TextField(default='TCP')),
206+
('ports', models.JSONField(default=list)),
207207
('procfile_type', models.TextField()),
208208
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.app')),
209209
('owner', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
@@ -214,6 +214,28 @@ class Migration(migrations.Migration):
214214
'unique_together': {('app', 'procfile_type')},
215215
},
216216
),
217+
migrations.CreateModel(
218+
name='Route',
219+
fields=[
220+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
221+
('created', models.DateTimeField(auto_now_add=True)),
222+
('updated', models.DateTimeField(auto_now=True)),
223+
('kind', models.CharField(choices=[('TLSRoute', 'TCP'), ('TCPRoute', 'TCP'), ('UDPRoute', 'UDP'), ('GRPCRoute', 'HTTPS'), ('HTTPRoute', 'HTTP/HTTPS')], max_length=15)),
224+
('name', models.CharField(db_index=True, max_length=63)),
225+
('port', models.PositiveIntegerField()),
226+
('rules', models.JSONField(default=list)),
227+
('routable', models.BooleanField(default=True)),
228+
('parent_refs', models.JSONField(default=list)),
229+
('procfile_type', models.TextField()),
230+
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.app')),
231+
('owner', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
232+
],
233+
options={
234+
'ordering': ['-created'],
235+
'get_latest_by': 'created',
236+
'unique_together': {('app', 'name')},
237+
},
238+
),
217239
migrations.CreateModel(
218240
name='Resource',
219241
fields=[
@@ -273,13 +295,30 @@ class Migration(migrations.Migration):
273295
'unique_together': {('owner', 'fingerprint')},
274296
},
275297
),
298+
migrations.CreateModel(
299+
name='Gateway',
300+
fields=[
301+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
302+
('created', models.DateTimeField(auto_now_add=True)),
303+
('updated', models.DateTimeField(auto_now=True)),
304+
('name', models.CharField(db_index=True, max_length=63)),
305+
('ports', models.JSONField(default=list)),
306+
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.app')),
307+
('owner', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
308+
],
309+
options={
310+
'ordering': ['-created'],
311+
'get_latest_by': 'created',
312+
'unique_together': {('app', 'name')},
313+
},
314+
),
276315
migrations.CreateModel(
277316
name='AppSettings',
278317
fields=[
279318
('uuid', models.UUIDField(auto_created=True, default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True, verbose_name='UUID')),
280319
('created', models.DateTimeField(auto_now_add=True)),
281320
('updated', models.DateTimeField(auto_now=True)),
282-
('routable', models.BooleanField(null=True)),
321+
('routable', models.BooleanField(default=True)),
283322
('autoscale', models.JSONField(blank=True, default=dict)),
284323
('label', models.JSONField(blank=True, default=dict)),
285324
('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.app')),
@@ -292,3 +331,4 @@ class Migration(migrations.Migration):
292331
},
293332
),
294333
]
334+

0 commit comments

Comments
 (0)