diff --git a/helm-toolkit/templates/endpoints/_endpoint_token_lookup.tpl b/helm-toolkit/templates/endpoints/_endpoint_token_lookup.tpl new file mode 100644 index 000000000..bafc607fc --- /dev/null +++ b/helm-toolkit/templates/endpoints/_endpoint_token_lookup.tpl @@ -0,0 +1,38 @@ +{{/* +Copyright 2019 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. +*/}} + +{{/* +abstract: | + Gets the token for an endpoint +values: | + endpoints: + keystone: + auth: + admin: + token: zh78JzXgw6YUKy2e +usage: | + {{ tuple "keystone" "admin" . | include "helm-toolkit.endpoints.endpoint_token_lookup" }} +return: | + zh78JzXgw6YUKy2e +*/}} + +{{- define "helm-toolkit.endpoints.endpoint_token_lookup" -}} +{{- $type := index . 0 -}} +{{- $userName := index . 1 -}} +{{- $context := index . 2 -}} +{{- $serviceToken := index $context.Values.endpoints ( $type | replace "-" "_" ) "auth" $userName "token" }} +{{- printf "%s" $serviceToken -}} +{{- end -}} diff --git a/powerdns/Chart.yaml b/powerdns/Chart.yaml new file mode 100644 index 000000000..704f768fd --- /dev/null +++ b/powerdns/Chart.yaml @@ -0,0 +1,21 @@ +# Copyright 2019 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. + +apiVersion: v1 +description: OpenStack-Helm PowerDNS +name: powerdns +version: 0.1.0 +home: https://www.powerdns.com/ +maintainers: + - name: OpenStack-Helm Authors diff --git a/powerdns/requirements.yaml b/powerdns/requirements.yaml new file mode 100644 index 000000000..e69c985d8 --- /dev/null +++ b/powerdns/requirements.yaml @@ -0,0 +1,18 @@ +# Copyright 2019 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. + +dependencies: + - name: helm-toolkit + repository: http://localhost:8879/charts + version: 0.1.0 diff --git a/powerdns/templates/bin/_powerdns-mysql-sync.sh.tpl b/powerdns/templates/bin/_powerdns-mysql-sync.sh.tpl new file mode 100644 index 000000000..0076b5f8f --- /dev/null +++ b/powerdns/templates/bin/_powerdns-mysql-sync.sh.tpl @@ -0,0 +1,24 @@ +#!/bin/sh + +{{/* +Copyright 2019 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 + +MYSQLCMD='mysql -r -N' +if [ $(echo 'show tables' | $MYSQLCMD | wc -c) -eq 0 ]; then + $MYSQLCMD < /etc/pdns/schema.sql +fi diff --git a/powerdns/templates/configmap-bin.yaml b/powerdns/templates/configmap-bin.yaml new file mode 100644 index 000000000..48dccc8da --- /dev/null +++ b/powerdns/templates/configmap-bin.yaml @@ -0,0 +1,33 @@ +{{/* +Copyright 2019 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.manifests.configmap_bin }} +{{- $envAll := . }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: powerdns-bin +data: +{{- if .Values.images.local_registry.active }} + image-repo-sync.sh: | +{{- include "helm-toolkit.scripts.image_repo_sync" . | indent 4 }} +{{- end }} + db-init.py: | +{{- include "helm-toolkit.scripts.db_init" . | indent 4 }} + powerdns-mysql-sync.sh: | +{{ tuple "bin/_powerdns-mysql-sync.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }} +{{- end }} diff --git a/powerdns/templates/configmap-etc.yaml b/powerdns/templates/configmap-etc.yaml new file mode 100644 index 000000000..996c52103 --- /dev/null +++ b/powerdns/templates/configmap-etc.yaml @@ -0,0 +1,58 @@ +{{/* +Copyright 2019 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. +*/}} + +{{- define "powerdns.configmap.etc" -}} +{{- range $key, $value := . }} +{{ $key | replace "_" "-" }} = {{ $value }} +{{- end }} +{{- end -}} + +{{- if .Values.manifests.configmap_etc }} +{{- $mysql := .Values.conf.mysql.client }} + +{{- if empty $mysql.host -}} +{{- $_ := tuple "oslo_db" "internal" . | include "helm-toolkit.endpoints.endpoint_host_lookup" | set $mysql "host" -}} +{{- $_ := $mysql.host | set .Values.conf.powerdns "gmysql_host" -}} +{{- end -}} + +{{- if empty $mysql.port -}} +{{- $_ := tuple "oslo_db" "internal" "mysql" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | set $mysql "port" -}} +{{- $_ := $mysql.port | set .Values.conf.powerdns "gmysql_port" -}} +{{- end -}} + +{{- if empty $mysql.user -}} +{{- $_ := .Values.endpoints.oslo_db.auth.powerdns.username | set $mysql "user" -}} +{{- $_ := $mysql.user | set .Values.conf.powerdns "gmysql_user" -}} +{{- end -}} + +{{- if empty $mysql.password -}} +{{- $_ := .Values.endpoints.oslo_db.auth.powerdns.password | set $mysql "password" -}} +{{- $_ := $mysql.password | set .Values.conf.powerdns "gmysql_password" -}} +{{- end -}} + +{{- if empty .Values.conf.powerdns.api_key -}} +{{- $_ := tuple "powerdns" "service" . | include "helm-toolkit.endpoints.endpoint_token_lookup" | set .Values.conf.powerdns "api_key" -}} +{{- end -}} +--- +apiVersion: v1 +kind: Secret +metadata: + name: powerdns-etc +type: Opaque +data: + pdns.conf: {{ include "powerdns.configmap.etc" .Values.conf.powerdns | b64enc }} + my.cnf: {{ include "helm-toolkit.utils.to_ini" .Values.conf.mysql | b64enc }} +{{- end }} diff --git a/powerdns/templates/deployment.yaml b/powerdns/templates/deployment.yaml new file mode 100644 index 000000000..e5f828843 --- /dev/null +++ b/powerdns/templates/deployment.yaml @@ -0,0 +1,79 @@ +{{/* +Copyright 2019 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.manifests.deployment }} +{{- $envAll := . }} + +{{- $serviceAccountName := "powerdns" }} +{{ tuple $envAll "powerdns" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: powerdns + annotations: + {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }} + labels: +{{ tuple $envAll "powerdns" "server" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }} +spec: + replicas: {{ .Values.pod.replicas.server }} + selector: + matchLabels: +{{ tuple $envAll "powerdns" "server" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }} +{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }} + template: + metadata: + labels: +{{ tuple $envAll "powerdns" "server" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }} + annotations: +{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }} + configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }} + spec: + serviceAccountName: {{ $serviceAccountName }} + affinity: +{{ tuple $envAll "powerdns" "server" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }} + nodeSelector: + {{ .Values.labels.powerdns.node_selector_key }}: {{ .Values.labels.powerdns.node_selector_value | quote }} + initContainers: +{{ tuple $envAll "powerdns" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }} + containers: + - name: powerdns +{{ tuple $envAll "powerdns" | include "helm-toolkit.snippets.image" | indent 10 }} +{{ tuple $envAll $envAll.Values.pod.resources.server | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }} + command: + - pdns_server + ports: + - containerPort: {{ tuple "powerdns" "internal" "powerdns" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }} + name: pdns-udp + protocol: UDP + - containerPort: {{ tuple "powerdns" "internal" "powerdns_tcp" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }} + name: pdns-tcp + - containerPort: {{ tuple "powerdns" "internal" "powerdns_api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }} + name: pdns-api + readinessProbe: + tcpSocket: + port: {{ tuple "powerdns" "internal" "powerdns_tcp" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }} + volumeMounts: + - name: powerdns-etc + mountPath: /etc/pdns/conf.d/pdns.conf + subPath: pdns.conf + readOnly: true + volumes: + - name: powerdns-etc + secret: + secretName: powerdns-etc + defaultMode: 0444 +{{- end }} diff --git a/powerdns/templates/job-db-init.yaml b/powerdns/templates/job-db-init.yaml new file mode 100644 index 000000000..01f324ff3 --- /dev/null +++ b/powerdns/templates/job-db-init.yaml @@ -0,0 +1,23 @@ +{{/* +Copyright 2019 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.manifests.job_db_init }} + +{{- $dbToInit := dict "inputType" "secret" "adminSecret" .Values.secrets.oslo_db.admin "userSecret" .Values.secrets.oslo_db.powerdns -}} +{{- $dbInitJob := dict "envAll" . "serviceName" "powerdns" "dbToInit" $dbToInit -}} +{{ $dbInitJob | include "helm-toolkit.manifests.job_db_init_mysql" }} + +{{- end }} diff --git a/powerdns/templates/job-db-sync.yaml b/powerdns/templates/job-db-sync.yaml new file mode 100644 index 000000000..9e4589355 --- /dev/null +++ b/powerdns/templates/job-db-sync.yaml @@ -0,0 +1,64 @@ +{{/* +Copyright 2019 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.manifests.job_db_sync }} +{{- $envAll := . }} + + +{{- $serviceAccountName := "powerdns-db-sync" }} +{{ tuple $envAll "db_sync" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }} +--- +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ $serviceAccountName }} +spec: + template: + metadata: + labels: +{{ tuple $envAll "powerdns" "db-sync" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }} + spec: + serviceAccountName: {{ $serviceAccountName }} + restartPolicy: OnFailure + nodeSelector: + {{ .Values.labels.job.node_selector_key }}: {{ .Values.labels.job.node_selector_value }} + initContainers: +{{ tuple $envAll "db_sync" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }} + containers: + - name: powerdns-db-sync +{{ tuple $envAll "db_sync" | include "helm-toolkit.snippets.image" | indent 10 }} +{{ tuple $envAll $envAll.Values.pod.resources.jobs.db_sync | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }} + command: + - /tmp/powerdns-mysql-sync.sh + volumeMounts: + - name: powerdns-bin + mountPath: /tmp/powerdns-mysql-sync.sh + subPath: powerdns-mysql-sync.sh + readOnly: true + - name: powerdns-etc + mountPath: /etc/mysql/my.cnf + subPath: my.cnf + readOnly: true + volumes: + - name: powerdns-bin + configMap: + name: powerdns-bin + defaultMode: 0555 + - name: powerdns-etc + secret: + secretName: powerdns-etc + defaultMode: 0444 +{{- end }} diff --git a/powerdns/templates/job-image-repo-sync.yaml b/powerdns/templates/job-image-repo-sync.yaml new file mode 100644 index 000000000..2c5376ffb --- /dev/null +++ b/powerdns/templates/job-image-repo-sync.yaml @@ -0,0 +1,20 @@ +{{/* +Copyright 2019 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 and .Values.manifests.job_image_repo_sync .Values.images.local_registry.active }} +{{- $imageRepoSyncJob := dict "envAll" . "serviceName" "powerdns" -}} +{{ $imageRepoSyncJob | include "helm-toolkit.manifests.job_image_repo_sync" }} +{{- end }} diff --git a/powerdns/templates/secret-db.yaml b/powerdns/templates/secret-db.yaml new file mode 100644 index 000000000..beed2cf84 --- /dev/null +++ b/powerdns/templates/secret-db.yaml @@ -0,0 +1,30 @@ +{{/* +Copyright 2019 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.manifests.secret_db }} +{{- $envAll := . }} +{{- range $key1, $userClass := tuple "admin" "powerdns" }} +{{- $secretName := index $envAll.Values.secrets.oslo_db $userClass }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ $secretName }} +type: Opaque +data: + DB_CONNECTION: {{ tuple "oslo_db" "internal" $userClass "mysql" $envAll | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | b64enc -}} +{{- end }} +{{- end }} diff --git a/powerdns/templates/service.yaml b/powerdns/templates/service.yaml new file mode 100644 index 000000000..771383c18 --- /dev/null +++ b/powerdns/templates/service.yaml @@ -0,0 +1,47 @@ +{{/* +Copyright 2019 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.manifests.service_dns }} +{{- $envAll := . }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ tuple "powerdns" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }} +spec: + ports: + - port: {{ tuple "powerdns" "internal" "powerdns" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }} + name: pdns-udp + protocol: UDP + - port: {{ tuple "powerdns" "internal" "powerdns_tcp" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }} + name: pdns-tcp + {{- if .Values.manifests.service_api }} + - port: {{ tuple "powerdns" "internal" "powerdns_api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }} + name: pdns-api + {{- end }} + selector: +{{ tuple $envAll "powerdns" "server" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }} + {{- if .Values.network.node_port_enabled }} +{{/* +Set Type=NodePort to get output packets from cluster internal IP +of the POD instead of container one. +*/}} + type: NodePort + {{- if .Values.network.external_policy_local }} + externalTrafficPolicy: Local + {{- end }} + {{- end }} +{{- end }} diff --git a/powerdns/values.yaml b/powerdns/values.yaml new file mode 100644 index 000000000..b47e78c53 --- /dev/null +++ b/powerdns/values.yaml @@ -0,0 +1,204 @@ +# Copyright 2019 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. + +# Default values for powerdns. +# This is a YAML-formatted file. +# Declare name/value pairs to be passed into your templates. +# name: value + +images: + tags: + powerdns: docker.io/psitrax/powerdns:latest + db_init: docker.io/openstackhelm/heat:queens-ubuntu_xenial + db_sync: docker.io/psitrax/powerdns:latest + dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1 + image_repo_sync: docker.io/docker:17.07.0 + pull_policy: IfNotPresent + local_registry: + active: false + exclude: + - dep_check + - image_repo_sync + +pod: + affinity: + anti: + type: + default: preferredDuringSchedulingIgnoredDuringExecution + topologyKey: + default: kubernetes.io/hostname + weight: + default: 10 + replicas: + server: 1 + lifecycle: + upgrades: + deployments: + revision_history: 3 + pod_replacement_strategy: RollingUpdate + rolling_update: + max_unavailable: 1 + max_surge: 3 + resources: + enabled: false + server: + limits: + memory: "128Mi" + cpu: "500m" + requests: + memory: "128Mi" + cpu: "500m" + jobs: + image_repo_sync: + requests: + memory: "128Mi" + cpu: "100m" + limits: + memory: "1024Mi" + cpu: "2000m" + tests: + requests: + memory: "128Mi" + cpu: "100m" + limits: + memory: "1024Mi" + cpu: "2000m" + +labels: + powerdns: + node_selector_key: openstack-control-plane + node_selector_value: enabled + job: + node_selector_key: openstack-control-plane + node_selector_value: enabled + test: + node_selector_key: openstack-control-plane + node_selector_value: enabled + +dependencies: + dynamic: + common: + local_image_registry: + jobs: + - powerdns-image-repo-sync + services: + - endpoint: node + service: local_image_registry + static: + image_repo_sync: + services: + - endpoint: internal + service: local_image_registry + powerdns: + jobs: + - powerdns-db-init + - powerdns-db-sync + services: + - endpoint: internal + service: oslo_db + db_init: + services: + - endpoint: internal + service: oslo_db + db_sync: + jobs: + - powerdns-db-init + services: + - service: oslo_db + endpoint: internal + +network: + node_port_enabled: true + external_policy_local: true + +endpoints: + cluster_domain_suffix: cluster.local + local_image_registry: + name: docker-registry + namespace: docker-registry + hosts: + default: localhost + internal: docker-registry + node: localhost + host_fqdn_override: + default: null + port: + registry: + node: 5000 + powerdns: + auth: + service: + token: chiave_segreta + hosts: + default: powerdns + host_fqdn_override: + default: null + port: + powerdns_api: + default: 8081 + powerdns_tcp: + default: 53 + powerdns: + default: 53 + protocol: UDP + oslo_db: + auth: + admin: + username: root + password: password + powerdns: + username: powerdns + password: password + hosts: + default: mariadb + host_fqdn_override: + default: null + path: /powerdns + scheme: mysql+pymysql + port: + mysql: + default: 3306 + +secrets: + oslo_db: + admin: powerdns-db-admin + powerdns: powerdns-db-user + +conf: + powerdns: + slave: true + dnsupdate: true + api: true + cache_ttl: 0 + query_cache_ttl: 0 + negquery_cache_ttl: 0 + out_of_zone_additional_processing: no + webserver: true + webserver_address: 0.0.0.0 + webserver_allow_from: 0.0.0.0/0 + gmysql_dbname: powerdns + gmysql_dnssec: yes + mysql: + client: + database: powerdns + +manifests: + configmap_bin: true + configmap_etc: true + deployment: true + job_db_init: true + job_db_sync: true + secret_db: true + service_dns: true + service_api: false diff --git a/tools/deployment/openstack-support/120-powerdns.sh b/tools/deployment/openstack-support/120-powerdns.sh new file mode 100755 index 000000000..3638fbd49 --- /dev/null +++ b/tools/deployment/openstack-support/120-powerdns.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Copyright 2019 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 -xe + +#NOTE: Lint and package chart +make powerdns + +#NOTE: Deploy command +: ${OSH_EXTRA_HELM_ARGS:=""} +helm upgrade --install powerdns ./powerdns \ + --namespace=openstack \ + ${OSH_EXTRA_HELM_ARGS} \ + ${OSH_EXTRA_HELM_ARGS_POWERDNS} + +#NOTE: Wait for deploy +./tools/deployment/common/wait-for-pods.sh openstack + +#NOTE: Validate Deployment info +helm status powerdns diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml index b142b4ff6..4b49ffd63 100644 --- a/zuul.d/jobs.yaml +++ b/zuul.d/jobs.yaml @@ -254,6 +254,7 @@ - ./tools/deployment/openstack-support/090-keystone.sh - ./tools/deployment/openstack-support/100-ceph-radosgateway.sh - ./tools/deployment/openstack-support/110-openstack-exporter.sh + - ./tools/deployment/openstack-support/120-powerdns.sh - job: name: openstack-helm-infra-five-ubuntu