Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve installer #212

Merged
merged 1 commit into from
Apr 30, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 23 additions & 21 deletions chart/kubedb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ To install the chart with the release name `my-release`:
```console
$ helm install appscode/kubedb --name my-release
```

The command deploys KubeDB operator on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.

> **Tip**: List all releases using `helm list`
Expand All @@ -39,26 +40,27 @@ The command removes all the Kubernetes components associated with the chart and

## Configuration

The following tables lists the configurable parameters of the KubeDB chart and their default values.


| Parameter | Description | Default |
| -----------------------------------| ------------------------------------------------------------------ | ------------------ |
| `replicaCount` | Number of kubedb operator replicas to create (only 1 is supported) | `1` |
| `dockerRegistry` | Docker registry used to pull KubeDB related images | `kubedb` |
| `imageTags.operator` | Tag of KubeDB operator image | `0.8.0-beta.2` |
| `imageTags.exporter` | Tag of KubeDB operator image | `0.8.0-beta.2` |
| `imageTags.apiserver` | Tag of KubeDB server image | `0.1.0-beta.2` |
| `imagePullSecrets` | Specify image pull secrets | `nil` (does not add image pull secrets to deployed pods) |
| `imagePullPolicy` | Image pull policy | `IfNotPresent` |
| `criticalAddon` | If true, installs KubeDB operator as critical addon | `false` |
| `rbac.create` | If `true`, create and use RBAC resources | `true` |
| `serviceAccount.create` | If `true`, create a new service account | `true` |
| `serviceAccount.name` | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the fullname template | `` |
| `apiserver.groupPriorityMinimum` | The minimum priority the group should have. | 10000 |
| `apiserver.versionPriority` | The ordering of this API inside of the group. | 15 |
| `apiserver.enableAdmissionWebhook` | Configure apiserver as admission webhooks for KubeDB CRDs | false |
| `apiserver.ca` | CA certificate used by main Kubernetes api server | `` |
The following table lists the configurable parameters of the KubeDB chart and their default values.


| Parameter | Description | Default |
| ----------------------------------- | ------------------------------------------------------------------ | ------------------ |
| `replicaCount` | Number of kubedb operator replicas to create (only 1 is supported) | `1` |
| `kubedb.registry` | Docker registry used to pull Kubedb operator image | `kubedb` |
| `kubedb.repository` | Kubedb operator container image | `operator` |
| `kubedb.tag` | Kubedb operator container image tag | `0.8.0-beta.2` |
| `imagePullSecrets` | Specify image pull secrets | `nil` (does not add image pull secrets to deployed pods) |
| `imagePullPolicy` | Image pull policy | `IfNotPresent` |
| `criticalAddon` | If true, installs KubeDB operator as critical addon | `false` |
| `rbac.create` | If `true`, create and use RBAC resources | `true` |
| `serviceAccount.create` | If `true`, create a new service account | `true` |
| `serviceAccount.name` | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the fullname template | `` |
| `apiserver.groupPriorityMinimum` | The minimum priority the group should have. | 10000 |
| `apiserver.versionPriority` | The ordering of this API inside of the group. | 15 |
| `apiserver.enableValidatingWebhook` | Enable validating webhooks for KubeDB CRDs | false |
| `apiserver.enableMutatingWebhook` | Enable mutating webhooks for KubeDB CRDs | false |
| `apiserver.ca` | CA certificate used by main Kubernetes api server | `` |
| `enableAnalytics` | Send usage events to Google Analytics | `true` |


Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example:
Expand All @@ -79,7 +81,7 @@ By default the chart will not install the recommended RBAC roles and rolebinding

