diff --git a/cinder/templates/bin/_bootstrap.sh.tpl b/cinder/templates/bin/_bootstrap.sh.tpl new file mode 100644 index 00000000..cbb85012 --- /dev/null +++ b/cinder/templates/bin/_bootstrap.sh.tpl @@ -0,0 +1,33 @@ +#!/bin/bash + +# Copyright 2017 The Openstack-Helm Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex +export HOME=/tmp + +{{ if .Values.bootstrap.enabled }} + +{{ range .Values.bootstrap.volumes }} +openstack volume type show {{ .group }} || \ + openstack volume type create \ + --public \ + --property volume_driver={{ .driver }} \ + --property volume_backend_name={{ .name }} \ +{{ .group }} +{{ end }} + +{{ end }} + +exit 0 diff --git a/cinder/templates/configmap-bin.yaml b/cinder/templates/configmap-bin.yaml index 96d78bf2..95996305 100644 --- a/cinder/templates/configmap-bin.yaml +++ b/cinder/templates/configmap-bin.yaml @@ -25,3 +25,5 @@ data: {{- include "helm-toolkit.keystone_endpoints" . | indent 4 }} ks-user.sh: |+ {{- include "helm-toolkit.keystone_user" . | indent 4 }} + bootstrap.sh: |+ +{{ tuple "bin/_bootstrap.sh.tpl" . | include "helm-toolkit.template" | indent 4 }} diff --git a/cinder/templates/job-bootstrap.yaml b/cinder/templates/job-bootstrap.yaml new file mode 100644 index 00000000..e4897b8b --- /dev/null +++ b/cinder/templates/job-bootstrap.yaml @@ -0,0 +1,66 @@ +# Copyright 2017 The Openstack-Helm Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{{- $envAll := . }} +{{- $ksAdminSecret := $envAll.Values.keystone.admin_secret | default "cinder-env-keystone-admin" }} +{{- $dependencies := .Values.dependencies.bootstrap }} +apiVersion: batch/v1 +kind: Job +metadata: + name: cinder-bootstrap +spec: + template: + metadata: + annotations: + pod.beta.kubernetes.io/init-containers: '[ +{{ tuple $envAll $dependencies "[]" | include "helm-toolkit.kubernetes_entrypoint_init_container" | indent 10 }} + ]' + spec: + restartPolicy: OnFailure + nodeSelector: + {{ .Values.labels.node_selector_key }}: {{ .Values.labels.node_selector_value }} + containers: + - name: cinder-bootstrap + image: {{ .Values.images.bootstrap }} + imagePullPolicy: {{ .Values.images.pull_policy }} + {{- if .Values.resources.enabled }} + resources: + requests: + memory: {{ .Values.resources.bootstrap.requests.memory | quote }} + cpu: {{ .Values.resources.bootstrap.requests.cpu | quote }} + limits: + memory: {{ .Values.resources.bootstrap.limits.memory | quote }} + cpu: {{ .Values.resources.bootstrap.limits.cpu | quote }} + {{- end }} + command: + - bash + - /tmp/bootstrap.sh + env: +{{- with $env := dict "ksUserSecret" $ksAdminSecret }} +{{- include "helm-toolkit.keystone_openrc_env_vars" $env | indent 12 }} +{{- end }} + volumeMounts: + - name: cinderconf + mountPath: /etc/cinder/cinder.conf + subPath: cinder.conf + - name: cinder-bin + mountPath: /tmp/bootstrap.sh + subPath: bootstrap.sh + volumes: + - name: cinderconf + configMap: + name: cinder-etc + - name: cinder-bin + configMap: + name: cinder-bin diff --git a/cinder/values.yaml b/cinder/values.yaml index 9cbb4a81..8d23fac2 100644 --- a/cinder/values.yaml +++ b/cinder/values.yaml @@ -34,6 +34,7 @@ images: db_init: quay.io/stackanetes/stackanetes-kolla-toolbox:newton db_sync: quay.io/stackanetes/stackanetes-cinder-api:newton api: quay.io/stackanetes/stackanetes-cinder-api:newton + bootstrap: quay.io/stackanetes/stackanetes-cinder-api:newton scheduler: quay.io/stackanetes/stackanetes-cinder-scheduler:newton volume: quay.io/stackanetes/stackanetes-cinder-volume:newton pull_policy: "IfNotPresent" @@ -45,6 +46,14 @@ upgrades: max_unavailable: 1 max_surge: 3 +bootstrap: + enabled: true + volumes: + ceph: + name: "ceph" + group: "cinder-ceph" + driver: "cinder.volume.driver.RBDDriver" + keystone: admin_user: "admin" admin_user_domain: "default" @@ -128,6 +137,10 @@ dependencies: - cinder-ks-service service: - keystone-api + bootstrap: + service: + - keystone-api + - cinder-api api: jobs: - cinder-db-sync @@ -258,3 +271,10 @@ resources: limits: memory: "1024Mi" cpu: "2000m" + bootstrap: + requests: + memory: "124Mi" + cpu: "100m" + limits: + memory: "1024Mi" + cpu: "2000m"