From 3563dede6e1a231142a38c04f1764a18985d80a1 Mon Sep 17 00:00:00 2001 From: Keny Villela Date: Thu, 23 Jun 2022 17:40:55 -0300 Subject: [PATCH] first version of sigi chart --- charts/sigi/.helmignore | 23 +++ charts/sigi/v0.1.0/Chart.yaml | 24 +++ charts/sigi/v0.1.0/app-readme.md | 3 + charts/sigi/v0.1.0/questions.yaml | 149 ++++++++++++++++++ charts/sigi/v0.1.0/templates/NOTES.txt | 10 ++ charts/sigi/v0.1.0/templates/_helpers.tpl | 58 +++++++ charts/sigi/v0.1.0/templates/deployment.yaml | 134 ++++++++++++++++ charts/sigi/v0.1.0/templates/hpa.yaml | 28 ++++ charts/sigi/v0.1.0/templates/ingress.yaml | 57 +++++++ charts/sigi/v0.1.0/templates/pvc-media.yaml | 21 +++ charts/sigi/v0.1.0/templates/secretkey.yaml | 13 ++ charts/sigi/v0.1.0/templates/service.yaml | 15 ++ .../templates/velero-schedule-monthly.yaml | 39 +++++ .../templates/velero-schedule-weekdays.yaml | 39 +++++ .../templates/velero-schedule-weekly.yaml | 39 +++++ charts/sigi/v0.1.0/values.yaml | 128 +++++++++++++++ images/logo_interlegis.png | Bin 0 -> 33536 bytes images/sigi_interlegis.png | Bin 0 -> 38759 bytes 18 files changed, 780 insertions(+) create mode 100644 charts/sigi/.helmignore create mode 100644 charts/sigi/v0.1.0/Chart.yaml create mode 100644 charts/sigi/v0.1.0/app-readme.md create mode 100644 charts/sigi/v0.1.0/questions.yaml create mode 100644 charts/sigi/v0.1.0/templates/NOTES.txt create mode 100644 charts/sigi/v0.1.0/templates/_helpers.tpl create mode 100644 charts/sigi/v0.1.0/templates/deployment.yaml create mode 100644 charts/sigi/v0.1.0/templates/hpa.yaml create mode 100644 charts/sigi/v0.1.0/templates/ingress.yaml create mode 100644 charts/sigi/v0.1.0/templates/pvc-media.yaml create mode 100644 charts/sigi/v0.1.0/templates/secretkey.yaml create mode 100644 charts/sigi/v0.1.0/templates/service.yaml create mode 100644 charts/sigi/v0.1.0/templates/velero-schedule-monthly.yaml create mode 100644 charts/sigi/v0.1.0/templates/velero-schedule-weekdays.yaml create mode 100644 charts/sigi/v0.1.0/templates/velero-schedule-weekly.yaml create mode 100644 charts/sigi/v0.1.0/values.yaml create mode 100644 images/logo_interlegis.png create mode 100644 images/sigi_interlegis.png diff --git a/charts/sigi/.helmignore b/charts/sigi/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/charts/sigi/.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/sigi/v0.1.0/Chart.yaml b/charts/sigi/v0.1.0/Chart.yaml new file mode 100644 index 0000000..89e20c3 --- /dev/null +++ b/charts/sigi/v0.1.0/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: sigi +description: Sistema de Informações Gerenciais do Interlegis (SIGI) + +# A chart can be either an 'application' or a 'library' chart. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +appVersion: 3.0 + +icon: https://git.interlegis.leg.br/SEIT/rancher-charts/raw/master/images/sigi_interlegis.png + +dependencies: +- name: postgresql + version: 11.6.8 + repository: https://charts.bitnami.com/bitnami + condition: postgresql.internal diff --git a/charts/sigi/v0.1.0/app-readme.md b/charts/sigi/v0.1.0/app-readme.md new file mode 100644 index 0000000..1bfae58 --- /dev/null +++ b/charts/sigi/v0.1.0/app-readme.md @@ -0,0 +1,3 @@ +# Sistema de Informações Gerenciais do Interlegis + +Utilize o formulário abaixo para configurar o SIGI. diff --git a/charts/sigi/v0.1.0/questions.yaml b/charts/sigi/v0.1.0/questions.yaml new file mode 100644 index 0000000..3017f7b --- /dev/null +++ b/charts/sigi/v0.1.0/questions.yaml @@ -0,0 +1,149 @@ +labels: + io.cattle.role: project +categories: +- Gerencial +questions: +# Informações Básicas +- variable: sigi.hostname + default: "sigi.interlegis.leg.br" + description: "Endereço para acesso ao SIGI" + label: "URL do SIGI" + type: string + group: Básico + required: true +- variable: sigi.adminEmail + default: "sigi@interlegis.leg.br" + description: "SIGI Administrator" + label: Contato + type: string + group: Básico + required: true +- variable: sigi.adminPassword + default: "sigi" + description: "Senha do usuário administrativo do SIGI" + label: Senha Admin + type: password + group: Básico + required: true + +# Ingress +- variable: ingress.tls.enabled + default: true + type: boolean + description: "Habilitar criptografia do protocolo HTTP (HTTPS)?" + label: "Habilitar TLS?" + required: false + group: Ingress + show_subquestion_if: true + subquestions: + - variable: ingress.tls.provider + default: letsencrypt + type: enum + description: "Qual provedor de certificados utilizar?" + label: "Provedor de certificados" + required: false + group: Ingress + options: + - letsencrypt + - aws + +- variable: ingress.class + default: nginx + type: enum + description: "Qual o Ingress Controller?" + label: "Classe Ingress" + required: false + group: Ingress + options: + - nginx + - alb + +# Correio +- variable: sigi.emailSendUser + default: "sigi@interlegis.leg.br" + description: "Remetente dos e-mails enviados pelo SIGI" + label: "Remetente" + type: string + group: Correio + required: false +- variable: sigi.useTls + default: "False" + description: "Usar TLS ao conectar no servidor SMTP?" + label: "Usar TLS" + type: enum + group: Correio + options: + - "True" + - "False" + required: false +- variable: sigi.emailPort + default: 25 + description: "Porta de envio de E-mail (SMTP)" + type: int + label: "Porta SMTP" + required: false + group: Correio +- variable: sigi.emailHost + default: "smtp.interlegis.leg.br" + description: "Servidor de envio de e-mail (SMTP)" + label: "Servidor SMTP" + type: string + group: Correio + required: false + +# PostgreSQL +- variable: postgresql.internal + default: true + description: "Fazer o deploy do Postgres?" + label: "Postgres Interno?" + type: boolean + group: PostgreSQL + required: false +- variable: postgresql.postgresqlPassword + default: "altereme" + description: "Senha do banco de dados Postgres" + label: "Senha do Postgres" + type: password + group: PostgreSQL + required: true + +# Avançado +- variable: sigi.debug + default: "False" + description: "Habilitar mensagens de Debug?" + label: "Debug?" + type: enum + group: Avançado + options: + - "True" + - "False" +- variable: sigi.timeZone + default: "America/Sao_Paulo" + description: "Fuso Horário do SIGI" + type: enum + label: "Fuso" + options: + - "America/Sao_Paulo" + - "America/Fortaleza" + - "America/Belem" + - "America/Araguaina" + - "America/Bahia" + - "America/Boa_Vista" + - "America/Campo_Grande" + - "America/Cuiaba" + - "America/Maceio" + - "America/Manaus" + - "America/Porto_Velho" + - "America/Recife" + - "America/Rio_Branco" + - "America/Sao_Paulo" + required: true + group: Avançado + +- variable: velero.backup.enabled + default: true + type: boolean + label: "Habilitar backup com Velero?" + description: "Criar ou não os objetos para backup com o Velero." + required: false + group: Avançado diff --git a/charts/sigi/v0.1.0/templates/NOTES.txt b/charts/sigi/v0.1.0/templates/NOTES.txt new file mode 100644 index 0000000..53de7bd --- /dev/null +++ b/charts/sigi/v0.1.0/templates/NOTES.txt @@ -0,0 +1,10 @@ +1. Seu SIGI pode ser acessado através da URL: +{{- if .Values.ingress.enabled }} + http{{ if .Values.ingress.tls.enabled }}s{{ end }}://{{ .Values.sigi.hostname }} +{{- end }} +2. Utilize as seguintes credenciais para acesso inicial: + Usuario: sigi + Senha: {{ .Values.sigi.adminPassword }} +3. Usuario de administração do Postgres: + Usuario: sigi + Senha: {{ .Values.postgresql.postgresqlPassword }} diff --git a/charts/sigi/v0.1.0/templates/_helpers.tpl b/charts/sigi/v0.1.0/templates/_helpers.tpl new file mode 100644 index 0000000..6294294 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/_helpers.tpl @@ -0,0 +1,58 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "sigi.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 "sigi.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 "sigi.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "sigi.labels" -}} +helm.sh/chart: {{ include "sigi.chart" . }} +{{ include "sigi.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "sigi.selectorLabels" -}} +app.kubernetes.io/name: {{ include "sigi.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create a default fully qualified app name for postgresql. +*/}} +{{- define "postgresql.fullname" -}} +{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/sigi/v0.1.0/templates/deployment.yaml b/charts/sigi/v0.1.0/templates/deployment.yaml new file mode 100644 index 0000000..58ab549 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/deployment.yaml @@ -0,0 +1,134 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "sigi.fullname" . }} + labels: + {{- include "sigi.labels" . | nindent 4 }} +spec: +{{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} +{{- end }} + selector: + matchLabels: + {{- include "sigi.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "sigi.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 }} + ports: + - name: http + containerPort: 80 + protocol: TCP + env: + - name: DATABASE_URL + value: {{ printf "postgresql://%s:%s@%s:5432/%s" .Values.postgresql.postgresqlUsername .Values.postgresql.postgresqlPassword (include "postgresql.fullname" .) .Values.postgresql.postgresqlDatabase| quote }} + - name: ADMIN_PASSWORD + value: "{{ .Values.sigi.adminPassword }}" + - name: ADMIN_EMAIL + value: "{{ .Values.sigi.adminEmail }}" + - name: EMAIL_SEND_USER + value: "{{ .Values.sigi.emailSendUser }}" + - name: DEBUG + value: "{{ .Values.sigi.debug }}" + - name: USE_TLS + value: "{{ .Values.sigi.useTls }}" + - name: EMAIL_PORT + value: "{{ .Values.sigi.emailPort }}" + - name: EMAIL_HOST + value: "{{ .Values.sigi.emailHost }}" + - name: TZ + value: "{{ .Values.sigi.timeZone }}" + volumeMounts: + - mountPath: /var/interlegis/sigi/data + name: data + - mountPath: /var/interlegis/sigi/media + name: media + livenessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 60 + failureThreshold: 3 + periodSeconds: 60 + successThreshold: 1 + timeoutSeconds: 5 + readinessProbe: + httpGet: + path: / + port: http + initialDelaySeconds: 60 + failureThreshold: 3 + periodSeconds: 30 + successThreshold: 1 + timeoutSeconds: 5 + resources: + {{- toYaml .Values.resources | nindent 12 }} + volumes: + - name: data + secret: + defaultMode: 440 + secretName: {{ include "sigi.fullname" . }}-secretkey + - name: media + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ include "sigi.fullname" . }}-media + {{- else }} + emptyDir: {} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + affinity: + podAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - {{ include "sigi.name" . }} + - key: app.kubernetes.io/instance + operator: In + values: + - {{ .Release.Name }} + topologyKey: kubernetes.io/hostname + - weight: 50 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - postgresql + - key: app.kubernetes.io/instance + operator: In + values: + - {{ .Release.Name }} + topologyKey: kubernetes.io/hostname + {{- with .Values.affinity }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/sigi/v0.1.0/templates/hpa.yaml b/charts/sigi/v0.1.0/templates/hpa.yaml new file mode 100644 index 0000000..fc4f821 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "sigi.fullname" . }} + labels: + {{- include "sigi.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "sigi.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/sigi/v0.1.0/templates/ingress.yaml b/charts/sigi/v0.1.0/templates/ingress.yaml new file mode 100644 index 0000000..583b3c7 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/ingress.yaml @@ -0,0 +1,57 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "sigi.fullname" . -}} +{{- $hostName := .Values.sigi.hostname -}} +{{- 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 "sigi.labels" . | nindent 4 }} + annotations: + {{- if .Values.ingress.tls.enabled }} + # USE TLS + {{- if contains "letsencrypt" .Values.ingress.tls.provider }} + cert-manager.io/cluster-issuer: "letsencrypt-prod" + {{- end }} + {{- if contains "alb" .Values.ingress.class }} + alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]' + {{- end }} + {{- else }} + # DO NOT USE TLS + {{- if contains "alb" .Values.ingress.class }} + alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]' + {{- end }} + {{- end }} + {{- if contains "alb" .Values.ingress.class }} + alb.ingress.kubernetes.io/group.name: sigi + alb.ingress.kubernetes.io/scheme: internet-facing + alb.ingress.kubernetes.io/target-type: ip + kubernetes.io/ingress.class: alb + {{- end }} + {{- with .Values.ingress.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if .Values.ingress.tls.enabled }} + tls: + - hosts: + - "{{ $hostName }}" + secretName: {{ $hostName | replace "." "-" }}-tls + {{- end }} + rules: + - host: "{{ $hostName }}" + http: + paths: + {{- if contains "nginx" .Values.ingress.class }} + - path: / + {{- else }} + - path: /* + {{- end }} + backend: + serviceName: {{ $fullName }} + servicePort: http +{{- end }} diff --git a/charts/sigi/v0.1.0/templates/pvc-media.yaml b/charts/sigi/v0.1.0/templates/pvc-media.yaml new file mode 100644 index 0000000..d122fc0 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/pvc-media.yaml @@ -0,0 +1,21 @@ +{{- if .Values.persistence.enabled }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "sigi.fullname" . }}-media + labels: + {{- include "sigi.labels" . | nindent 4 }} +spec: + accessModes: + - {{ .Values.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.size }} +{{- if .Values.persistence.storageClass }} +{{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/sigi/v0.1.0/templates/secretkey.yaml b/charts/sigi/v0.1.0/templates/secretkey.yaml new file mode 100644 index 0000000..6d2336d --- /dev/null +++ b/charts/sigi/v0.1.0/templates/secretkey.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "sigi.fullname" . }}-secretkey + labels: + {{- include "sigi.labels" . | nindent 4 }} +type: Opaque +data: +{{- if .Release.IsUpgrade }} + secret.key: {{ index (lookup "v1" "Secret" .Release.Namespace (printf "%s-secretkey" (include "sigi.fullname" .))).data "secret.key" }} +{{ else }} # install operation + secret.key: {{ randAscii 50 | b64enc }} +{{ end }} diff --git a/charts/sigi/v0.1.0/templates/service.yaml b/charts/sigi/v0.1.0/templates/service.yaml new file mode 100644 index 0000000..fc302b8 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "sigi.fullname" . }} + labels: + {{- include "sigi.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "sigi.selectorLabels" . | nindent 4 }} diff --git a/charts/sigi/v0.1.0/templates/velero-schedule-monthly.yaml b/charts/sigi/v0.1.0/templates/velero-schedule-monthly.yaml new file mode 100644 index 0000000..143e21f --- /dev/null +++ b/charts/sigi/v0.1.0/templates/velero-schedule-monthly.yaml @@ -0,0 +1,39 @@ +{{- if .Values.velero.backup.enabled }} +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: {{ include "sigi.fullname" . }}-monthly + namespace: {{ .Values.velero.namespace }} +spec: + # generate a random backup time between 1 and 5 AM on first day of every month + schedule: {{ mod (randNumeric 2) 60 }} {{ mod (randNumeric 1) 6 }} 1 * * + template: + includedNamespaces: + - {{ .Release.Namespace }} + {{- with .Values.velero.backup.excludedResources }} + excludedResources: + {{- toYaml . | nindent 8 }} + {{- end }} + snapshotVolumes: {{ .Values.velero.backup.snapshotVolumes }} + # every weekday backup is good for the next year (365 days) + ttl: 8760h0m0s + defaultVolumesToRestic: {{ .Values.velero.backup.defaultVolumesToRestic }} + hooks: + resources: + - name: pgdump + includedResources: + - pods + labelSelector: + matchLabels: + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/name: postgresql + pre: + - exec: + command: + - "/bin/bash" + - "-c" + - "PGPASSWORD=$POSTGRES_PASSWORD /opt/bitnami/postgresql/bin/pg_dump -U sigi -d sigi > /bitnami/postgresql/sigi.dump" + timeout: 360s + onError: Continue + useOwnerReferencesInBackup: false +{{- end }} diff --git a/charts/sigi/v0.1.0/templates/velero-schedule-weekdays.yaml b/charts/sigi/v0.1.0/templates/velero-schedule-weekdays.yaml new file mode 100644 index 0000000..f0724d5 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/velero-schedule-weekdays.yaml @@ -0,0 +1,39 @@ +{{- if .Values.velero.backup.enabled }} +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: {{ include "sapl.fullname" . }}-weekdays + namespace: {{ .Values.velero.namespace }} +spec: + # generate a random backup time between 1 and 5 AM on weekdays + schedule: {{ mod (randNumeric 2) 60 }} {{ mod (randNumeric 1) 6 }} * * 1-5 + template: + includedNamespaces: + - {{ .Release.Namespace }} + {{- with .Values.velero.backup.excludedResources }} + excludedResources: + {{- toYaml . | nindent 8 }} + {{- end }} + snapshotVolumes: {{ .Values.velero.backup.snapshotVolumes }} + # every weekday backup is good for the next week (7 days) + ttl: 168h0m0s + defaultVolumesToRestic: {{ .Values.velero.backup.defaultVolumesToRestic }} + hooks: + resources: + - name: pgdump + includedResources: + - pods + labelSelector: + matchLabels: + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/name: postgresql + pre: + - exec: + command: + - "/bin/bash" + - "-c" + - "PGPASSWORD=$POSTGRES_PASSWORD /opt/bitnami/postgresql/bin/pg_dump -U sapl -d sapl > /bitnami/postgresql/sapl.dump" + timeout: 360s + onError: Continue + useOwnerReferencesInBackup: false +{{- end }} \ No newline at end of file diff --git a/charts/sigi/v0.1.0/templates/velero-schedule-weekly.yaml b/charts/sigi/v0.1.0/templates/velero-schedule-weekly.yaml new file mode 100644 index 0000000..9c07521 --- /dev/null +++ b/charts/sigi/v0.1.0/templates/velero-schedule-weekly.yaml @@ -0,0 +1,39 @@ +{{- if .Values.velero.backup.enabled }} +apiVersion: velero.io/v1 +kind: Schedule +metadata: + name: {{ include "sapl.fullname" . }}-weekly + namespace: {{ .Values.velero.namespace }} +spec: + # generate a random backup time between 1 and 5 AM on sunday + schedule: {{ mod (randNumeric 2) 60 }} {{ mod (randNumeric 1) 6 }} * * 0 + template: + includedNamespaces: + - {{ .Release.Namespace }} + {{- with .Values.velero.backup.excludedResources }} + excludedResources: + {{- toYaml . | nindent 8 }} + {{- end }} + snapshotVolumes: {{ .Values.velero.backup.snapshotVolumes }} + # every sunday backup is good for 30 days (aprox. 1 month) + ttl: 744h0m0s + defaultVolumesToRestic: {{ .Values.velero.backup.defaultVolumesToRestic }} + hooks: + resources: + - name: pgdump + includedResources: + - pods + labelSelector: + matchLabels: + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/name: postgresql + pre: + - exec: + command: + - "/bin/bash" + - "-c" + - "PGPASSWORD=$POSTGRES_PASSWORD /opt/bitnami/postgresql/bin/pg_dump -U sapl -d sapl > /bitnami/postgresql/sapl.dump" + timeout: 360s + onError: Continue + useOwnerReferencesInBackup: false +{{- end }} \ No newline at end of file diff --git a/charts/sigi/v0.1.0/values.yaml b/charts/sigi/v0.1.0/values.yaml new file mode 100644 index 0000000..1c27c1d --- /dev/null +++ b/charts/sigi/v0.1.0/values.yaml @@ -0,0 +1,128 @@ +# Default values for sigi. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + registry: porto.interlegis.leg.br + repository: ilb/sigi + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +persistence: + enabled: true + #storageClass: "" + accessMode: ReadWriteOnce + size: 2Gi + +sigi: + adminPassword: altereme + adminEmail: sigi@interlegis.leg.br + emailSendUser: no-reply@interlegis.leg.br + debug: 'False' + useTls: 'False' + emailPort: 25 + emailHost: mail.interlegis.leg.br + timeZone: 'America/Sao_Paulo' + hostname: 'sigi.interlegis.leg.br' + +ingress: + enabled: true + class: nginx + # nginx - for default nginx ingress controller + # alb - for AWS ALB Load Balancer controller + tls: + enabled: true + provider: letsencrypt + # extra annotations only + annotations: {} + +velero: + namespace: velero + backup: + enabled: true + snapshotVolumes: false + defaultVolumesToRestic: true + # cert-manager objects are usually blocked during backup + excludedResources: + - certificates.cert-manager.io + - orders.acme.cert-manager.io + - certificaterequests.cert-manager.io + - challenges.acme.cert-manager.io + +postgresql: + internal: true + image: +# repository: porto.interlegis.leg.br/bitnami/postgresql +# registry: porto.interlegis.leg.br + registry: docker.io + repository: bitnami/postgresql + tag: 14.4.0-debian-11-r0 + pullPolicy: IfNotPresent + service: + type: ClusterIP + port: 5432 + persistence: + enabled: true + size: 1Gi + postgresqlPassword: sigi + postgresqlUsername: sigi + postgresqlDatabase: sigi + resources: + requests: + cpu: 50m + memory: 64Mi + + +resources: + limits: + cpu: 1000m + memory: 1Gi + requests: + cpu: 150m + memory: 500Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} diff --git a/images/logo_interlegis.png b/images/logo_interlegis.png new file mode 100644 index 0000000000000000000000000000000000000000..10c60762fd52050db82bdae98e6ddc161bd883c2 GIT binary patch literal 33536 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%0A-z-}~Wg)&Zey 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 literal 0 HcmV?d00001 diff --git a/images/sigi_interlegis.png b/images/sigi_interlegis.png new file mode 100644 index 0000000000000000000000000000000000000000..1bb1b59eca32aff40cfafe3f6de2e58e3152a0a5 GIT binary patch literal 38759 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

    3%e8c{a`R+ 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