From af493beb047981be5fea3383043879af1f03af5e Mon Sep 17 00:00:00 2001 From: Pete Birley Date: Mon, 12 Jun 2017 11:04:36 -0500 Subject: [PATCH] Keystone Bootstrapping This PS adds a bootstrapping option to the Keystone Chart. Partially implements: blueprint service-bootstrap See: https://blueprints.launchpad.net/openstack-helm/+spec/service-bootstrap Change-Id: I01432967d2ad71249e90d4beda3380125b210a7f --- keystone/templates/bin/_bootstrap.sh.tpl | 18 +++++++ keystone/templates/configmap-bin.yaml | 4 ++ keystone/templates/job-bootstrap.yaml | 63 ++++++++++++++++++++++++ keystone/values.yaml | 18 +++++++ 4 files changed, 103 insertions(+) create mode 100644 keystone/templates/bin/_bootstrap.sh.tpl create mode 100644 keystone/templates/job-bootstrap.yaml diff --git a/keystone/templates/bin/_bootstrap.sh.tpl b/keystone/templates/bin/_bootstrap.sh.tpl new file mode 100644 index 0000000000..81a1391466 --- /dev/null +++ b/keystone/templates/bin/_bootstrap.sh.tpl @@ -0,0 +1,18 @@ +#!/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 +{{ .Values.bootstrap.script | default "echo 'Not Enabled'" }} diff --git a/keystone/templates/configmap-bin.yaml b/keystone/templates/configmap-bin.yaml index ccbd9c003b..f12e697224 100644 --- a/keystone/templates/configmap-bin.yaml +++ b/keystone/templates/configmap-bin.yaml @@ -17,6 +17,10 @@ kind: ConfigMap metadata: name: keystone-bin data: +{{- if .Values.bootstrap.enabled }} + bootstrap.sh: |+ +{{ tuple "bin/_bootstrap.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }} +{{- end }} rally-test.sh: | {{- include "helm-toolkit.scripts.rally_test" . | indent 4 }} db-init.py: | diff --git a/keystone/templates/job-bootstrap.yaml b/keystone/templates/job-bootstrap.yaml new file mode 100644 index 0000000000..d18d307d5e --- /dev/null +++ b/keystone/templates/job-bootstrap.yaml @@ -0,0 +1,63 @@ +# 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. + +{{- if .Values.bootstrap.enabled }} +{{- $envAll := . }} +{{- $ksAdminSecret := $envAll.Values.keystone.admin_secret | default "keystone-env-keystone-admin" }} +{{- $dependencies := .Values.dependencies.bootstrap }} +{{- $mounts_keystone_bootstrap := .Values.mounts.keystone_bootstrap.keystone_bootstrap }} +{{- $mounts_keystone_bootstrap_init := .Values.mounts.keystone_bootstrap.init_container }} +apiVersion: batch/v1 +kind: Job +metadata: + name: keystone-bootstrap +spec: + template: + spec: + restartPolicy: OnFailure + nodeSelector: + {{ .Values.labels.node_selector_key }}: {{ .Values.labels.node_selector_value }} + initContainers: +{{ tuple $envAll $dependencies $mounts_keystone_bootstrap_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }} + containers: + - name: keystone-bootstrap + image: {{ .Values.images.bootstrap }} + imagePullPolicy: {{ .Values.images.pull_policy }} + {{- if .Values.resources.enabled }} + resources: + limits: + cpu: {{ .Values.resources.jobs.bootstrap.limits.cpu | quote }} + memory: {{ .Values.resources.jobs.bootstrap.limits.memory | quote }} + requests: + cpu: {{ .Values.resources.jobs.bootstrap.requests.cpu | quote }} + memory: {{ .Values.resources.jobs.bootstrap.requests.memory | quote }} + {{- end }} + env: +{{- with $env := dict "ksUserSecret" $ksAdminSecret }} +{{- include "helm-toolkit.snippets.keystone_openrc_env_vars" $env | indent 12 }} +{{- end }} + command: + - /tmp/bootstrap.sh + volumeMounts: + - name: keystone-bin + mountPath: /tmp/bootstrap.sh + subPath: bootstrap.sh +{{ if $mounts_keystone_bootstrap.volumeMounts }}{{ toYaml $mounts_keystone_bootstrap.volumeMounts | indent 10 }}{{ end }} + volumes: + - name: keystone-bin + configMap: + name: keystone-bin + defaultMode: 0555 +{{ if $mounts_keystone_bootstrap.volumes }}{{ toYaml $mounts_keystone_bootstrap.volumes | indent 6 }}{{ end }} +{{- end }} diff --git a/keystone/values.yaml b/keystone/values.yaml index 78c196fffb..0ebfd33cfb 100644 --- a/keystone/values.yaml +++ b/keystone/values.yaml @@ -24,6 +24,7 @@ labels: node_selector_value: enabled images: + bootstrap: docker.io/kolla/ubuntu-source-keystone:3.0.3 test: docker.io/kolla/ubuntu-binary-rally:4.0.0 db_init: docker.io/kolla/ubuntu-source-keystone:3.0.3 db_sync: docker.io/kolla/ubuntu-source-keystone:3.0.3 @@ -56,6 +57,10 @@ keystone: admin_user_domain: default admin_project_domain: default +bootstrap: + enabled: false + script: null + network: api: name: "keystone-api" @@ -87,6 +92,9 @@ dependencies: tests: service: - keystone-api + bootstrap: + service: + - keystone-api resources: enabled: false @@ -98,6 +106,13 @@ resources: memory: "128Mi" cpu: "500m" jobs: + bootstrap: + limits: + memory: "128Mi" + cpu: "500m" + requests: + memory: "128Mi" + cpu: "500m" db_sync: limits: memory: "128Mi" @@ -133,6 +148,9 @@ mounts: keystone_tests: init_container: null keystone_tests: + keystone_bootstrap: + init_container: null + keystone_bootstrap: conf: rally_tests: