Commit d6a7bf7d by Murat Karslioglu Committed by Guangbo

Added OpenEBS v0.6.0 Chart. (#32)

* Add OpenEBS v0.6.0 Chart. Signed-off-by: 's avatarMurat Karslioglu <muratkarslioglu@gmail.com> * Update questions.yml 1. added to enable or disable monitoring via the UI config 2. fix the UI int min and max config * set default monitoring enabled to ture
parent c093535e
# 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
version: 0.6.0
name: openebs
appVersion: 0.6.0
description: Containerized Storage for Containers
icon: https://raw.githubusercontent.com/openebs/chitrakala/master/OpenEBS%20logo/openebs%20logos-03.png
home: http://www.openebs.io/
keywords:
- cloud-native-storage
- block-storage
- iSCSI
- storage
sources:
- https://github.com/openebs/openebs
## Prerequisites
- Kubernetes 1.7.5+ with RBAC enabled
- iSCSI PV support in the underlying infrastructure
- Make sure 'open-iscsi' has been installed in all nodes of the Kubernetes
cluster on both host and rke kubelet.
- helm is installed and the tiller has admin privileges. To assign admin
to tiller, login as admin and use the following instructions:
```bash
kubectl -n kube-system create sa tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
kubectl -n kube-system patch deploy/tiller-deploy -p '{"spec": {"template": {"spec": {"serviceAccountName": "tiller"}}}}'
kubectl -n kube-system patch deployment tiller-deploy -p '{"spec": {"template": {"spec": {"automountServiceAccountToken": true}}}}'
```
- A namespace called "openebs" is created in the Cluster for running the
below instructions: `kubectl create namespace openebs`
## Installing OpenEBS Charts Repository
```bash
helm repo add openebs-charts https://openebs.github.io/charts/
helm repo update
helm install openebs-charts/openebs --name openebs --namespace openebs
```
## Installing OpenEBS from this codebase
```bash
git clone https://github.com/openebs/openebs.git
cd openebs/k8s/charts/openebs/
helm install --name openebs --namespace openebs .
```
## Verify that OpenEBS Volumes can be created
```bash
#Check the OpenEBS Management Pods are running
kubectl get pods -n openebs
#Create a test PVC
kubectl apply -f https://raw.githubusercontent.com/openebs/openebs/master/k8s/demo/pvc.yaml
#Check the OpenEBS Volume Pods are created.
kubectl get pods
#Delete the test volume and associated Volume Pods.
kubectl delete -f https://raw.githubusercontent.com/openebs/openebs/master/k8s/demo/pvc.yaml
```
## Unistalling OpenEBS from Chart codebase
```bash
helm ls --all
# Note the openebs-chart-name from above command
helm del --purge <openebs-chart-name>
```
## Configuration
The following table lists the configurable parameters of OpenEBS chart and their default values.
| Parameter | Description | Default |
| ---------------------------------------| --------------------------------------------- | --------------------------------- |
| `rbac.create` | Enable RBAC Resources | `true` |
| `image.pullPolicy` | Container pull policy | `IfNotPresent` |
| `apiserver.image` | Docker Image for API Server | `openebs/m-apiserver` |
| `apiserver.imageTag` | Docker Image Tag for API Server | `0.6.0` |
| `apiserver.replicas` | Number of API Server Replicas | `1` |
| `provisioner.image` | Docker Image for Provisioner | `openebs/openebs-k8s-provisioner` |
| `provisioner.imageTag` | Docker Image Tag for Provisioner | `0.6.0` |
| `provisioner.replicas` | Number of Provisioner Replicas | `1` |
| `snapshotOperator.provisioner.image` | Docker Image for Snapshot Provisioner | `openebs/snapshot-provisioner` |
| `snapshotOperator.provisioner.imageTag`| Docker Image Tag for Snapshot Provisioner | `0.6.0` |
| `snapshotOperator.controller.image` | Docker Image for Snapshot Controller | `openebs/snapshot-controller` |
| `snapshotOperator.controller.imageTag` | Docker Image Tag for Snapshot Controller | `0.6.0` |
| `snapshotOperator.replicas` | Number of Snapshot Operator Replicas | `1` |
| `jiva.image` | Docker Image for Jiva | `openebs/jiva` |
| `jiva.imageTag` | Docker Image Tag for Jiva | `0.6.0` |
| `jiva.replicas` | Number of Jiva Replicas | `3` |
| `jiva.replicaNodeSelector.enabled` | Enable scheduling replicas with node selector | `false` |
| `jiva.replicaNodeSelector.value` | node labels assigned to replica pods | `nodetype=storage` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
```shell
helm install --name openebs -f values.yaml openebs-charts/openebs
```
> **Tip**: You can use the default [values.yaml](values.yaml)
# OpenEBS
OpenEBS is an open source storage platform that provides persistent container attached, cloud-native block storage for DevOps and for Kubernetes environments.
OpenEBS allows you to treat your persistent workload containers, such as DBs on containers, just like other containers. OpenEBS itself is deployed as just another container on your host and enables storage services that can be designated on a per pod, application, cluster or container level, including:
- Data persistence across nodes, dramatically reducing time spent rebuilding Cassandra rings for example.
- Synchronization of data across availability zones and cloud providers.
- Use of commodity hardware plus a container engine to deliver so called container attached block storage.
- Integration with Kubernetes, so developer and application intent flows into OpenEBS configurations automatically.
- Management of tiering to and from S3 and other targets.
categories:
- storage
namespace: openebs
questions:
- variable: defaultImage
default: "true"
description: "Use default OpenEBS Docker image"
label: Use Default Image
type: boolean
show_subquestion_if: false
group: "Container Images"
subquestions:
- variable: apiserver.image
default: "openebs/m-apiserver"
description: "Default API Server image for OpenEBS"
type: string
label: API Server Image
- variable: apiserver.imageTag
default: "0.6.0"
description: "The image tag of API Server image"
type: string
label: Image Tag For OpenEBS API Server Image
- variable: provisioner.image
default: "openebs/openebs-k8s-provisioner"
description: "Default K8s Provisioner image for OpenEBS"
type: string
label: Provisioner Image
- variable: provisioner.imageTag
default: "0.6.0"
description: "The image tag of Provisioner image"
type: string
label: Image Tag For Provisioner Image
- variable: snapshotOperator.controller.image
default: "openebs/snapshot-controller"
description: "Default Snapshot Controller image for OpenEBS"
type: string
label: Snapshot Controller Image
- variable: snapshotOperator.controller.imageTag
default: "0.6.0"
description: "The image tag of Snapshot Controller image"
type: string
label: Image Tag For OpenEBS Snapshot Controller Image
- variable: snapshotOperator.provisioner.image
default: "openebs/snapshot-provisioner"
description: "Default Snapshot Provisioner image for OpenEBS"
type: string
label: Snapshot Provisioner Image
- variable: snapshotOperator.provisioner.imageTag
default: "0.6.0"
description: "The image tag of Snapshot Provisioner image"
type: string
label: Image Tag For OpenEBS Snapshot Provisioner Image
- variable: jiva.image
default: "openebs/jiva"
description: "Default Jiva Storage Engine image for OpenEBS"
type: string
label: Jiva Storage Enginer Image
- variable: jiva.imageTag
default: "0.6.0"
description: "The image tag of Jiva image"
type: string
label: Image Tag For OpenEBS Jiva Storage Engine Image
- variable: grafana.image
default: "grafana/grafana"
description: "Default Grafana Dashboard image"
type: string
label: Grafana Dashboard Image
show_if: "policies.monitoring.enabled=true&&defaultImage=false"
- variable: grafana.imageTag
default: "4.6.3"
description: "The image tag of Grafana Dashboard"
type: string
label: Image Tag For Grafana Image
show_if: "policies.monitoring.enabled=true&&defaultImage=false"
- variable: prometheus.image
default: "prom/prometheus"
description: "Default Prometheus image"
type: string
label: Prometheus Image
show_if: "policies.monitoring.enabled=true&&defaultImage=false"
- variable: prometheus.imageTag
default: "v2.1.0"
description: "The image tag of Prometheus"
type: string
label: Image Tag For Prometheus Image
show_if: "policies.monitoring.enabled=true&&defaultImage=false"
- variable: policies.monitoring.image
default: "openebs/m-exporter"
description: "Default OpeneEBS Exporter image"
type: string
label: Monitoring Exporter Image
show_if: "policies.monitoring.enabled=true&&defaultImage=false"
- variable: policies.monitoring.imageTag
default: "0.6.0"
description: "The image tag of OpenEBS Exporter"
type: string
label: Image Tag For OpenEBS Exporter Image
show_if: "policies.monitoring.enabled=true&&defaultImage=false"
- variable: defaultPorts
default: "true"
description: "Use default Communication Ports"
label: Use Default Ports
type: boolean
show_subquestion_if: false
group: "Communication Ports"
subquestions:
- variable: apiserver.ports.externalPort
default: 5656
description: "Default External Port for OpenEBS API Server"
type: int
min: 0
max: 9999
label: OpenEBS API Server External Port
- variable: apiserver.ports.internalPort
default: 5656
description: "Default Internal Port for OpenEBS API Server"
type: int
min: 0
max: 9999
label: OpenEBS API Server Internal Port
- variable: grafana.ports.externalPort
default: 3000
description: "Default External Port for Grafana Dashboard"
type: int
min: 0
max: 9999
label: Grafana Dashboard External Port
show_if: "policies.monitoring.enabled=true&&defaultPorts=false"
- variable: grafana.ports.internalPort
default: 3000
description: "Default Internal Port for Grafana Dashboard"
type: int
min: 0
max: 9999
label: Grafana Dashboard Internal Port
show_if: "policies.monitoring.enabled=true&&defaultPorts=false"
- variable: grafana.ports.nodePort
default: 32515
min: 30000
max: 32767
description: "Default Node Port for Grafana Dashboard"
type: int
label: Grafana Dashboard Node Port
show_if: "policies.monitoring.enabled=true&&defaultPorts=false"
- variable: prometheus.ports.externalPort
default: 80
description: "Default External Port for Prometheus"
type: int
min: 0
max: 9999
label: Prometheus External Port
show_if: "policies.monitoring.enabled=true&&defaultPorts=false"
- variable: prometheus.ports.internalPort
default: 9090
min: 0
max: 9999
description: "Default Internal Port for Prometheus"
type: int
label: Prometheus Internal Port
show_if: "policies.monitoring.enabled=true&&defaultPorts=false"
- variable: prometheus.ports.nodePort
default: 32514
description: "Default Node Port for Prometheus"
type: int
min: 30000
max: 32767
label: Prometheus Node Port
show_if: "policies.monitoring.enabled=true&&defaultPorts=false"
- variable: jiva.replicas
default: 3
description: "Default number of Jiva Replicas"
type: int
min: 0
max: 99
label: Jiva Replicas
group: "Storage Engine Settings"
- variable: policies.monitoring.enabled
default: true
description: "Enable prometheus monitoring"
type: boolean
label: Enable Prometheus Monitoring
group: "Monitoring Settings"
------------------------------------------------------------------------------
IMPORTANT!!
DEPRECATION NOTICE:
The support for this chart will be discontinued soon. Please plan to migrate
and use stable/openebs chart located at:
https://github.com/kubernetes/charts/tree/master/stable/openebs
------------------------------------------------------------------------------
The OpenEBS has been installed. Check its status by running:
kubectl get pods -n {{ .Release.Namespace }}
Please note that, OpenEBS uses iSCSI for connecting applications with the
OpenEBS Volumes and your nodes should have the iSCSI initiator installed.
For more information, please visit http://docs.openebs.io/.
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "openebs.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).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "openebs.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "openebs.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "openebs.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "openebs.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
{{- if .Values.rbac.create }}
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: {{ template "openebs.fullname" . }}
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
- apiGroups: ["*"]
resources: ["nodes","nodes/proxy"]
verbs: ["get","list","watch","create","update"]
- apiGroups: ["*"]
resources: ["namespaces", "services", "pods", "deployments", "events", "endpoints"]
verbs: ["*"]
- apiGroups: ["*"]
resources: ["persistentvolumes","persistentvolumeclaims"]
verbs: ["*"]
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: [ "get", "list", "create" ]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["*"]
- apiGroups: ["*"]
resources: ["storagepools"]
verbs: ["get", "list"]
- apiGroups: ["volumesnapshot.external-storage.k8s.io"]
resources: ["volumesnapshots","volumesnapshotdatas"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
{{- end }}
{{- if .Values.rbac.create }}
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: {{ template "openebs.fullname" . }}
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "openebs.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ template "openebs.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
{{- end }}
{{- if .Values.policies.monitoring.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "openebs.fullname" . }}-prometheus-config
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
component: prometheus-config
data:
prometheus.yml: |-
global:
external_labels:
slave: slave1
scrape_interval: 5s
evaluation_interval: 5s
scrape_configs:
#- job_name: 'prometheus'
#static_configs:
# Added this to allow for federation collection
# Replace localhost with the nodeIP
# - targets: ['localhost:32514']
- job_name: 'openebs-prometheus-server'
scheme: http
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_name]
regex: openebs-prometheus-server
action: keep
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name
- job_name: 'openebs-volumes'
scheme: http
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_monitoring]
regex: volume_exporter_prometheus
action: keep
- source_labels: [__meta_kubernetes_pod_name]
action: replace
target_label: kubernetes_pod_name
- source_labels: [__meta_kubernetes_pod_label_vsm]
action: replace
target_label: openebs_pv
- source_labels: [__meta_kubernetes_pod_container_port_number]
action: drop
regex: '(.*)9501'
- source_labels: [__meta_kubernetes_pod_container_port_number]
action: drop
regex: '(.*)3260'
{{- end }}
{{- if .Values.policies.monitoring.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "openebs.fullname" . }}-prometheus-tunables
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
component: prometheus-tunables
data:
storage-retention: 24h
{{- end }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
# name must match the spec fields below, and be in the form: <plural>.<group>
name: storagepools.openebs.io
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
# group name to use for REST API: /apis/<group>/<version>
group: openebs.io
# version name to use for REST API: /apis/<group>/<version>
version: v1alpha1
# either Namespaced or Cluster
scope: Cluster
names:
# plural name to be used in the URL: /apis/<group>/<version>/<plural>
plural: storagepools
# singular name to be used as an alias on the CLI and for display
singular: storagepool
# kind is normally the CamelCased singular type. Your resource manifests use this.
kind: StoragePool
# shortNames allow shorter string to match your resource on the CLI
shortNames:
- sp
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
# name must match the spec fields below, and be in the form: <plural>.<group>
name: storagepoolclaims.openebs.io
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
# group name to use for REST API: /apis/<group>/<version>
group: openebs.io
# version name to use for REST API: /apis/<group>/<version>
version: v1alpha1
# either Namespaced or Cluster
scope: Cluster
names:
# plural name to be used in the URL: /apis/<group>/<version>/<plural>
plural: storagepoolclaims
# singular name to be used as an alias on the CLI and for display
singular: storagepoolclaim
# kind is normally the CamelCased singular type. Your resource manifests use this.
kind: StoragePoolClaim
# shortNames allow shorter string to match your resource on the CLI
shortNames:
- spc
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "openebs.fullname" . }}-apiserver
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
component: apiserver
spec:
replicas: {{ .Values.apiserver.replicas }}
template:
metadata:
labels:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: apiserver
spec:
serviceAccountName: {{ template "openebs.serviceAccountName" . }}
containers:
- name: {{ template "openebs.name" . }}-apiserver
image: "{{ .Values.apiserver.image }}:{{ .Values.apiserver.imageTag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.apiserver.ports.internalPort }}
env:
# OPENEBS_IO_KUBE_CONFIG enables maya api service to connect to K8s
# based on this config. This is ignored if empty.
# This is supported for maya api server version 0.5.2 onwards
#- name: OPENEBS_IO_KUBE_CONFIG
# value: "/home/ubuntu/.kube/config"
# OPENEBS_IO_K8S_MASTER enables maya api service to connect to K8s
# based on this address. This is ignored if empty.
# This is supported for maya api server version 0.5.2 onwards
#- name: OPENEBS_IO_K8S_MASTER
# value: "http://172.28.128.3:8080"
- name: OPENEBS_IO_JIVA_CONTROLLER_IMAGE
value: "{{ .Values.jiva.image }}:{{ .Values.jiva.imageTag }}"
- name: OPENEBS_IO_JIVA_REPLICA_IMAGE
value: "{{ .Values.jiva.image }}:{{ .Values.jiva.imageTag }}"
- name: OPENEBS_IO_VOLUME_MONITOR_IMAGE
value: "{{ .Values.policies.monitoring.image }}:{{ .Values.policies.monitoring.imageTag }}"
- name: OPENEBS_IO_JIVA_REPLICA_COUNT
value: "{{ .Values.jiva.replicas }}"
{{- if .Values.jiva.replicaNodeSelector.enabled }}
- name: DEFAULT_REPLICA_NODE_SELECTOR
value: "{{ .Values.jiva.replicaNodeSelector.value }}"
{{- end }}
{{- if .Values.apiserver.nodeSelector }}
nodeSelector:
{{ toYaml .Values.apiserver.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.apiserver.tolerations }}
tolerations:
{{ toYaml .Values.apiserver.tolerations | indent 8 }}
{{- end }}
{{- if .Values.apiserver.affinity }}
affinity:
{{ toYaml .Values.apiserver.affinity | indent 8 }}
{{- end }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "openebs.fullname" . }}-provisioner
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
component: provisioner
spec:
replicas: {{ .Values.provisioner.replicas }}
template:
metadata:
labels:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: provisioner
spec:
serviceAccountName: {{ template "openebs.serviceAccountName" . }}
containers:
- name: {{ template "openebs.name" . }}-provisioner
image: "{{ .Values.provisioner.image }}:{{ .Values.provisioner.imageTag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
# OPENEBS_IO_K8S_MASTER enables openebs provisioner to connect to K8s
# based on this address. This is ignored if empty.
# This is supported for openebs provisioner version 0.5.2 onwards
#- name: OPENEBS_IO_K8S_MASTER
# value: "http://10.128.0.12:8080"
# OPENEBS_IO_KUBE_CONFIG enables openebs provisioner to connect to K8s
# based on this config. This is ignored if empty.
# This is supported for openebs provisioner version 0.5.2 onwards
#- name: OPENEBS_IO_KUBE_CONFIG
# value: "/home/ubuntu/.kube/config"
# OPENEBS_NAMESPACE is the namespace that this provisioner will
# lookup to find maya api service
- name: OPENEBS_NAMESPACE
value: "{{ .Release.Namespace }}"
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# OPENEBS_MAYA_SERVICE_NAME provides the maya-apiserver K8s service name,
# that provisioner should forward the volume creaet/delete requests.
# If not present, "maya-apiserver-service" will be used for lookup.
# This is supported for openebs provisioner version 0.5.3-RC1 onwards
- name: OPENEBS_MAYA_SERVICE_NAME
value: "{{ template "openebs.fullname" . }}-apiservice"
# The following values will be set as annotations to the PV object.
# Refer : https://github.com/openebs/external-storage/pull/15
#- name: OPENEBS_MONITOR_URL
# value: "{{ .Values.provisioner.monitorUrl }}"
#- name: OPENEBS_MONITOR_VOLKEY
# value: "{{ .Values.provisioner.monitorVolumeKey }}"
#- name: MAYA_PORTAL_URL
# value: "{{ .Values.provisioner.mayaPortalUrl }}"
{{- if .Values.provisioner.nodeSelector }}
nodeSelector:
{{ toYaml .Values.provisioner.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.provisioner.tolerations }}
tolerations:
{{ toYaml .Values.provisioner.tolerations | indent 8 }}
{{- end }}
{{- if .Values.provisioner.affinity }}
tolerations:
{{ toYaml .Values.provisioner.affinity | indent 8 }}
{{- end }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "openebs.fullname" . }}-snapshot-operator
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
component: snapshot-operator
spec:
replicas: {{ .Values.snapshotOperator.replicas }}
strategy:
type: {{ .Values.snapshotOperator.upgradeStrategy }}
template:
metadata:
labels:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: snapshot-operator
spec:
serviceAccountName: {{ template "openebs.serviceAccountName" . }}
containers:
- name: {{ template "openebs.name" . }}-snapshot-controller
image: "{{ .Values.snapshotOperator.controller.image }}:{{ .Values.snapshotOperator.controller.imageTag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
# OPENEBS_IO_K8S_MASTER enables openebs snapshot controller to connect to K8s
# based on this address. This is ignored if empty.
# This is supported for openebs snapshot controller version 0.6-RC1 onwards
#- name: OPENEBS_IO_K8S_MASTER
# value: "http://10.128.0.12:8080"
# OPENEBS_IO_KUBE_CONFIG enables openebs snapshot controller to connect to K8s
# based on this config. This is ignored if empty.
# This is supported for openebs snapshot controller version 0.6-RC1 onwards
#- name: OPENEBS_IO_KUBE_CONFIG
# value: "/home/ubuntu/.kube/config"
# OPENEBS_NAMESPACE is the namespace that this snapshot controller will
# lookup to find maya api service
- name: OPENEBS_NAMESPACE
value: "{{ .Release.Namespace }}"
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# OPENEBS_MAYA_SERVICE_NAME provides the maya-apiserver K8s service name,
# that snapshot controller should forward the volume snapshot requests.
# If not present, "maya-apiserver-service" will be used for lookup.
# This is supported for openebs snapshot controller version 0.6-RC1 onwards
- name: OPENEBS_MAYA_SERVICE_NAME
value: "{{ template "openebs.fullname" . }}-apiservice"
- name: {{ template "openebs.name" . }}-snapshot-provisioner
image: "{{ .Values.snapshotOperator.provisioner.image }}:{{ .Values.snapshotOperator.provisioner.imageTag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
# OPENEBS_IO_K8S_MASTER enables openebs snapshot provisioner to connect to K8s
# based on this address. This is ignored if empty.
# This is supported for openebs snapshot provisioner version 0.6-RC1 onwards
#- name: OPENEBS_IO_K8S_MASTER
# value: "http://10.128.0.12:8080"
# OPENEBS_IO_KUBE_CONFIG enables openebs snapshot provisioner to connect to K8s
# based on this config. This is ignored if empty.
# This is supported for openebs snapshot provisioner version 0.6-RC1 onwards
#- name: OPENEBS_IO_KUBE_CONFIG
# value: "/home/ubuntu/.kube/config"
# OPENEBS_NAMESPACE is the namespace that this snapshot provisioner will
# lookup to find maya api service
- name: OPENEBS_NAMESPACE
value: "{{ .Release.Namespace }}"
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# OPENEBS_MAYA_SERVICE_NAME provides the maya-apiserver K8s service name,
# that snapshot provisioner should forward the volume snapshot PV requests.
# If not present, "maya-apiserver-service" will be used for lookup.
# This is supported for openebs snapshot provisioner version 0.6-RC1 onwards
- name: OPENEBS_MAYA_SERVICE_NAME
value: "{{ template "openebs.fullname" . }}-apiservice"
{{- if .Values.snapshotOperator.nodeSelector }}
nodeSelector:
{{ toYaml .Values.snapshotOperator.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.snapshotOperator.tolerations }}
tolerations:
{{ toYaml .Values.snapshotOperator.tolerations | indent 8 }}
{{- end }}
{{- if .Values.snapshotOperator.affinity }}
tolerations:
{{ toYaml .Values.snapshotOperator.affinity | indent 8 }}
{{- end }}
{{- if .Values.policies.monitoring.enabled }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "openebs.fullname" . }}-grafana
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
component: grafana
spec:
replicas: 1
revisionHistoryLimit: 2
template:
metadata:
labels:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: grafana
spec:
serviceAccountName: {{ template "openebs.serviceAccountName" . }}
containers:
- name: {{ template "openebs.name" . }}-grafana
image: "{{ .Values.grafana.image }}:{{ .Values.grafana.imageTag }}"
ports:
- containerPort: {{ .Values.grafana.ports.internalPort }}
env:
- name: GF_AUTH_BASIC_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "false"
livenessProbe:
httpGet:
path: /
port: {{ .Values.grafana.ports.internalPort }}
initialDelaySeconds: 30
timeoutSeconds: 1
{{- end }}
{{- if .Values.policies.monitoring.enabled }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "openebs.fullname" . }}-prometheus
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
component: prometheus
spec:
replicas: 1
template:
metadata:
labels:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: prometheus
spec:
serviceAccountName: {{ template "openebs.serviceAccountName" . }}
containers:
- name: {{ template "openebs.name" . }}-prometheus
image: "{{ .Values.prometheus.image }}:{{ .Values.prometheus.imageTag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args:
- "--config.file=/etc/prometheus/conf/prometheus.yml"
# Metrics are stored in an emptyDir volume which
# exists as long as the Pod is running on that Node.
# The data in an emptyDir volume is safe across container crashes.
- "--storage.tsdb.path=/prometheus"
# How long to retain samples in the local storage.
- "--storage.tsdb.retention=$(STORAGE_RETENTION)"
ports:
- containerPort: {{ .Values.prometheus.ports.internalPort }}
env:
# environment vars are stored in prometheus-env configmap.
- name: STORAGE_RETENTION
valueFrom:
configMapKeyRef:
name: {{ template "openebs.fullname" . }}-prometheus-tunables
key: storage-retention
resources:
requests:
# A memory request of 250M means it will try to ensure minimum
# 250MB RAM .
memory: "128M"
# A cpu request of 128m means it will try to ensure minimum
# .125 CPU; where 1 CPU means :
# 1 *Hyperthread* on a bare-metal Intel processor with Hyperthreading
cpu: "128m"
limits:
memory: "700M"
cpu: "500m"
volumeMounts:
# prometheus config file stored in the given mountpath
- name: prometheus-server-volume
mountPath: /etc/prometheus/conf
# metrics collected by prometheus will be stored at the given mountpath.
- name: prometheus-storage-volume
mountPath: /prometheus
volumes:
# Prometheus Config file will be stored in this volume
- name: prometheus-server-volume
configMap:
name: {{ template "openebs.fullname" . }}-prometheus-config
# All the time series stored in this volume in form of .db file.
- name: prometheus-storage-volume
# containers in the Pod can all read and write the same files here.
emptyDir: {}
{{- end }}
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-cassandra
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-es-data-sc
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-jupyter
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-kafka
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-mongodb
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
openebs.io/fstype: "xfs"
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-percona
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-redis
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-standalone
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "1"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-standard
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-zk
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: openebs.io/provisioner-iscsi
parameters:
openebs.io/storage-pool: "default"
openebs.io/jiva-replica-count: "{{ .Values.jiva.replicas }}"
openebs.io/volume-monitor: "true"
openebs.io/capacity: 5G
# Define a storage classes supported by OpenEBS
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-snapshot-promoter
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
provisioner: volumesnapshot.external-storage.k8s.io/snapshot-promoter
apiVersion: v1
kind: Service
metadata:
name: {{ template "openebs.fullname" . }}-apiservice
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
ports:
- name: api
port: {{ .Values.apiserver.ports.externalPort }}
targetPort: {{ .Values.apiserver.ports.internalPort }}
protocol: TCP
selector:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: apiserver
sessionAffinity: None
{{- if .Values.policies.monitoring.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "openebs.fullname" . }}-grafana-service
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: NodePort
ports:
- port: {{ .Values.grafana.ports.externalPort }}
targetPort: {{ .Values.grafana.ports.internalPort }}
nodePort: {{ .Values.grafana.ports.nodePort }}
selector:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: grafana
{{- end }}
{{- if .Values.policies.monitoring.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "openebs.fullname" . }}-prometheus-service
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: NodePort
ports:
- port: {{ .Values.prometheus.ports.externalPort }} # this Service's port (cluster-internal IP clusterIP)
targetPort: {{ .Values.prometheus.ports.internalPort }} # pods expose this port
nodePort: {{ .Values.prometheus.ports.nodePort }}
# Note that this Service will be visible as both NodeIP:nodePort and clusterIp:Port
selector:
app: {{ template "openebs.name" . }}
release: {{ .Release.Name }}
component: prometheus
{{- end }}
{{- if .Values.serviceAccount.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "openebs.serviceAccountName" . }}
labels:
app: {{ template "openebs.name" . }}
chart: {{ template "openebs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- end }}
# Default values for openebs.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
rbac:
# Specifies whether RBAC resources should be created
create: true
serviceAccount:
create: true
name:
image:
pullPolicy: IfNotPresent
apiserver:
image: "openebs/m-apiserver"
imageTag: "0.6.0"
replicas: 1
ports:
externalPort: 5656
internalPort: 5656
nodeSelector: {}
tolerations: {}
affinity: {}
provisioner:
image: "openebs/openebs-k8s-provisioner"
imageTag: "0.6.0"
replicas: 1
nodeSelector: {}
tolerations: {}
affinity: {}
snapshotOperator:
controller:
image: "openebs/snapshot-controller"
imageTag: "0.6.0"
provisioner:
image: "openebs/snapshot-provisioner"
imageTag: "0.6.0"
replicas: 1
upgradeStrategy: "Recreate"
nodeSelector: {}
tolerations: {}
affinity: {}
jiva:
image: "openebs/jiva"
imageTag: "0.6.0"
replicas: 3
replicaNodeSelector:
# Enable this option and specify the node label that will be used to
# select the nodes where replica pods are scheduled. To use this feature,
# the nodes should already be labeled with the key=value. For example:
# `kubectl label nodes <node-name> nodetype=storage
enabled: false
value: "nodetype=storage"
grafana:
image: "grafana/grafana"
imageTag: "4.6.3"
ports:
externalPort: 3000
internalPort: 3000
nodePort: 32515
prometheus:
image: "prom/prometheus"
imageTag: "v2.1.0"
ports:
externalPort: 80
internalPort: 9090
nodePort: 32514
policies:
monitoring:
enabled: true
image: "openebs/m-exporter"
imageTag: "0.6.0"
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