Skip to content

Commit aa7c873

Browse files
emosbaughlaverya
andauthored
feat: ability to upgrade the cluster (#218)
* feat: ability to upgrade the cluster using the binary --------- Co-authored-by: Andrew Lavery <laverya@umich.edu>
1 parent 8779eb7 commit aa7c873

35 files changed

+3451
-1774
lines changed

.github/workflows/deploy-helm-production.yaml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,14 @@ jobs:
5252
env:
5353
HELM_USER: ${{secrets.KOTS_HELM_USER_PROD}}
5454
HELM_PASS: ${{secrets.KOTS_HELM_PASS_PROD}}
55+
HELM_REGISTRY: registry.replicated.com
5556
CHART_VERSION: ${{steps.tag.outputs.tag}}
5657
run: |
57-
export OPERATOR_VERSION=${CHART_VERSION%-*}
58-
export OPERATOR_TAG=${OPERATOR_VERSION}
59-
export OPERATOR_REGISTRY=registry.replicated.com
58+
export OPERATOR_IMAGE_NAME=registry.replicated.com/library/embedded-cluster-operator-image
59+
export OPERATOR_IMAGE_TAG=${CHART_VERSION}
60+
export CHART_REMOTE=oci://registry.replicated.com/library
6061
61-
envsubst < Chart.yaml.tmpl > Chart.yaml
62-
envsubst < values.yaml.tmpl > values.yaml
63-
rm -f *.tmpl
64-
65-
export CHART_NAME=`helm package . | rev | cut -d/ -f1 | rev`
66-
echo pushing ${CHART_NAME} to production
67-
helm registry login registry.replicated.com --username $HELM_USER --password $HELM_PASS
68-
helm push $CHART_NAME oci://registry.replicated.com/library
62+
../../scripts/publish-helm-chart.sh
6963
7064
releaser:
7165
runs-on: ubuntu-latest

.github/workflows/deploy-helm-staging.yaml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,11 @@ jobs:
5252
env:
5353
HELM_USER: ${{secrets.KOTS_HELM_USER_STAGING}}
5454
HELM_PASS: ${{secrets.KOTS_HELM_PASS_STAGING}}
55+
HELM_REGISTRY: registry.staging.replicated.com
5556
CHART_VERSION: ${{steps.tag.outputs.tag}}
5657
run: |
57-
export OPERATOR_VERSION=${CHART_VERSION%-*}
58-
export OPERATOR_TAG=${OPERATOR_VERSION}
59-
export OPERATOR_REGISTRY=registry.staging.replicated.com
58+
export OPERATOR_IMAGE_NAME=registry.staging.replicated.com/library/embedded-cluster-operator-image
59+
export OPERATOR_IMAGE_TAG=${CHART_VERSION}
60+
export CHART_REMOTE=oci://registry.staging.replicated.com/library
6061
61-
envsubst < Chart.yaml.tmpl > Chart.yaml
62-
envsubst < values.yaml.tmpl > values.yaml
63-
64-
export CHART_NAME=`helm package . | rev | cut -d/ -f1 | rev`
65-
echo pushing ${CHART_NAME} to staging
66-
helm registry login registry.staging.replicated.com --username $HELM_USER --password $HELM_PASS
67-
helm push $CHART_NAME oci://registry.staging.replicated.com/library
62+
../../scripts/publish-helm-chart.sh

Makefile

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,10 @@ test: manifests fmt vet envtest ## Run tests.
113113
##@ Build
114114

115115
.PHONY: build
116+
build: GOOS = linux
117+
build: GOARCH = amd64
116118
build: manifests fmt vet ## Build manager binary.
117-
CGO_ENABLED=0 go build -o bin/manager main.go
119+
CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o bin/manager main.go
118120

119121
.PHONY: run
120122
run: manifests fmt vet ## Run a controller from your host.
@@ -200,8 +202,12 @@ $(KUSTOMIZE): $(LOCALBIN)
200202
.PHONY: controller-gen
201203
controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
202204
$(CONTROLLER_GEN): $(LOCALBIN)
203-
test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
204-
GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
205+
@test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
206+
echo "Installing controller-gen version $(CONTROLLER_TOOLS_VERSION) to $(LOCALBIN)" && \
207+
go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) && \
208+
test -s $(GOBIN)/controller-gen && \
209+
ln -sf $(GOBIN)/controller-gen $(LOCALBIN)/controller-gen || \
210+
ln -sf $(GOBIN)/$(shell go env GOOS)_$(shell go env GOARCH)/controller-gen $(LOCALBIN)/controller-gen
205211