You need to have the flag `--authorization-mode=RBAC` on the api server. See the following document for how to enable [RBAC](https://kubernetes.io/docs/admin/authorization/rbac/).

To determine if your cluster supports RBAC, run the the following command:
To determine if your cluster supports RBAC, run the following command:

```console
$ kubectl api-versions | grep rbac
Expand Down
24 changes: 22 additions & 2 deletions chart/kubedb/templates/apiregistration.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,33 @@
apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
name: v1alpha1.admission.kubedb.com
name: v1alpha1.validators.kubedb.com
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "kubedb.name" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
spec:
group: admission.kubedb.com
group: validators.kubedb.com
version: v1alpha1
service:
namespace: {{ .Release.Namespace }}
name: {{ template "kubedb.fullname" . }}
caBundle: {{ b64enc $ca.Cert }}
groupPriorityMinimum: {{ .Values.apiserver.groupPriorityMinimum }}
versionPriority: {{ .Values.apiserver.versionPriority }}
---
apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
name: v1alpha1.mutators.kubedb.com
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "kubedb.name" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
spec:
group: mutators.kubedb.com
version: v1alpha1
service:
namespace: {{ .Release.Namespace }}
Expand All @@ -26,6 +45,7 @@ apiVersion: v1
kind: Secret
metadata:
name: {{ template "kubedb.fullname" . }}-apiserver-cert
namespace: {{ .Release.Namespace }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "kubedb.name" . }}"
Expand Down
24 changes: 9 additions & 15 deletions chart/kubedb/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "kubedb.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "kubedb.name" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
initializers:
pending: []
spec:
replicas: {{ .Values.replicaCount }}
selector:
Expand All @@ -32,31 +31,26 @@ spec:
{{- end }}
containers:
- name: operator
image: {{ .Values.dockerRegistry }}/operator:{{ .Values.imageTags.operator }}
image: {{ .Values.kubedb.registry }}/{{ .Values.kubedb.repository }}:{{ .Values.kubedb.tag }}
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
- run
- --v=3
- --docker-registry={{ .Values.dockerRegistry }}
- --exporter-tag={{ .Values.imageTags.exporter }}
- --docker-registry={{ .Values.kubedb.registry }}
- --exporter-tag={{ .Values.kubedb.tag }}
- --governing-service=kubedb
- --rbac={{ .Values.rbac.create }}
- --secure-port=8443
- --audit-log-path=-
- --tls-cert-file=/var/serving-cert/tls.crt
- --tls-private-key-file=/var/serving-cert/tls.key
- --enable-analytics={{ .Values.enableAnalytics }}
env:
- name: OPERATOR_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: server
image: {{ .Values.dockerRegistry }}/kubedb-server:{{ .Values.imageTags.apiserver }}
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
- run
- --v=3
- --secure-port=8443
- --audit-log-path=-
- --tls-cert-file=/var/serving-cert/tls.crt
- --tls-private-key-file=/var/serving-cert/tls.key
ports:
- containerPort: 8443
volumeMounts:
Expand Down
103 changes: 103 additions & 0 deletions chart/kubedb/templates/mutating-webhook.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{{- if .Values.apiserver.enableMutatingWebhook }}
apiVersion: admissionregistration.k8s.io/v1beta1
kind: MutatingWebhookConfiguration
metadata:
name: mutators.kubedb.com
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "kubedb.name" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
webhooks:
- name: elasticsearch.mutators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/mutators.kubedb.com/v1alpha1/elasticsearchs
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["elasticsearches"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: postgres.mutators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/mutators.kubedb.com/v1alpha1/postgress
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["postgreses"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: mysql.mutators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/mutators.kubedb.com/v1alpha1/mysqls
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["mysqls"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: mongodb.mutators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/mutators.kubedb.com/v1alpha1/mongodbs
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["mongodbs"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: redis.mutators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/mutators.kubedb.com/v1alpha1/rediss
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["redises"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: memcached.mutators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/mutators.kubedb.com/v1alpha1/memcacheds
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["memcacheds"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: snapshot.mutators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/mutators.kubedb.com/v1alpha1/snapshots
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["snapshots"]
operations: ["CREATE", "UPDATE"]
failurePolicy: Fail
{{ end }}
1 change: 1 addition & 0 deletions chart/kubedb/templates/service-account.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "kubedb.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "kubedb.name" . }}"
Expand Down
1 change: 1 addition & 0 deletions chart/kubedb/templates/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ apiVersion: v1
kind: Service
metadata:
name: {{ template "kubedb.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
app: "{{ template "kubedb.name" . }}"
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,98 +1,98 @@
{{- if .Values.apiserver.enableAdmissionWebhook }}
{{- if .Values.apiserver.enableValidatingWebhook }}
apiVersion: admissionregistration.k8s.io/v1beta1
kind: ValidatingWebhookConfiguration
metadata:
name: admission.kubedb.com
name: validators.kubedb.com
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: "{{ template "kubedb.name" . }}"
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
webhooks:
- name: elasticsearch.admission.kubedb.com
- name: elasticsearch.validators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/admission.kubedb.com/v1alpha1/elasticsearchreviews
path: /apis/validators.kubedb.com/v1alpha1/elasticsearchs
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["elasticsearches"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: postgres.admission.kubedb.com
- name: postgres.validators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/admission.kubedb.com/v1alpha1/postgresreviews
path: /apis/validators.kubedb.com/v1alpha1/postgress
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["postgreses"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: mysql.admission.kubedb.com
- name: mysql.validators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/admission.kubedb.com/v1alpha1/mysqlreviews
path: /apis/validators.kubedb.com/v1alpha1/mysqls
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["mysqls"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: mongodb.admission.kubedb.com
- name: mongodb.validators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/admission.kubedb.com/v1alpha1/mongodbreviews
path: /apis/validators.kubedb.com/v1alpha1/mongodbs
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["mongodbs"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: redis.admission.kubedb.com
- name: redis.validators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/admission.kubedb.com/v1alpha1/redisreviews
path: /apis/validators.kubedb.com/v1alpha1/rediss
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["redises"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: memcached.admission.kubedb.com
- name: memcached.validators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/admission.kubedb.com/v1alpha1/memcachedreviews
path: /apis/validators.kubedb.com/v1alpha1/memcacheds
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
apiVersions: ["*"]
resources: ["memcacheds"]
operations: ["CREATE", "UPDATE", "DELETE"]
failurePolicy: Fail
- name: snapshot.admission.kubedb.com
- name: snapshot.validators.kubedb.com
clientConfig:
service:
namespace: default
name: kubernetes
path: /apis/admission.kubedb.com/v1alpha1/snapshotreviews
path: /apis/validators.kubedb.com/v1alpha1/snapshots
caBundle: {{ b64enc .Values.apiserver.ca }}
rules:
- apiGroups: ["kubedb.com"]
Expand Down
Loading