Commit e7772426 by Guangbo Chen

bump etcd-operator to the latest version and added crd-hook

parent 4be3c593
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
apiVersion: v1
description: CoreOS etcd-operator Helm chart for Kubernetes
name: etcd-operator
version: 0.8.0
appVersion: 0.9.2
home: https://github.com/coreos/etcd-operator
icon: https://raw.githubusercontent.com/coreos/etcd/master/logos/etcd-horizontal-color.png
sources:
- https://github.com/coreos/etcd-operator
maintainers:
- name: chancez
email: chance.zibolski@coreos.com
- name: lachie83
email: lachlan@deis.com
- name: alejandroEsc
email: jaescobar.cell@gmail.com
approvers:
- lachie83
- chancez
- alejandroEsc
reviewers:
- lachie83
- chancez
- alejandroEsc
# CoreOS etcd-operator
[etcd-operator](https://coreos.com/blog/introducing-the-etcd-operator.html) Simplify etcd cluster
configuration and management.
__DISCLAIMER:__ While this chart has been well-tested, the etcd-operator is still currently in beta.
Current project status is available [here](https://github.com/coreos/etcd-operator).
## Introduction
This chart bootstraps an etcd-operator and allows the deployment of etcd-cluster(s).
categories:
- etcd
- keyvalue
questions:
- variable: defaultImage
default: true
description: "Use default Docker image"
label: Use Default Image
type: boolean
show_subquestion_if: false
group: "Container Images"
subquestions:
- variable: etcdCluster.image.repository
default: "quay.io/coreos/etcd"
description: "Etcd container image"
type: string
label: Etcd Container Image Name
- variable: etcdCluster.image.tag
default: "v3.2.13"
description: "Etcd container image tag"
type: string
label: Etcd Container Image Tag
- variable: etcdOperator.image.repository
default: "quay.io/coreos/etcd-operator"
description: "Etcd operator Docker image"
type: string
label: Etcd Operator Image Name
- variable: etcdOperator.image.tag
default: "v0.9.2"
description: "Etcd operator Docker tag"
type: string
label: Etcd Operator Image Tag
- variable: backupOperator.image.repository
default: "quay.io/coreos/etcd-operator"
description: "Etcd backup operator Docker image"
type: string
label: Etcd Backup Operator Docker Image
- variable: backupOperator.image.tag
default: "v0.9.2"
description: "Etcd backup operator Docker tag"
type: string
label: Etcd Backup Operator Docker Tag
- variable: restoreOperator.image.repository
default: "quay.io/coreos/etcd-operator"
description: "Etcd restore operator Docker image"
type: string
label: Etcd Restore Image Name
- variable: restoreOperator.image.tag
default: "v0.9.2"
description: "Etcd restore operator Docker tag"
type: string
label: Etcd Restore Image Tag
- variable: deployments.etcdOperator
default: true
description: "Deploy the etcd cluster operator"
required: true
label: Deploy the etcd Cluster Operator
type: boolean
show_subquestion_if: true
group: "Etcd Operator"
subquestions:
- variable: etcdOperator.clusterwide.enabled
default: true
description: "Set etcd operator manage clusters in all namespaces (more details on https://github.com/coreos/etcd-operator/blob/master/doc/user/clusterwide.md)"
label: Set EtcdOperator Clusterwide
type: boolean
required: true
- variable: etcdCluster.size
default: "3"
description: "etcd cluster size"
label: Etcd Cluster Size
type: enum
group: "Etcd Cluster"
options:
- "3"
- "5"
- "7"
- "9"
- "11"
required: true
- variable: etcdCluster.version
default: "3.2.13"
description: "etcd cluster version"
label: Etcd Cluster Version
type: string
required: true
group: "Etcd Cluster"
- variable: etcdCluster.enableTLS
default: "false"
description: "Enable use of TLS"
label: Enable use of TLS
type: boolean
show_subquestion_if: true
required: true
group: "Etcd Cluster"
subquestions:
- variable: etcdCluster.tls.static.member.peerSecret
default: ""
description: "Kubernetes secret containing TLS peer certs"
required: true
label: k8s Secret Name of TLS Peer Certs
type: string
- variable: etcdCluster.tls.static.member.serverSecret
default: ""
description: "Kubernetes secret containing TLS server certs"
required: true
label: k8s Secret Name of TLS Server Certs
type: string
- variable: etcdCluster.tls.static.operatorSecret
default: ""
description: "Kubernetes secret containing TLS client certs"
required: true
label: k8s Secret Name of TLS Client Certs
type: string
- variable: deployments.backupOperator
default: false
description: "Deploy the etcd backup operator, one time deployment, delete once completed"
label: Deploy the etcd Backup Operator
type: boolean
show_subquestion_if: true
group: "Backup Operator"
subquestions:
- variable: backupOperator.spec.storageType
default: "S3"
description: "Storage to use for backup file, currently only S3 supported"
label: Backup Storage Type
type: enum
required: true
options:
- "S3"
- variable: backupOperator.spec.s3.s3Bucket
default: ""
description: "Bucket in S3 to store backup file"
label: Backup Bucket Name in S3
type: string
required: true
- variable: backupOperator.spec.s3.awsSecret
default: ""
description: "Name of kubernetes secrete containing aws credentials"
label: Kubernetes secrete name of AWS Credentails
type: string
required: true
- variable: deployments.restoreOperator
default: "false"
description: "Deploy the etcd restore operator, one time deployment, delete once completed"
label: Deploy the etcd Restore Operator
type: boolean
group: "Restore Operator"
show_subquestion_if: true
subquestions:
- variable: restoreOperator.spec.s3.path
default: ""
description: "Path in S3 bucket containing the backup file, The format of path must be: <s3-bucket-name>/<path-to-backup-file> # e.g: etcd-snapshot-bucket/v1/default/example-etcd-cluster/3.2.10_0000000000000001_etcd.backup"
label: Restore File Path
type: string
required: true
- variable: restoreOperator.spec.s3.awsSecret
default: ""
description: "Name of kubernetes secrete containing aws credentials"
label: Kubernetes secrete name of AWS Credentails
type: string
required: true
{{- $clusterEnabled := (and (not .Release.IsInstall) .Values.deployments.etcdOperator) -}}
{{- if and .Release.IsInstall .Values.deployments.etcdOperator -}}
Not enabling cluster, the ThirdPartResource must be installed before you can create a Cluster. Continuing rest of normal deployment.
{{ end -}}
{{- if $clusterEnabled -}}
1. Watch etcd cluster start
kubectl get pods -l etcd_cluster={{ .Values.etcdCluster.name }} --namespace {{ .Release.Namespace }} -w
2. Confirm etcd cluster is healthy
$ kubectl run --rm -i --tty --env="ETCDCTL_API=3" --env="ETCDCTL_ENDPOINTS=http://{{ .Values.etcdCluster.name }}-client:2379" --namespace {{ .Release.Namespace }} etcd-test --image quay.io/coreos/etcd --restart=Never -- /bin/sh -c 'watch -n1 "etcdctl member list"'
3. Interact with the cluster!
$ kubectl run --rm -i --tty --env ETCDCTL_API=3 --namespace {{ .Release.Namespace }} etcd-test --image quay.io/coreos/etcd --restart=Never -- /bin/sh
/ # etcdctl --endpoints http://{{ .Values.etcdCluster.name }}-client:2379 put foo bar
/ # etcdctl --endpoints http://{{ .Values.etcdCluster.name }}-client:2379 get foo
OK
(ctrl-D to exit)
4. Optional
Check the etcd-operator logs
export POD=$(kubectl get pods -l app={{ template "etcd-operator.fullname" . }} --namespace {{ .Release.Namespace }} --output name)
kubectl logs $POD --namespace={{ .Release.Namespace }}
{{- else -}}
1. etcd-operator deployed.
If you would like to deploy an etcd-cluster set cluster.enabled to true in values.yaml
Check the etcd-operator logs
export POD=$(kubectl get pods -l app={{ template "etcd-operator.fullname" . }} --namespace {{ .Release.Namespace }} --output name)
kubectl logs $POD --namespace={{ .Release.Namespace }}
{{- end -}}
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "etcd-operator.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "etcd-operator.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- printf "%s-%s" .Release.Name .Values.etcdOperator.name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.etcdOperator.name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- define "etcd-backup-operator.name" -}}
{{- default .Chart.Name .Values.backupOperator.name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "etcd-backup-operator.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- printf "%s-%s" .Release.Name .Values.backupOperator.name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.backupOperator.name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- define "etcd-restore-operator.name" -}}
{{- default .Chart.Name .Values.restoreOperator.name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "etcd-restore-operator.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- printf "%s-%s" .Release.Name .Values.restoreOperator.name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.restoreOperator.name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{/*
Create the name of the etcd-operator service account to use
*/}}
{{- define "etcd-operator.serviceAccountName" -}}
{{- if .Values.serviceAccount.etcdOperatorServiceAccount.create -}}
{{ default (include "etcd-operator.fullname" .) .Values.serviceAccount.etcdOperatorServiceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.etcdOperatorServiceAccount.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the backup-operator service account to use
*/}}
{{- define "etcd-backup-operator.serviceAccountName" -}}
{{- if .Values.serviceAccount.backupOperatorServiceAccount.create -}}
{{ default (include "etcd-backup-operator.fullname" .) .Values.serviceAccount.backupOperatorServiceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.backupOperatorServiceAccount.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the restore-operator service account to use
*/}}
{{- define "etcd-restore-operator.serviceAccountName" -}}
{{- if .Values.serviceAccount.restoreOperatorServiceAccount.create -}}
{{ default (include "etcd-restore-operator.fullname" .) .Values.serviceAccount.restoreOperatorServiceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.restoreOperatorServiceAccount.name }}
{{- end -}}
{{- end -}}
{{- if .Values.deployments.backupOperator }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: etcdbackups.etcd.database.coreos.com
annotations:
"helm.sh/hook": "crd-install"
"helm.sh/hook-delete-policy": "before-hook-creation"
spec:
group: etcd.database.coreos.com
scope: Namespaced
version: v1beta2
names:
kind: EtcdBackup
listKind: EtcdBackupList
plural: etcdbackups
singular: etcdbackup
{{- end }}
{{- if .Values.deployments.backupOperator }}
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdBackup"
metadata:
name: {{ template "etcd-backup-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-backup-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
clusterName: {{ .Values.etcdCluster.name }}
{{ toYaml .Values.backupOperator.spec | indent 2 }}
{{- end }}
{{- if and .Values.rbac.create .Values.deployments.backupOperator }}
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }}
metadata:
name: {{ template "etcd-backup-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
subjects:
- kind: ServiceAccount
name: {{ template "etcd-backup-operator.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "etcd-operator.fullname" . }}
{{- end }}
{{- if .Values.deployments.backupOperator }}
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ template "etcd-backup-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-backup-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
selector:
matchLabels:
app: {{ template "etcd-backup-operator.fullname" . }}
release: {{ .Release.Name }}
replicas: {{ .Values.backupOperator.replicaCount }}
template:
metadata:
name: {{ template "etcd-backup-operator.fullname" . }}
labels:
app: {{ template "etcd-backup-operator.fullname" . }}
release: {{ .Release.Name }}
spec:
serviceAccountName: {{ template "etcd-backup-operator.serviceAccountName" . }}
containers:
- name: {{ .Values.backupOperator.name }}
image: "{{ .Values.backupOperator.image.repository }}:{{ .Values.backupOperator.image.tag }}"
imagePullPolicy: {{ .Values.backupOperator.image.pullPolicy }}
command:
- etcd-backup-operator
{{- range $key, $value := .Values.backupOperator.commandArgs }}
- "--{{ $key }}={{ $value }}"
{{- end }}
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
resources:
limits:
cpu: {{ .Values.backupOperator.resources.cpu }}
memory: {{ .Values.backupOperator.resources.memory }}
requests:
cpu: {{ .Values.backupOperator.resources.cpu }}
memory: {{ .Values.backupOperator.resources.memory }}
{{- if .Values.backupOperator.nodeSelector }}
nodeSelector:
{{ toYaml .Values.backupOperator.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.backupOperator.tolerations }}
tolerations:
{{ toYaml .Values.backupOperator.tolerations | indent 8 }}
{{- end }}
{{- end }}
{{- if and .Values.serviceAccount.backupOperatorServiceAccount.create .Values.deployments.backupOperator }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "etcd-backup-operator.serviceAccountName" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-backup-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{- end }}
{{- if .Values.deployments.etcdOperator }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: etcdclusters.etcd.database.coreos.com
annotations:
"helm.sh/hook": "crd-install"
"helm.sh/hook-delete-policy": "before-hook-creation"
spec:
group: etcd.database.coreos.com
scope: Namespaced
version: v1beta2
names:
kind: EtcdCluster
listKind: EtcdClusterList
plural: etcdclusters
shortNames:
- etcd
singular: etcdcluster
{{- end }}
{{- if .Values.deployments.etcdOperator }}
apiVersion: etcd.database.coreos.com/v1beta2
kind: EtcdCluster
metadata:
name: "{{ .Values.etcdCluster.name }}"
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
annotations:
{{- if .Values.clusterwide.enabled }}
"etcd.database.coreos.com/scope": "clusterwide"
{{- end }}
spec:
size: {{ .Values.etcdCluster.size }}
version: "{{ .Values.etcdCluster.version }}"
pod:
{{ toYaml .Values.etcdCluster.pod | indent 4 }}
{{- if .Values.etcdCluster.enableTLS }}
TLS:
{{ toYaml .Values.etcdCluster.tls | indent 4 }}
{{- end }}
{{- end }}
{{- if .Values.rbac.create }}
apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }}
kind: ClusterRole
metadata:
name: {{ template "etcd-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
rules:
- apiGroups:
- etcd.database.coreos.com
resources:
- etcdclusters
- etcdbackups
- etcdrestores
verbs:
- "*"
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- "*"
- apiGroups:
- ""
resources:
- pods
- services
- endpoints
- persistentvolumeclaims
- events
verbs:
- "*"
- apiGroups:
- apps
resources:
- deployments
verbs:
- "*"
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
{{- end }}
{{- if and .Values.rbac.create .Values.deployments.etcdOperator }}
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/{{ required "A valid .Values.rbac.apiVersion entry required!" .Values.rbac.apiVersion }}
metadata:
name: {{ template "etcd-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
subjects:
- kind: ServiceAccount
name: {{ template "etcd-operator.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "etcd-operator.fullname" . }}
{{- end }}
{{- if .Values.deployments.etcdOperator }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "etcd-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
selector:
matchLabels:
app: {{ template "etcd-operator.fullname" . }}
release: {{ .Release.Name }}
replicas: {{ .Values.etcdOperator.replicaCount }}
template:
metadata:
name: {{ template "etcd-operator.fullname" . }}
labels:
app: {{ template "etcd-operator.fullname" . }}
release: {{ .Release.Name }}
spec:
serviceAccountName: {{ template "etcd-operator.serviceAccountName" . }}
containers:
- name: {{ template "etcd-operator.fullname" . }}
image: "{{ .Values.etcdOperator.image.repository }}:{{ .Values.etcdOperator.image.tag }}"
imagePullPolicy: {{ .Values.etcdOperator.image.pullPolicy }}
command:
- etcd-operator
{{- if .Values.clusterwide.enabled }}
- "--cluster-wide=true"
{{- end }}
{{- range $key, $value := .Values.etcdOperator.commandArgs }}
- "--{{ $key }}={{ $value }}"
{{- end }}
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
resources:
limits:
cpu: {{ .Values.etcdOperator.resources.cpu }}
memory: {{ .Values.etcdOperator.resources.memory }}
requests:
cpu: {{ .Values.etcdOperator.resources.cpu }}
memory: {{ .Values.etcdOperator.resources.memory }}
{{- if .Values.etcdOperator.livenessProbe.enabled }}
livenessProbe:
httpGet:
path: /readyz
port: 8080
initialDelaySeconds: {{ .Values.etcdOperator.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.etcdOperator.livenessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.etcdOperator.livenessProbe.timeoutSeconds }}
successThreshold: {{ .Values.etcdOperator.livenessProbe.successThreshold }}
failureThreshold: {{ .Values.etcdOperator.livenessProbe.failureThreshold }}
{{- end}}
{{- if .Values.etcdOperator.readinessProbe.enabled }}
readinessProbe:
httpGet:
path: /readyz
port: 8080
initialDelaySeconds: {{ .Values.etcdOperator.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ .Values.etcdOperator.readinessProbe.periodSeconds }}
timeoutSeconds: {{ .Values.etcdOperator.readinessProbe.timeoutSeconds }}
successThreshold: {{ .Values.etcdOperator.readinessProbe.successThreshold }}
failureThreshold: {{ .Values.etcdOperator.readinessProbe.failureThreshold }}
{{- end }}
{{- if .Values.etcdOperator.nodeSelector }}
nodeSelector:
{{ toYaml .Values.etcdOperator.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.etcdOperator.tolerations }}
tolerations:
{{ toYaml .Values.etcdOperator.tolerations | indent 8 }}
{{- end }}
{{- end }}
{{- if and .Values.serviceAccount.etcdOperatorServiceAccount.create (.Values.deployments.etcdOperator) }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "etcd-operator.serviceAccountName" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{- end }}
{{- if .Values.deployments.restoreOperator }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: etcdrestores.etcd.database.coreos.com
annotations:
"helm.sh/hook": "crd-install"
"helm.sh/hook-delete-policy": "before-hook-creation"
spec:
group: etcd.database.coreos.com
scope: Namespaced
version: v1beta2
names:
kind: EtcdRestore
listKind: EtcdRestoreList
plural: etcdrestores
singular: etcdrestore
{{- end }}
{{- if .Values.deployments.restoreOperator }}
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdRestore"
metadata:
# An EtcdCluster with the same name will be created
name: {{ .Values.etcdCluster.name }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-restore-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
clusterSpec:
size: {{ .Values.etcdCluster.size }}
baseImage: "{{ .Values.etcdCluster.image.repository }}"
version: {{ .Values.etcdCluster.image.tag }}
pod:
{{ toYaml .Values.etcdCluster.pod | indent 6 }}
{{- if .Values.etcdCluster.enableTLS }}
TLS:
{{ toYaml .Values.etcdCluster.tls | indent 6 }}
{{- end }}
{{ toYaml .Values.restoreOperator.spec | indent 2 }}
{{- end }}
{{- if and .Values.rbac.create .Values.deployments.restoreOperator }}
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }}
metadata:
name: {{ template "etcd-restore-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-restore-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
subjects:
- kind: ServiceAccount
name: {{ template "etcd-restore-operator.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "etcd-operator.fullname" . }}
{{- end }}
{{- if .Values.deployments.restoreOperator }}
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ template "etcd-restore-operator.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-restore-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
selector:
matchLabels:
app: {{ template "etcd-restore-operator.name" . }}
release: {{ .Release.Name }}
replicas: {{ .Values.restoreOperator.replicaCount }}
template:
metadata:
name: {{ template "etcd-restore-operator.fullname" . }}
labels:
app: {{ template "etcd-restore-operator.name" . }}
release: {{ .Release.Name }}
spec:
serviceAccountName: {{ template "etcd-restore-operator.serviceAccountName" . }}
containers:
- name: {{ .Values.restoreOperator.name }}
image: "{{ .Values.restoreOperator.image.repository }}:{{ .Values.restoreOperator.image.tag }}"
imagePullPolicy: {{ .Values.restoreOperator.image.pullPolicy }}
ports:
- containerPort: {{ .Values.restoreOperator.port }}
command:
- etcd-restore-operator
{{- range $key, $value := .Values.restoreOperator.commandArgs }}
- "--{{ $key }}={{ $value }}"
{{- end }}
env:
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: SERVICE_ADDR
value: "{{ .Values.restoreOperator.name }}:{{ .Values.restoreOperator.port }}"
resources:
limits:
cpu: {{ .Values.restoreOperator.resources.cpu }}
memory: {{ .Values.restoreOperator.resources.memory }}
requests:
cpu: {{ .Values.restoreOperator.resources.cpu }}
memory: {{ .Values.restoreOperator.resources.memory }}
{{- if .Values.restoreOperator.nodeSelector }}
nodeSelector:
{{ toYaml .Values.restoreOperator.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.restoreOperator.tolerations }}
tolerations:
{{ toYaml .Values.restoreOperator.tolerations | indent 8 }}
{{- end }}
{{- end }}
{{- if and .Values.serviceAccount.restoreOperatorServiceAccount.create .Values.deployments.restoreOperator }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "etcd-restore-operator.serviceAccountName" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-restore-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{- end }}
{{- if .Values.deployments.restoreOperator }}
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.restoreOperator.name }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-restore-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
spec:
ports:
- protocol: TCP
name: http-etcd-restore-port
port: {{ .Values.restoreOperator.port }}
selector:
app: {{ template "etcd-restore-operator.name" . }}
release: {{ .Release.Name }}
{{- end }}
# Default values for etcd-operator.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
## Install Default RBAC roles and bindings
rbac:
create: true
apiVersion: v1beta1
## Service account names and whether to create them
serviceAccount:
etcdOperatorServiceAccount:
create: true
name:
backupOperatorServiceAccount:
create: true
name:
restoreOperatorServiceAccount:
create: true
name:
# Enabled to act for resources in all namespaces. More information in doc/clusterwide.md
clusterwide:
enabled: true
# Select what to deploy
deployments:
etcdOperator: true
# one time deployment, delete once completed,
# Ref: https://github.com/coreos/etcd-operator/blob/master/doc/user/walkthrough/backup-operator.md
backupOperator: false
# one time deployment, delete once completed
# Ref: https://github.com/coreos/etcd-operator/blob/master/doc/user/walkthrough/restore-operator.md
restoreOperator: false
# etcdOperator
etcdOperator:
name: etcd
replicaCount: 1
image:
repository: quay.io/coreos/etcd-operator
tag: v0.9.2
pullPolicy: Always
resources:
cpu: 100m
memory: 128Mi
## Node labels for etcd-operator pod assignment
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector: {}
## additional command arguments go here; will be translated to `--key=value` form
## e.g., analytics: true
commandArgs:
create-crd: false
## Configurable health checks against the /readyz endpoint that etcd-operator exposes
readinessProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
livenessProbe:
enabled: false
initialDelaySeconds: 0
periodSeconds: 10
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 3
# backup spec
backupOperator:
name: backup
replicaCount: 1
image:
repository: quay.io/coreos/etcd-operator
tag: v0.9.2
pullPolicy: Always
resources:
cpu: 100m
memory: 128Mi
spec:
storageType: S3
s3:
s3Bucket:
awsSecret:
## Node labels for etcd pod assignment
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector: {}
## additional command arguments go here; will be translated to `--key=value` form
## e.g., analytics: true
commandArgs:
create-crd: false
# restore spec
restoreOperator:
name: restore
replicaCount: 1
image:
repository: quay.io/coreos/etcd-operator
tag: v0.9.2
pullPolicy: Always
port: 19999
resources:
cpu: 100m
memory: 128Mi
spec:
s3:
# The format of "path" must be: "<s3-bucket-name>/<path-to-backup-file>"
# e.g: "etcd-snapshot-bucket/v1/default/example-etcd-cluster/3.2.10_0000000000000001_etcd.backup"
path:
awsSecret:
## Node labels for etcd pod assignment
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector: {}
## additional command arguments go here; will be translated to `--key=value` form
## e.g., analytics: true
commandArgs:
create-crd: false
## etcd-cluster specific values
etcdCluster:
name: etcd-cluster
size: 3
version: 3.2.13
image:
repository: quay.io/coreos/etcd
tag: v3.2.13
pullPolicy: Always
enableTLS: false
# TLS configs
tls:
static:
member:
peerSecret: etcd-peer-tls
serverSecret: etcd-server-tls
operatorSecret: etcd-client-tls
## etcd cluster pod specific values
## Ref: https://github.com/coreos/etcd-operator/blob/master/doc/user/spec_examples.md#three-members-cluster-with-resource-requirement
pod:
## Antiaffinity for etcd pod assignment
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
antiAffinity: false
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
## Node labels for etcd pod assignment
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector: {}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment