Skip to content

Commit 58d01bf

Browse files
committed
feat(k8s/amour): add self signed https gateway
1 parent bc789c9 commit 58d01bf

File tree

11 files changed

+106
-2
lines changed

11 files changed

+106
-2
lines changed

k8s/amour/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,15 @@ cue_library(
7070
name = "cue_amour_library",
7171
srcs = [
7272
"apply_set_list.cue",
73+
"cluster_issuer_list.cue",
7374
"cluster_secret_store_list.cue",
7475
"custom_resource_definition_list.cue",
7576
"gateway_class_list.cue",
7677
],
7778
importpath = "github.com/uhthomas/automata/k8s/amour",
7879
visibility = ["//visibility:public"],
7980
deps = [
81+
"//cue.mod/gen/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1:cue_v1_library",
8082
"//cue.mod/gen/github.com/external-secrets/external-secrets/apis/externalsecrets/v1beta1:cue_v1beta1_library",
8183
"//cue.mod/gen/k8s.io/api/core/v1:cue_v1_library",
8284
"//cue.mod/gen/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1:cue_v1_library",

k8s/amour/cert_manager/BUILD.bazel

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ load("@com_github_tnarg_rules_cue//cue:cue.bzl", "cue_library")
33
cue_library(
44
name = "cue_cert_manager_library",
55
srcs = [
6+
"certificate_list.cue",
7+
"cluster_issuer_list.cue",
68
"cluster_role_binding_list.cue",
79
"cluster_role_list.cue",
810
"config_map_list.cue",
@@ -20,6 +22,8 @@ cue_library(
2022
importpath = "github.com/uhthomas/automata/k8s/amour/cert_manager",
2123
visibility = ["//visibility:public"],
2224
deps = [
25+
"//cue.mod/gen/github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1:cue_v1_library",
26+
"//cue.mod/gen/github.com/cert-manager/cert-manager/pkg/apis/config/controller/v1alpha1:cue_v1alpha1_library",
2327
"//cue.mod/gen/k8s.io/api/admissionregistration/v1:cue_v1_library",
2428
"//cue.mod/gen/k8s.io/api/apps/v1:cue_v1_library",
2529
"//cue.mod/gen/k8s.io/api/core/v1:cue_v1_library",
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package cert_manager
2+
3+
import certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
4+
5+
#CertificateList: certmanagerv1.#CertificateList & {
6+
apiVersion: "cert-manager.io/v1"
7+
kind: "CertificateList"
8+
items: [...{
9+
apiVersion: "cert-manager.io/v1"
10+
kind: "Certificate"
11+
}]
12+
}
13+
14+
#CertificateList: items: [{
15+
metadata: name: "self-signed-ca"
16+
spec: {
17+
dnsNames: ["self-signed-ca"]
18+
secretName: "self-signed-ca"
19+
issuerRef: {
20+
kind: certmanagerv1.#ClusterIssuerKind
21+
name: "self-signed"
22+
}
23+
isCA: true
24+
privateKey: rotationPolicy: "Always"
25+
}
26+
}]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package cert_manager
2+
3+
import certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
4+
5+
#ClusterIssuerList: certmanagerv1.#ClusterIssuerList & {
6+
apiVersion: "cert-manager.io/v1"
7+
kind: "ClusterIssuerList"
8+
items: [...{
9+
apiVersion: "cert-manager.io/v1"
10+
kind: "ClusterIssuer"
11+
}]
12+
}
13+
14+
#ClusterIssuerList: items: [{
15+
metadata: name: "self-signed"
16+
spec: selfSigned: {}
17+
}]

k8s/amour/cert_manager/config_map_list.cue

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package cert_manager
22

3-
import "k8s.io/api/core/v1"
3+
import (
4+
"encoding/yaml"
5+
6+
certmanagercontrollerv1alpha1 "github.com/cert-manager/cert-manager/pkg/apis/config/controller/v1alpha1"
7+
"k8s.io/api/core/v1"
8+
)
49

510
#ConfigMapList: v1.#ConfigMapList & {
611
apiVersion: "v1"
@@ -12,6 +17,16 @@ import "k8s.io/api/core/v1"
1217
}
1318

