Skip to content

Commit 00443eb

Browse files
authored
Addopt helm charts for remote use case (#194)
* Addopt helm charts for remote use case * Fix make helm * Add check codegen workflow * Fix indentation * Add ports to manager * Quote env vars
1 parent f0ff40b commit 00443eb

File tree

10 files changed

+117
-8
lines changed

10 files changed

+117
-8
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Check Codegen
2+
3+
on:
4+
pull_request:
5+
paths-ignore:
6+
- 'docs/**'
7+
- '**/*.md'
8+
9+
jobs:
10+
check-codegen:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: actions/setup-go@v5
15+
with:
16+
go-version-file: 'go.mod'
17+
- name: Run make generate
18+
run: make generate
19+
- name: Run make docs
20+
run: make docs
21+
- name: Run make helm
22+
run: make helm
23+
- name: Compare the expected and actual generated/* directories
24+
run: |
25+
if [ "$(git diff | wc -l)" -gt "0" ]; then
26+
echo "Detected uncommitted changes after build. Consider running 'make generate && make docs && make helm'."
27+
echo "See status below:"
28+
git diff
29+
exit 1
30+
fi

.github/workflows/publish-chart.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ jobs:
5555
fi
5656
echo "version=$CHART_VERSION" >> $GITHUB_OUTPUT
5757
58+
- name: Package Helm chart with crds folder in template
59+
run: |
60+
helm package dist/chart --version ${{ steps.chart_version.outputs.version }}-crds
61+
5862
- name: Install Kustomize
5963
run: |
6064
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
@@ -66,7 +70,7 @@ jobs:
6670
kustomize build config/default | yq ea 'select(.kind == "CustomResourceDefinition")' > dist/chart/crds/crds.yaml
6771
rm -rf dist/chart/templates/crd
6872
69-
- name: Package Helm chart
73+
- name: Package Helm chart with removed crds folder from template folder
7074
run: |
7175
helm package dist/chart --version ${{ steps.chart_version.outputs.version }}
7276
@@ -77,3 +81,4 @@ jobs:
7781
- name: Push Helm chart to GHCR
7882
run: |
7983
helm push boot-operator-${{ steps.chart_version.outputs.version }}.tgz oci://ghcr.io/${{ github.repository_owner }}/charts
84+
helm push boot-operator-${{ steps.chart_version.outputs.version }}-crds.tgz oci://ghcr.io/${{ github.repository_owner }}/charts

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ GOLANGCI_LINT = $(LOCALBIN)/golangci-lint
191191
ADDLICENSE ?= $(LOCALBIN)/addlicense
192192
GOIMPORTS ?= $(LOCALBIN)/goimports
193193
GEN_CRD_API_REFERENCE_DOCS ?= $(LOCALBIN)/gen-crd-api-reference-docs
194-
KUBEBUILDER ?= $(LOCALBIN)/kubebuilder-$(KUBEBUILDER_VERSION)
194+
KUBEBUILDER ?= $(LOCALBIN)/kubebuilder
195195

196196
## Tool Versions
197197
KUSTOMIZE_VERSION ?= v5.5.0

dist/chart/templates/crd/boot.ironcore.dev_httpbootconfigs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ metadata:
99
{{- if .Values.crd.keep }}
1010
"helm.sh/resource-policy": keep
1111
{{- end }}
12-
controller-gen.kubebuilder.io/version: v0.16.0
12+
controller-gen.kubebuilder.io/version: v0.17.1
1313
name: httpbootconfigs.boot.ironcore.dev
1414
spec:
1515
group: boot.ironcore.dev

dist/chart/templates/crd/boot.ironcore.dev_ipxebootconfigs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ metadata:
99
{{- if .Values.crd.keep }}
1010
"helm.sh/resource-policy": keep
1111
{{- end }}
12-
controller-gen.kubebuilder.io/version: v0.16.0
12+
controller-gen.kubebuilder.io/version: v0.17.1
1313
name: ipxebootconfigs.boot.ironcore.dev
1414
spec:
1515
group: boot.ironcore.dev

dist/chart/templates/manager/manager.yaml

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{- if .Values.controllerManager.enable }}
12
apiVersion: apps/v1
23
kind: Deployment
34
metadata:
@@ -7,7 +8,7 @@ metadata:
78
{{- include "chart.labels" . | nindent 4 }}
89
control-plane: controller-manager
910
spec:
10-
replicas: {{ .Values.controllerManager.replicas }}
11+
replicas: {{ .Values.controllerManager.replicas }}
1112
strategy:
1213
type: {{ .Values.controllerManager.strategy.type | quote }}
1314
selector:
@@ -40,7 +41,15 @@ spec:
4041
env:
4142
{{- range $key, $value := .Values.controllerManager.manager.env }}
4243
- name: {{ $key }}
43-
value: {{ $value }}
44+
value: {{ $value | quote }}
45+
{{- end }}
46+
{{- end }}
47+
{{- if .Values.controllerManager.manager.ports }}
48+
ports:
49+
{{- range $port := .Values.controllerManager.manager.ports }}
50+
- name: {{ $port.name }}
51+
containerPort: {{ $port.containerPort }}
52+
protocol: {{ $port.protocol | default "TCP" }}
4453
{{- end }}
4554
{{- end }}
4655
livenessProbe:
@@ -51,28 +60,42 @@ spec:
5160
{{- toYaml .Values.controllerManager.manager.resources | nindent 12 }}
5261
securityContext:
5362
{{- toYaml .Values.controllerManager.manager.containerSecurityContext | nindent 12 }}
54-
{{- if and .Values.certmanager.enable (or .Values.webhook.enable .Values.metrics.enable) }}
63+
{{- if or (and .Values.certmanager.enable (or .Values.webhook.enable .Values.metrics.enable))
64+
.Values.controllerManager.manager.volumes }}
5565
volumeMounts:
5666
{{- if and .Values.metrics.enable .Values.certmanager.enable }}
5767
- name: metrics-certs
5868
mountPath: /tmp/k8s-metrics-server/metrics-certs
5969
readOnly: true
6070
{{- end }}
71+
{{- range $volume := .Values.controllerManager.manager.volumes }}
72+
- name: {{ $volume.name }}
73+
mountPath: {{ $volume.mountPath }}
74+
{{- if $volume.readOnly }}
75+
readOnly: true
76+
{{- end }}
77+
{{- end }}
6178
{{- end }}
6279
securityContext:
6380
{{- toYaml .Values.controllerManager.podSecurityContext | nindent 8 }}
6481
serviceAccountName: {{ .Values.controllerManager.serviceAccountName }}
6582
hostNetwork: {{ .Values.controllerManager.hostNetwork }}
6683
terminationGracePeriodSeconds: {{ .Values.controllerManager.terminationGracePeriodSeconds }}
67-
{{- if and .Values.certmanager.enable (or .Values.webhook.enable .Values.metrics.enable) }}
84+
{{- if or (and .Values.certmanager.enable (or .Values.webhook.enable .Values.metrics.enable))
85+
.Values.controllerManager.manager.volumes }}
6886
volumes:
6987
{{- if and .Values.metrics.enable .Values.certmanager.enable }}
7088
- name: metrics-certs
7189
secret:
7290
secretName: metrics-server-cert
7391
{{- end }}
92+
{{- range $volume := .Values.controllerManager.manager.volumes }}
93+
- name: {{ $volume.name }}
94+
{{- toYaml $volume.source | nindent 10 }}
95+
{{- end }}
7496
{{- end }}
7597
{{- if .Values.controllerManager.tolerations }}
7698
tolerations:
7799
{{- toYaml .Values.controllerManager.tolerations | nindent 8 }}
78100
{{- end }}
101+
{{- end }}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{{- if and .Values.rbac.enable .Values.metrics.enable }}
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
kind: ClusterRole
4+
metadata:
5+
labels:
6+
{{- include "chart.labels" . | nindent 4 }}
7+
name: boot-operator-metrics-auth-role
8+
rules:
9+
- apiGroups:
10+
- authentication.k8s.io
11+
resources:
12+
- tokenreviews
13+
verbs:
14+
- create
15+
- apiGroups:
16+
- authorization.k8s.io
17+
resources:
18+
- subjectaccessreviews
19+
verbs:
20+
- create
21+
{{- end -}}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{{- if and .Values.rbac.enable .Values.metrics.enable }}
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
kind: ClusterRoleBinding
4+
metadata:
5+
labels:
6+
{{- include "chart.labels" . | nindent 4 }}
7+
name: boot-operator-metrics-auth-rolebinding
8+
roleRef:
9+
apiGroup: rbac.authorization.k8s.io
10+
kind: ClusterRole
11+
name: boot-operator-metrics-auth-role
12+
subjects:
13+
- kind: ServiceAccount
14+
name: {{ .Values.controllerManager.serviceAccountName }}
15+
namespace: {{ .Release.Namespace }}
16+
{{- end -}}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{{- if and .Values.rbac.enable .Values.metrics.enable }}
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
kind: ClusterRole
4+
metadata:
5+
labels:
6+
{{- include "chart.labels" . | nindent 4 }}
7+
name: boot-operator-metrics-reader
8+
rules:
9+
- nonResourceURLs:
10+
- "/metrics"
11+
verbs:
12+
- get
13+
{{- end -}}

dist/chart/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# [MANAGER]: Manager Deployment Configurations
22
controllerManager:
3+
enable: true
34
replicas: 1
45
manager:
56
image:

0 commit comments

Comments
 (0)