206212
.PHONY: schemas
207213
schemas: fmt controller-gen
@@ -211,7 +217,12 @@ schemas: fmt controller-gen
211217
.PHONY: envtest
212218
envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.
213219
$(ENVTEST): $(LOCALBIN)
214-
test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
220+
@test -s $(LOCALBIN)/setup-envtest || \
221+
echo "Installing setup-envtest to $(LOCALBIN)" && \
222+
go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest && \
223+
test -s $(GOBIN)/setup-envtest && \
224+
ln -sf $(GOBIN)/setup-envtest $(LOCALBIN)/setup-envtest || \
225+
ln -sf $(GOBIN)/$(shell go env GOOS)_$(shell go env GOARCH)/setup-envtest $(LOCALBIN)/setup-envtest
215226

216227
.PHONY: operator-sdk
217228
OPERATOR_SDK ?= $(LOCALBIN)/operator-sdk
@@ -291,3 +302,12 @@ catalog-push: ## Push a catalog image.
291302
build-ttl.sh:
292303
docker build --platform linux/amd64 -t ttl.sh/${CURRENT_USER}/embedded-cluster-operator-image:24h .
293304
docker push ttl.sh/${CURRENT_USER}/embedded-cluster-operator-image:24h
305+
306+
.PHONY: build-chart-ttl.sh
307+
build-chart-ttl.sh: build-ttl.sh
308+
build-chart-ttl.sh: export CHART_VERSION = 0.0.0
309+
build-chart-ttl.sh: export OPERATOR_IMAGE_NAME = ttl.sh/${CURRENT_USER}/embedded-cluster-operator-image
310+
build-chart-ttl.sh: export OPERATOR_IMAGE_TAG = 24h
311+
build-chart-ttl.sh: export CHART_REMOTE = oci://ttl.sh/${CURRENT_USER}
312+
build-chart-ttl.sh:
313+
cd charts/embedded-cluster-operator && ../../scripts/publish-helm-chart.sh

charts/embedded-cluster-operator/.helmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,5 @@
2121
.idea/
2222
*.tmproj
2323
.vscode/
24+
25+
/embedded-cluster-operator-*.tgz

charts/embedded-cluster-operator/templates/embedded-cluster-operator-deployment.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,7 @@ spec:
5757
{{- toYaml . | nindent 8 }}
5858
{{- end }}
5959
- name: EMBEDDEDCLUSTER_VERSION
60-
valueFrom:
61-
configMapKeyRef:
62-
name: embedded-cluster-config
63-
key: embedded-cluster-version
60+
value: "{{ .Values.embeddedClusterVersion }}"
6461
- name: EMBEDDEDCLUSTER_UTILS_IMAGE
6562
value: {{ .Values.utilsImage }}
6663
- name: EMBEDDEDCLUSTER_IMAGE

charts/embedded-cluster-operator/values.yaml.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ embeddedBinaryName: v0.0.0
88
embeddedClusterID: 123456789
99

1010
image:
11-
repository: ${OPERATOR_REGISTRY}/library/embedded-cluster-operator-image
12-
tag: ${OPERATOR_TAG}
11+
repository: ${OPERATOR_IMAGE_NAME}
12+
tag: ${OPERATOR_IMAGE_TAG}
1313
pullPolicy: IfNotPresent
1414

1515
kubeProxyImage: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1

0 commit comments

Comments
 (0)