From a889f826fd10b2104cb13337f21a96bd2859a4dc Mon Sep 17 00:00:00 2001 From: Tobias Persson Date: Thu, 21 Dec 2023 08:02:29 +0100 Subject: [PATCH] Adding an etcd cluster --- manifests/etcd/kustomization.yaml | 5 +++ manifests/etcd/service.yaml | 35 ++++++++++++++++++++ manifests/etcd/statefulset.yaml | 50 +++++++++++++++++++++++++++++ manifests/master/kustomization.yaml | 3 ++ 4 files changed, 93 insertions(+) create mode 100644 manifests/etcd/kustomization.yaml create mode 100644 manifests/etcd/service.yaml create mode 100644 manifests/etcd/statefulset.yaml diff --git a/manifests/etcd/kustomization.yaml b/manifests/etcd/kustomization.yaml new file mode 100644 index 00000000..9f5e013e --- /dev/null +++ b/manifests/etcd/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component +resources: + - service.yaml + - statefulset.yaml diff --git a/manifests/etcd/service.yaml b/manifests/etcd/service.yaml new file mode 100644 index 00000000..a4ba7104 --- /dev/null +++ b/manifests/etcd/service.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: Service +metadata: + name: etcd-client + labels: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: etos +spec: + type: ClusterIP + ports: + - name: etcd-client + port: 2379 + protocol: TCP + targetPort: 2379 + selector: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: etos +--- +apiVersion: v1 +kind: Service +metadata: + name: etcd + labels: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: etos +spec: + clusterIP: None + ports: + - port: 2379 + name: client + - port: 2380 + name: peer + selector: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: etos diff --git a/manifests/etcd/statefulset.yaml b/manifests/etcd/statefulset.yaml new file mode 100644 index 00000000..e4452139 --- /dev/null +++ b/manifests/etcd/statefulset.yaml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: etcd + labels: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: etos +spec: + serviceName: etcd + replicas: 3 + template: + metadata: + name: etcd + labels: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: etos + spec: + containers: + - name: etcd + image: quay.io/coreos/etcd:latest + ports: + - containerPort: 2379 + name: client + - containerPort: 2380 + name: peer + volumeMounts: + - name: data + mountPath: /var/run/etcd + command: + - /bin/sh + - -c + - | + PEERS="etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380" + exec etcd --name ${HOSTNAME} \ + --listen-peer-urls http://0.0.0.0:2380 \ + --listen-client-urls http://0.0.0.0:2379 \ + --advertise-client-urls http://${HOSTNAME}.etcd:2379 \ + --initial-advertise-peer-urls http://${HOSTNAME}:2380 \ + --initial-cluster-token etcd-cluster-1 \ + --initial-cluster ${PEERS} \ + --initial-cluster-state new \ + --data-dir /var/run/etcd/default.etcd + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 1Gi diff --git a/manifests/master/kustomization.yaml b/manifests/master/kustomization.yaml index eeed41ac..8b9a5af2 100644 --- a/manifests/master/kustomization.yaml +++ b/manifests/master/kustomization.yaml @@ -5,3 +5,6 @@ resources: - github.com/eiffel-community/etos-environment-provider//manifests/base - github.com/eiffel-community/etos-suite-runner//manifests/base - github.com/eiffel-community/etos-suite-starter//manifests/base + +components: + - ../etcd