From c64c6b549b630011da6d4e18fae63556f3af8118 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Mon, 19 Feb 2024 15:08:16 +0100 Subject: [PATCH] Enable leader election for Cozystack (#23) --- .../core/installer/images/installer/Dockerfile | 15 ++++++++++++++- packages/core/installer/templates/cozystack.yaml | 14 ++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/core/installer/images/installer/Dockerfile b/packages/core/installer/images/installer/Dockerfile index f4fc5153..6618cd00 100644 --- a/packages/core/installer/images/installer/Dockerfile +++ b/packages/core/installer/images/installer/Dockerfile @@ -1,3 +1,15 @@ +FROM golang:alpine3.19 as k8s-await-election-builder + +ARG K8S_AWAIT_ELECTION_GITREPO=https://github.com/LINBIT/k8s-await-election +ARG K8S_AWAIT_ELECTION_VERSION=0.4.1 + +RUN apk add --no-cache git make +RUN git clone ${K8S_AWAIT_ELECTION_GITREPO} /usr/local/go/k8s-await-election/ \ + && cd /usr/local/go/k8s-await-election \ + && git reset --hard v${K8S_AWAIT_ELECTION_VERSION} \ + && make \ + && mv ./out/k8s-await-election-amd64 /k8s-await-election + FROM alpine:3.19 AS builder RUN apk add --no-cache make git @@ -18,7 +30,8 @@ COPY scripts /cozystack/scripts COPY --from=builder /src/packages/core /cozystack/packages/core COPY --from=builder /src/packages/system /cozystack/packages/system COPY --from=builder /src/_out/repos /cozystack/assets/repos +COPY --from=k8s-await-election-builder /k8s-await-election /usr/bin/k8s-await-election COPY dashboards /cozystack/assets/dashboards WORKDIR /cozystack -ENTRYPOINT [ "/cozystack/scripts/installer.sh" ] +ENTRYPOINT ["/usr/bin/k8s-await-election", "/cozystack/scripts/installer.sh" ] diff --git a/packages/core/installer/templates/cozystack.yaml b/packages/core/installer/templates/cozystack.yaml index 4dbbe5b2..2b1ea8f3 100644 --- a/packages/core/installer/templates/cozystack.yaml +++ b/packages/core/installer/templates/cozystack.yaml @@ -41,8 +41,6 @@ spec: selector: matchLabels: app: cozystack - strategy: - type: Recreate template: metadata: labels: @@ -58,6 +56,18 @@ spec: value: localhost - name: KUBERNETES_SERVICE_PORT value: "7445" + - name: K8S_AWAIT_ELECTION_ENABLED + value: "1" + - name: K8S_AWAIT_ELECTION_NAME + value: cozystack + - name: K8S_AWAIT_ELECTION_LOCK_NAME + value: cozystack + - name: K8S_AWAIT_ELECTION_LOCK_NAMESPACE + value: cozy-system + - name: K8S_AWAIT_ELECTION_IDENTITY + valueFrom: + fieldRef: + fieldPath: metadata.name - name: darkhttpd image: "{{ .Files.Get "images/installer.tag" | trim }}@{{ index (.Files.Get "images/installer.json" | fromJson) "containerimage.digest" }}" command: