From 2af23aacd96a92b6213172b00453421b193c75c3 Mon Sep 17 00:00:00 2001 From: Fabio Rauber Date: Fri, 5 Nov 2021 16:45:43 -0300 Subject: [PATCH] Added new pdnsadmin helm chart --- charts/pdnsadmin/v0.1.0/.helmignore | 23 +++++ charts/pdnsadmin/v0.1.0/Chart.lock | 6 ++ charts/pdnsadmin/v0.1.0/Chart.yaml | 16 ++++ .../pdnsadmin/v0.1.0/charts/mariadb-9.7.0.tgz | Bin 0 -> 39113 bytes charts/pdnsadmin/v0.1.0/templates/NOTES.txt | 22 +++++ .../pdnsadmin/v0.1.0/templates/_helpers.tpl | 51 ++++++++++ .../v0.1.0/templates/deployment.yaml | 69 ++++++++++++++ .../pdnsadmin/v0.1.0/templates/ingress.yaml | 61 ++++++++++++ .../pdnsadmin/v0.1.0/templates/service.yaml | 15 +++ charts/pdnsadmin/v0.1.0/values.yaml | 87 ++++++++++++++++++ 10 files changed, 350 insertions(+) create mode 100644 charts/pdnsadmin/v0.1.0/.helmignore create mode 100644 charts/pdnsadmin/v0.1.0/Chart.lock create mode 100644 charts/pdnsadmin/v0.1.0/Chart.yaml create mode 100644 charts/pdnsadmin/v0.1.0/charts/mariadb-9.7.0.tgz create mode 100644 charts/pdnsadmin/v0.1.0/templates/NOTES.txt create mode 100644 charts/pdnsadmin/v0.1.0/templates/_helpers.tpl create mode 100644 charts/pdnsadmin/v0.1.0/templates/deployment.yaml create mode 100644 charts/pdnsadmin/v0.1.0/templates/ingress.yaml create mode 100644 charts/pdnsadmin/v0.1.0/templates/service.yaml create mode 100644 charts/pdnsadmin/v0.1.0/values.yaml diff --git a/charts/pdnsadmin/v0.1.0/.helmignore b/charts/pdnsadmin/v0.1.0/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/.helmignore @@ -0,0 +1,23 @@ +# 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 +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/pdnsadmin/v0.1.0/Chart.lock b/charts/pdnsadmin/v0.1.0/Chart.lock new file mode 100644 index 0000000..35f09cd --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: mariadb + repository: https://charts.bitnami.com/bitnami + version: 9.7.0 +digest: sha256:43f66306031c8ae1577073acb4c53a3119f40cad567f53b81b9d67cef0801391 +generated: "2021-11-05T16:42:02.606467-03:00" diff --git a/charts/pdnsadmin/v0.1.0/Chart.yaml b/charts/pdnsadmin/v0.1.0/Chart.yaml new file mode 100644 index 0000000..8985b72 --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/Chart.yaml @@ -0,0 +1,16 @@ +apiVersion: v2 +name: pdnsadmin +description: PowerDNS-Admin web user interface for PowerDNS Authoritative servers. + +type: application + +version: 0.1.0 + +# It is recommended to use it with quotes. +appVersion: "0.2.3" + +dependencies: +- name: mariadb + version: 9.7.0 + repository: https://charts.bitnami.com/bitnami + condition: mariadb.internal diff --git a/charts/pdnsadmin/v0.1.0/charts/mariadb-9.7.0.tgz b/charts/pdnsadmin/v0.1.0/charts/mariadb-9.7.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1074a7dd17e927c6744a2366c2a952cd978715eb GIT binary patch literal 39113 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

bB%V*;^lCx(SXNfYZRif@Y6RCLm3{R54 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 Yd3+w9|7Oqs4*&rF|C8q>hyX$a0B;b|lmGw# literal 0 HcmV?d00001 diff --git a/charts/pdnsadmin/v0.1.0/templates/NOTES.txt b/charts/pdnsadmin/v0.1.0/templates/NOTES.txt new file mode 100644 index 0000000..0fc753b --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "pdnsadmin.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "pdnsadmin.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "pdnsadmin.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "pdnsadmin.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/charts/pdnsadmin/v0.1.0/templates/_helpers.tpl b/charts/pdnsadmin/v0.1.0/templates/_helpers.tpl new file mode 100644 index 0000000..a9d8039 --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/templates/_helpers.tpl @@ -0,0 +1,51 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "pdnsadmin.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 "pdnsadmin.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 "pdnsadmin.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "pdnsadmin.labels" -}} +helm.sh/chart: {{ include "pdnsadmin.chart" . }} +{{ include "pdnsadmin.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "pdnsadmin.selectorLabels" -}} +app.kubernetes.io/name: {{ include "pdnsadmin.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} \ No newline at end of file diff --git a/charts/pdnsadmin/v0.1.0/templates/deployment.yaml b/charts/pdnsadmin/v0.1.0/templates/deployment.yaml new file mode 100644 index 0000000..92ba273 --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/templates/deployment.yaml @@ -0,0 +1,69 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "pdnsadmin.fullname" . }} + labels: + {{- include "pdnsadmin.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + {{- include "pdnsadmin.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "pdnsadmin.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: SQLALCHEMY_DATABASE_URI + value: mysql://{{ .Values.mariadb.auth.username }}:{{ .Values.mariadb.auth.password }}@{{ .Release.Name }}-mariadb/{{ .Values.mariadb.auth.database }} + - name: GUNICORN_TIMEOUT + value: {{ .Values.environment.gunicorn.timeout }} + - name: GUNICORN_WORKERS + value: {{ .Values.environment.gunicorn.workers }} + - name: GUNICORN_LOGLEVEL + value: {{ .Values.environment.gunicorn.logLevel }} + - name: OFFLINE_MODE + value: False + ports: + - name: http + containerPort: 80 + protocol: TCP + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/pdnsadmin/v0.1.0/templates/ingress.yaml b/charts/pdnsadmin/v0.1.0/templates/ingress.yaml new file mode 100644 index 0000000..b6de083 --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "pdnsadmin.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "pdnsadmin.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/charts/pdnsadmin/v0.1.0/templates/service.yaml b/charts/pdnsadmin/v0.1.0/templates/service.yaml new file mode 100644 index 0000000..a326a39 --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "pdnsadmin.fullname" . }} + labels: + {{- include "pdnsadmin.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "pdnsadmin.selectorLabels" . | nindent 4 }} diff --git a/charts/pdnsadmin/v0.1.0/values.yaml b/charts/pdnsadmin/v0.1.0/values.yaml new file mode 100644 index 0000000..bd990d2 --- /dev/null +++ b/charts/pdnsadmin/v0.1.0/values.yaml @@ -0,0 +1,87 @@ +# Default values for pdnsadmin. +replicaCount: 1 + +image: + repository: porto.interlegis.leg.br/dockerio/ngoduykhanh/powerdns-admin + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: latest + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +environment: + gunicorn: + timeout: 60 + workers: 2 + logLevel: INFO + +mariadb: + internal: true + arquitecture: standalone + image: + repository: porto.interlegis.leg.br/dockerio/bitnami/mariadb + tag: 10.5.12-debian-10-r68 + primary: + persistence: + accessModes: + - ReadWriteOnce + enabled: true + size: 2Gi + auth: + database: pdnsadmin + password: pdnsadminpw + rootPassword: pdnsadminrootpw + username: pdnsadmin