Skip to content

Commit 3e103af

Browse files
committed
MAJOR: crd: add job for custom resource definition handling
CRDs are not properly handled with external tools, Helm and similar options cannot handle upgrading of custom resource definitions
1 parent dce3c3d commit 3e103af

18 files changed

+333
-16
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ kubernetes-ingress
44
dist/
55
.code-generator/
66
bin/golangci-lint
7+
.local/*

crs/definition/embed.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package definition
2+
3+
import _ "embed"
4+
5+
//go:embed defaults.core.haproxy.org.yaml
6+
var DefaultsV1alpha2 []byte
7+
8+
//go:embed globals.core.haproxy.org.yaml
9+
var GlobalsV1alpha2 []byte
10+
11+
//go:embed backends.core.haproxy.org.yaml
12+
var BackendsV1alpha2 []byte
13+
14+
//go:embed upgrade/defaults.core.haproxy.org.yaml
15+
var DefaultsV1alpha1V1alpha2 []byte
16+
17+
//go:embed upgrade/globals.core.haproxy.org.yaml
18+
var GlobalsV1alpha1V1alpha2 []byte
19+
20+
//go:embed upgrade/backends.core.haproxy.org.yaml
21+
var BackendsV1alpha1V1alpha2 []byte
22+
23+
func GetCRDs() map[string][]byte {
24+
return map[string][]byte{
25+
"defaults.core.haproxy.org": DefaultsV1alpha2,
26+
"globals.core.haproxy.org": GlobalsV1alpha2,
27+
"backends.core.haproxy.org": BackendsV1alpha2,
28+
}
29+
}
30+
31+
func GetCRDsUpgrade() map[string][]byte {
32+
return map[string][]byte{
33+
"defaults.core.haproxy.org": DefaultsV1alpha1V1alpha2,
34+
"globals.core.haproxy.org": GlobalsV1alpha1V1alpha2,
35+
"backends.core.haproxy.org": BackendsV1alpha1V1alpha2,
36+
}
37+
}

deploy/tests/config/crd/job-crd.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
apiVersion: batch/v1
2+
kind: Job
3+
metadata:
4+
name: haproxy-ingress-crd # each deploymnent should have a unique name, in example we always recreate the custer
5+
namespace: haproxy-controller
6+
spec:
7+
template:
8+
spec:
9+
serviceAccountName: haproxy-kubernetes-ingress-crd
10+
containers:
11+
- name: haproxy-ingress-crd
12+
image: haproxytech/kubernetes-ingress:latest
13+
imagePullPolicy: Never
14+
command: ["./haproxy-ingress-controller","--job-check-crd"]
15+
restartPolicy: Never
16+
backoffLimit: 0

deploy/tests/config/crd/rbac.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
name: haproxy-kubernetes-ingress-crd
6+
namespace: haproxy-controller
7+
---
8+
kind: ClusterRole
9+
apiVersion: rbac.authorization.k8s.io/v1
10+
metadata:
11+
name: haproxy-kubernetes-ingress-crd
12+
rules:
13+
- apiGroups:
14+
- "apiextensions.k8s.io"
15+
resources:
16+
- customresourcedefinitions
17+
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
18+
---
19+
kind: ClusterRoleBinding
20+
apiVersion: rbac.authorization.k8s.io/v1
21+
metadata:
22+
name: haproxy-kubernetes-ingress-crd
23+
namespace: haproxy-controller
24+
roleRef:
25+
apiGroup: rbac.authorization.k8s.io
26+
kind: ClusterRole
27+
name: haproxy-kubernetes-ingress-crd
28+
subjects:
29+
- kind: ServiceAccount
30+
name: haproxy-kubernetes-ingress-crd
31+
namespace: haproxy-controller

0 commit comments

Comments
 (0)