1419
#ConfigMapList: items: [{
20+
data: "config.yaml": yaml.Marshal(certmanagercontrollerv1alpha1.#ControllerConfiguration & {
21+
apiVersion: "controller.config.cert-manager.io/v1alpha1"
22+
kind: "ControllerConfiguration"
23+
enableGatewayAPI: true
24+
logging: {
25+
flushFrequency: "5s"
26+
verbosity: 2
27+
}
28+
})
29+
}, {
1530
metadata: {
1631
name: "cert-manager-webhook"
1732
labels: {

k8s/amour/cert_manager/deployment_list.cue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ _#FeatureGates: {
107107
}
108108
}
109109
spec: {
110+
volumes: [{
111+
name: "config"
112+
configMap: name: #Name
113+
}]
110114
containers: [{
111115
name: "cert-manager-controller"
112116
image: "quay.io/jetstack/cert-manager-controller:v\(#Version)"
@@ -124,6 +128,7 @@ _#FeatureGates: {
124128
]}
125129
"--feature-gates=\(featureGates.value)"
126130
},
131+
"--config=/var/cert-manager/config/config.yaml",
127132
]
128133
ports: [{
129134
name: "http-metrics"
@@ -136,6 +141,10 @@ _#FeatureGates: {
136141
name: "POD_NAMESPACE"
137142
valueFrom: fieldRef: fieldPath: "metadata.namespace"
138143
}]
144+
volumeMounts: [{
145+
name: "config"
146+
mountPath: "/var/cert-manager/config"
147+
}]
139148
// LivenessProbe settings are based on those used for the Kubernetes
140149
// controller-manager. See:
141150
// https://github.com/kubernetes/kubernetes/blob/806b30170c61a38fedd54cc9ede4cd6275a1ad3b/cmd/kubeadm/app/util/staticpod/utils.go#L241-L245

k8s/amour/cert_manager/list.cue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
#List: items: list.Concat(_items)
2929

3030
_items: [
31+
#CertificateList.items,
3132
#ClusterRoleBindingList.items,
3233
#ClusterRoleList.items,
3334
#ConfigMapList.items,

k8s/amour/cilium/envoy/daemon_set_list.cue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ import (
7474
image: "quay.io/cilium/cilium-envoy:v\(#Version)"
7575
command: ["/usr/bin/cilium-envoy-starter"]
7676
args: [
77+
"--keep-cap-net-bind-service",
7778
"--",
7879
"-c /var/run/cilium/envoy/bootstrap-config.json",
7980
"--base-id 0",
@@ -154,7 +155,7 @@ import (
154155
level: "s0"
155156
}
156157
capabilities: {
157-
add: ["NET_ADMIN", "SYS_ADMIN"]
158+
add: ["NET_ADMIN", "NET_BIND_SERVICE", "SYS_ADMIN"]
158159
drop: ["ALL"]
159160
}
160161
}

k8s/amour/cluster_issuer_list.cue

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package amour
2+
3+
import certmanagerv1 "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
4+
5+
#ClusterIssuerList: certmanagerv1.#ClusterIssuerList & {
6+
apiVersion: "cert-manager.io/v1"
7+
kind: "ClusterIssuerList"
8+
items: [...{
9+
apiVersion: "cert-manager.io/v1"
10+
kind: "ClusterIssuer"
11+
}]
12+
}
13+
14+
#ClusterIssuerList: items: [{
15+
metadata: name: "self-signed"
16+
spec: selfSigned: {}
17+
}, {
18+
metadata: name: "self-signed-ca"
19+
spec: ca: secretName: "self-signed-ca"
20+
}]

k8s/amour/grafana/gateway_list.cue

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,20 @@ import gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
1212
}
1313

1414
#GatewayList: items: [{
15+
metadata: annotations: "cert-manager.io/cluster-issuer": "self-signed-ca"
1516
spec: {
1617
gatewayClassName: "cilium"
1718
listeners: [{
1819
name: "http"
20+
hostname: "grafana-amour.hipparcos.net"
1921
port: 80
2022
protocol: gatewayv1.#HTTPProtocolType
23+
}, {
24+
name: "https"
25+
hostname: "grafana-amour.hipparcos.net"
26+
port: 443
27+
protocol: gatewayv1.#HTTPSProtocolType
28+
tls: certificateRefs: [{name: "\(#Name)-tls"}]
2129
}]
2230
}
2331
}]

0 commit comments

Comments
 (0)