Commit 524a0651 by Guangbo Chen

added etcd-operator chart

parent 6cf327d9
# 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.7.6
appVersion: 0.7.0
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: enum
options:
- "true"
- "false"
show_subquestion_if: false
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.10"
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: enum
options:
- "true"
- "false"
show_subquestion_if: true
subquestions:
- variable: etcdOperator.clusterwide.enabled
default: false
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: enum
required: true
options:
- true
- false
- variable: etcdOperator.name
default: "etcd-operator"
description: "Etcd Operator name"
required: true
label: Etcd Operator name
type: string
- variable: etcdOperator.replicaCount
default: "1"
description: "Number of operator replicas to create (only 1 is supported)"
required: true
label: Etcd Operator Replicas
type: enum
options:
- "1"
- variable: etcdOperator.nodeSelector
default: "{}"
description: "Node labels for etcd-operator pod assignment(ref: https://kubernetes.io/docs/user-guide/node-selection/)"
label: Etcd Operator Node Selector
type: string
- variable: etcdOperator.commandArgs
default: "{}"
description: "additional command arguments for etcd operator go here; will be translated to --key=value form e.g., analytics: true"
label: Additional Command Arguments of Etcd Operator
type: string
- variable: deployments.backupOperator
default: "false"
description: "Deploy the etcd backup operator, one time deployment, delete once completed"
required: true
label: Deploy the etcd Backup Operator
type: enum
options:
- "true"
- "false"
show_subquestion_if: true
subquestions:
- variable: backupOperator.name
default: "etcd-backup-operator"
description: "Backup operator name"
required: true
label: Backup Operator name
type: string
- variable: backupOperator.replicaCount
default: "1"
description: "Number of operator replicas to create (only 1 is supported)"
required: true
label: Backup Operator Replicas
type: enum
options:
- "1"
- 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: backupOperator.nodeSelector
default: "{}"
description: "Node labels for etcd backup operator pod assignment(ref: https://kubernetes.io/docs/user-guide/node-selection)"
label: Etcd Operator Node Selector
type: string
- variable: backupOperator.commandArgs
default: "{}"
description: "additional command arguments for etcd backup operator go here; will be translated to --key=value form e.g., analytics: true"
label: Additional command arguments of Etcd Operator
type: string
- variable: deployments.restoreOperator
default: "false"
description: "Deploy the etcd restore operator, one time deployment, delete once completed"
required: true
label: Deploy the etcd Restore Operator
type: enum
options:
- "true"
- "false"
show_subquestion_if: true
subquestions:
- variable: restoreOperator.name
default: "etcd-restore-operator"
description: "Restore operator name"
required: true
label: Restore Operator name
type: string
- variable: restoreOperator.replicaCount
default: "1"
description: "Number of operator replicas to create (only 1 is supported)"
required: true
label: Restore Operator Replicas
type: enum
options:
- "1"
- 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
- variable: restoreOperator.nodeSelector
default: "{}"
description: "Node labels for etcd backup operator pod assignment(ref: https://kubernetes.io/docs/user-guide/node-selection)"
label: Etcd Operator Node Selector
type: string
- variable: restoreOperator.commandArgs
default: "{}"
description: "additional command arguments for etcd backup operator go here; will be translated to --key=value form e.g., analytics: true"
label: Additional command arguments of Etcd Operator
type: string
- variable: createCustomResources
default: "false"
description: "creates Kubernetes custom resources definitions (options: EtcdCluster, EtcdBackup, EtcdRestore)"
label: Create Kubernetes Custom Resources (EtcdCluster, EtcdBackup, EtcdRestore)
type: enum
options:
- "true"
- "false"
show_subquestion_if: true
subquestions:
- variable: customResources.createEtcdClusterCRD
default: "false"
description: "Create a custom resource: EtcdCluster"
label: Create a ETCD Cluster
type: enum
show_if: "deployments.etcdOperator=true"
options:
- "true"
- "false"
- variable: customResources.createBackupCRD
default: "false"
description: "Create a custom resource: EtcdBackup"
label: Create a ETCD Backup Cluster
type: enum
show_if: "deployments.backupOperator=true"
options:
- "true"
- "false"
- variable: customResources.createRestoreCRD
default: "false"
description: "Create a custom resource: EtcdRestore"
label: Create a ETCD Restore Cluster
type: enum
show_if: "deployments.restoreOperator=true"
options:
- "true"
- "false"
- variable: etcdCluster.name
default: "etcd-cluster"
description: "etcd cluster name"
label: Etcd Cluster Name
type: string
required: true
show_if: "createCustomResources=true"
- variable: etcdCluster.size
default: "3"
description: "etcd cluster size"
label: Etcd Cluster Size
type: enum
options:
- "3"
- "5"
- "7"
- "9"
- "11"
show_if: "createCustomResources=true"
required: true
- variable: etcdCluster.version
default: "3.2.10"
description: "etcd cluster version"
label: Etcd Cluster Version
type: string
show_if: "createCustomResources=true"
required: true
- variable: etcdCluster.pod.nodeSelector
default: "{}"
description: "node labels for etcd cluster pod assignment, e.g, {disktype: ssd, type: worker}"
label: Node Labels for etcd Pod Assignment
type: string
show_if: "createCustomResources=true"
- variable: etcdCluster.enableTLS
default: "false"
description: "Enable use of TLS"
label: Enable use of TLS
type: enum
options:
- "true"
- "false"
show_subquestion_if: true
show_if: "createCustomResources=true"
required: true
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
{{- $clusterEnabled := (and (not .Release.IsInstall) .Values.customResources.createEtcdClusterCRD) -}}
{{- if and .Release.IsInstall .Values.customResources.createEtcdClusterCRD -}}
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 -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.etcdOperator.name | trunc 63 | trimSuffix "-" -}}
{{- 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 -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.backupOperator.name | trunc 63 | trimSuffix "-" -}}
{{- 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 -}}
{{- printf "%s-%s-%s" .Release.Name $name .Values.restoreOperator.name | trunc 63 | trimSuffix "-" -}}
{{- 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 -}}
\ No newline at end of file
{{- if .Values.customResources.createBackupCRD }}
---
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdBackup"
metadata:
name: {{ template "etcd-backup-operator.fullname" . }}
namespace: {{ .Release.Namespace }}
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/v1beta1
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:
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 }}
\ No newline at end of file
{{- if .Values.customResources.createEtcdClusterCRD }}
---
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdCluster"
metadata:
name: {{ .Values.etcdCluster.name }}
namespace: {{ .Release.Namespace }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "etcd-operator.name" . }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
{{ if .Values.etcdOperator.clusterWide.enabled }}
annotations:
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:
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.etcdOperator.clusterwide.enabled }}
- -cluster-wide
{{- 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 }}
\ No newline at end of file
{{- if .Values.customResources.createRestoreCRD }}
---
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdRestore"
metadata:
# An EtcdCluster with the same name will be created
name: {{ .Values.etcdCluster.name }}
namespace: {{ .Release.Namespace }}
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/v1beta1
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:
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 }}
\ No newline at end of file
{{- 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:
# 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: true
# one time deployment, delete once completed
# Ref: https://github.com/coreos/etcd-operator/blob/master/doc/user/walkthrough/restore-operator.md
restoreOperator: true
# creates custom resources, not all required,
# you could use `helm template --values <values.yaml> --name release_name ... `
# and create the resources yourself to deploy on your cluster later
customResources:
createEtcdClusterCRD: false
createBackupCRD: false
createRestoreCRD: false
# etcdOperator
etcdOperator:
# enabled to act for resources in all namespaces. More information in doc/clusterwide.md
clusterwide:
enabled: true
name: etcd-operator
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: {}
## 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: etcd-backup-operator
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: {}
# restore spec
restoreOperator:
name: etcd-restore-operator
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: {}
## etcd-cluster specific values
etcdCluster:
name: etcd-cluster
size: 3
version: 3.2.10
image:
repository: quay.io/coreos/etcd
tag: v3.2.10
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