157 lines
4.6 KiB
YAML
157 lines
4.6 KiB
YAML
{{- define "etcd.initial.clusters" -}}
|
|
{{- $uri := "" -}}
|
|
{{- $ns := include "karmada.namespace" . -}}
|
|
{{- range $index := until (.Values.etcd.internal.replicaCount | int) -}}
|
|
{{- $node := printf "etcd-%d=http://etcd-%d.etcd.%s.svc.%s:2380," $index $index $ns $.Values.clusterDomain }}
|
|
{{- $uri = printf "%s%s" $uri $node -}}
|
|
{{- end -}}
|
|
{{- printf $uri | trimSuffix "," | quote -}}
|
|
{{- end }}
|
|
{{- if and (eq .Values.etcd.mode "internal") (eq .Values.installMode "host")}}
|
|
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: etcd
|
|
namespace: {{ include "karmada.namespace" . }}
|
|
labels:
|
|
app: etcd
|
|
spec:
|
|
replicas: {{ .Values.etcd.internal.replicaCount }}
|
|
serviceName: etcd
|
|
selector:
|
|
matchLabels:
|
|
app: etcd
|
|
updateStrategy:
|
|
type: RollingUpdate
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: etcd
|
|
spec:
|
|
affinity:
|
|
podAntiAffinity:
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
- labelSelector:
|
|
matchExpressions:
|
|
- key: app
|
|
operator: In
|
|
values:
|
|
- etcd
|
|
topologyKey: kubernetes.io/hostname
|
|
tolerations:
|
|
- operator: Exists
|
|
containers:
|
|
- name: etcd
|
|
image: "{{ .Values.etcd.internal.image.repository }}:{{ .Values.etcd.internal.image.tag | default "latest" }}"
|
|
imagePullPolicy: {{ .Values.etcd.internal.image.pullPolicy }}
|
|
livenessProbe:
|
|
exec:
|
|
command:
|
|
- /bin/sh
|
|
- -ec
|
|
- 'etcdctl get /registry --prefix --keys-only --endpoints https://127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/server-ca.crt --cert /etc/kubernetes/pki/etcd/karmada.crt --key /etc/kubernetes/pki/etcd/karmada.key'
|
|
failureThreshold: 3
|
|
initialDelaySeconds: 600
|
|
periodSeconds: 60
|
|
successThreshold: 1
|
|
timeoutSeconds: 10
|
|
env:
|
|
- name: KARMADA_ETCD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
ports:
|
|
- containerPort: 2369
|
|
name: client
|
|
protocol: TCP
|
|
- containerPort: 2370
|
|
name: server
|
|
protocol: TCP
|
|
resources:
|
|
{{- toYaml .Values.etcd.internal.resources | nindent 12 }}
|
|
volumeMounts:
|
|
- mountPath: /var/lib/etcd
|
|
name: etcd-data
|
|
- name: etcd-cert
|
|
mountPath: /etc/kubernetes/pki/etcd
|
|
readOnly: true
|
|
command:
|
|
- /usr/local/bin/etcd
|
|
- --name
|
|
- $(KARMADA_ETCD_NAME)
|
|
- --listen-peer-urls
|
|
- http://0.0.0.0:2380
|
|
- --listen-client-urls
|
|
- https://0.0.0.0:2379
|
|
- --advertise-client-urls
|
|
- https://etcd-client.{{ include "karmada.namespace" . }}.svc.{{ .Values.clusterDomain }}:2379
|
|
- --initial-cluster
|
|
- {{ include "etcd.initial.clusters" . }}
|
|
- --initial-cluster-state
|
|
- new
|
|
- --cert-file=/etc/kubernetes/pki/etcd/karmada.crt
|
|
- --client-cert-auth=true
|
|
- --key-file=/etc/kubernetes/pki/etcd/karmada.key
|
|
- --trusted-ca-file=/etc/kubernetes/pki/etcd/server-ca.crt
|
|
- --data-dir=/var/lib/etcd
|
|
volumes:
|
|
- name: etcd-cert
|
|
secret:
|
|
secretName: {{ include "karmada.name" . }}-cert
|
|
{{- if eq .Values.etcd.internal.storageType "hostPath" }}
|
|
- hostPath:
|
|
path: /var/lib/{{ include "karmada.namespace" . }}/karmada-etcd
|
|
type: DirectoryOrCreate
|
|
name: etcd-data
|
|
{{- end }}
|
|
{{- if eq .Values.etcd.internal.storageType "pvc"}}
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: etcd-data
|
|
spec:
|
|
accessModes: [ "ReadWriteOnce" ]
|
|
storageClassName: {{ .Values.etcd.internal.pvc.storageClass }}
|
|
resources:
|
|
requests:
|
|
storage: {{ .Values.etcd.internal.pvc.size }}
|
|
{{- end }}
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
labels:
|
|
app: etcd
|
|
name: etcd-client
|
|
namespace: {{ include "karmada.namespace" . }}
|
|
spec:
|
|
ports:
|
|
- name: etcd-client-port
|
|
port: 2379
|
|
protocol: TCP
|
|
targetPort: 2379
|
|
selector:
|
|
app: etcd
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
labels:
|
|
app: etcd
|
|
name: etcd
|
|
namespace: {{ include "karmada.namespace" . }}
|
|
spec:
|
|
ports:
|
|
- name: client
|
|
port: 2379
|
|
protocol: TCP
|
|
targetPort: 2379
|
|
- name: server
|
|
port: 2380
|
|
protocol: TCP
|
|
targetPort: 2380
|
|
clusterIP: None
|
|
selector:
|
|
app: etcd
|
|
|
|
{{- end }}
|