From bd25ca649cc23b75913695849985c963d62ffb91 Mon Sep 17 00:00:00 2001 From: David Burke Date: Sun, 2 Feb 2020 13:12:55 -0500 Subject: [PATCH] chart work --- Chart.lock | 9 ++ Chart.yaml | 10 +++ charts/postgresql-8.2.1.tgz | Bin 0 -> 29733 bytes charts/redis-10.4.0.tgz | Bin 0 -> 30774 bytes templates/secrets.yaml | 3 +- .../{deployment.yaml => web-deployment.yaml} | 12 +-- templates/web-hpa.yaml | 19 +++++ templates/worker-deployment.yaml | 54 ++++++++++++ templates/worker-hpa.yaml | 19 +++++ values.yaml | 79 +++++++++++------- 10 files changed, 169 insertions(+), 36 deletions(-) create mode 100644 Chart.lock create mode 100644 charts/postgresql-8.2.1.tgz create mode 100644 charts/redis-10.4.0.tgz rename templates/{deployment.yaml => web-deployment.yaml} (83%) create mode 100644 templates/web-hpa.yaml create mode 100644 templates/worker-deployment.yaml create mode 100644 templates/worker-hpa.yaml diff --git a/Chart.lock b/Chart.lock new file mode 100644 index 0000000..4b01dcf --- /dev/null +++ b/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: postgresql + repository: https://kubernetes-charts.storage.googleapis.com/ + version: 8.2.1 +- name: redis + repository: https://kubernetes-charts.storage.googleapis.com/ + version: 10.4.0 +digest: sha256:6dab63cfbf6a2f363b12ff9cbf683697352acfaa438962ef827418e5e9e7af22 +generated: "2020-02-01T17:08:07.30147224-05:00" diff --git a/Chart.yaml b/Chart.yaml index 8b80ac1..7de0199 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -19,3 +19,13 @@ 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. appVersion: 1.0.0 + +dependencies: + - name: postgresql + version: 8.2.1 + repository: https://kubernetes-charts.storage.googleapis.com/ + condition: postgresql.enabled + - name: redis + version: 10.4.0 + repository: https://kubernetes-charts.storage.googleapis.com/ + condition: redis.enabled \ No newline at end of file diff --git a/charts/postgresql-8.2.1.tgz b/charts/postgresql-8.2.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..fd2656e92e4a67b555188479ae3c0cdb01dbcdf5 GIT binary patch literal 29733 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 literal 0 HcmV?d00001 diff --git a/templates/secrets.yaml b/templates/secrets.yaml index 9bffee3..7a9cac3 100644 --- a/templates/secrets.yaml +++ b/templates/secrets.yaml @@ -7,4 +7,5 @@ metadata: type: Opaque data: DATABASE_URL: {{ required "databaseURL is a required value." .Values.databaseURL | b64enc | quote }} - SECRET_KEY: {{ required "secretKey is a required value." .Values.secretKey | b64enc | quote }} \ No newline at end of file + SECRET_KEY: {{ required "secretKey is a required value." .Values.secretKey | b64enc | quote }} + REDIS_URL: "redis" \ No newline at end of file diff --git a/templates/deployment.yaml b/templates/web-deployment.yaml similarity index 83% rename from templates/deployment.yaml rename to templates/web-deployment.yaml index a6d0ec1..d014b71 100644 --- a/templates/deployment.yaml +++ b/templates/web-deployment.yaml @@ -1,10 +1,9 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "glitchtip.fullname" . }} + name: {{ include "glitchtip.fullname" . }}-web labels: {{- include "glitchtip.labels" . | nindent 4 }} - lol: "yes" spec: replicas: {{ .Values.replicaCount }} selector: @@ -14,6 +13,8 @@ spec: metadata: labels: {{- include "glitchtip.selectorLabels" . | nindent 8 }} + annotations: + checksum/secrets.yaml: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: @@ -39,12 +40,11 @@ spec: value: "False" - name: STATIC_URL value: / - - name: DATABASE_URL - value: {{ required "databaseURL is a required value." .Values.databaseURL | quote }} - - name: SECRET_KEY - value: {{ required "secretKey is a required value." .Values.secretKey | quote }} - name: ENABLE_SOCIAL_AUTH value: {{ .Values.enableSocialAuth | quote }} + envFrom: + - secretRef: + name: {{ include "glitchtip.fullname" . }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/templates/web-hpa.yaml b/templates/web-hpa.yaml new file mode 100644 index 0000000..ebe36ac --- /dev/null +++ b/templates/web-hpa.yaml @@ -0,0 +1,19 @@ +{{- if .Values.web.hpa.enabled -}} +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ template "glitchtip.fullname" . }}-web + labels: + app: {{ template "glitchtip.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + scaleTargetRef: + kind: Deployment + apiVersion: apps/v1 + name: {{ template "glitchtip.fullname" . }}-web + minReplicas: {{ .Values.web.hpa.minpods }} + maxReplicas: {{ .Values.web.hpa.maxpods }} + targetCPUUtilizationPercentage: {{ .Values.web.hpa.cputhreshold }} +{{- end }} \ No newline at end of file diff --git a/templates/worker-deployment.yaml b/templates/worker-deployment.yaml new file mode 100644 index 0000000..ca8c0eb --- /dev/null +++ b/templates/worker-deployment.yaml @@ -0,0 +1,54 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "glitchtip.fullname" . }}-worker + labels: + {{- include "glitchtip.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.image.replicaCount }} + selector: + matchLabels: + {{- include "glitchtip.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "glitchtip.selectorLabels" . | nindent 8 }} + annotations: + checksum/secrets.yaml: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} + 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 }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + resources: + {{- toYaml .Values.worker.resources | nindent 12 }} + env: + - name: DEBUG + value: "False" + - name: STATIC_URL + value: / + - name: SERVER_ROLE + value: "worker" + envFrom: + - secretRef: + name: {{ include "glitchtip.fullname" . }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} \ No newline at end of file diff --git a/templates/worker-hpa.yaml b/templates/worker-hpa.yaml new file mode 100644 index 0000000..86a3672 --- /dev/null +++ b/templates/worker-hpa.yaml @@ -0,0 +1,19 @@ +{{- if .Values.worker.hpa.enabled -}} +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ template "glitchtip.fullname" . }}-worker + labels: + app: {{ template "glitchtip.fullname" . }} + chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" + release: "{{ .Release.Name }}" + heritage: "{{ .Release.Service }}" +spec: + scaleTargetRef: + kind: Deployment + apiVersion: apps/v1 + name: {{ template "glitchtip.fullname" . }}-worker + minReplicas: {{ .Values.worker.hpa.minpods }} + maxReplicas: {{ .Values.worker.hpa.maxpods }} + targetCPUUtilizationPercentage: {{ .Values.worker.hpa.cputhreshold }} +{{- end }} \ No newline at end of file diff --git a/values.yaml b/values.yaml index d98c9d2..a121e67 100644 --- a/values.yaml +++ b/values.yaml @@ -2,8 +2,6 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -replicaCount: 1 - image: repository: registry.gitlab.com/glitchtip/glitchtip-frontend tag: master @@ -16,6 +14,42 @@ databaseURL: secretKey: enableSocialAuth: false +web: + hpa: + enabled: false + cputhreshold: 60 + minpods: 1 + maxpods: 10 + replicaCount: 1 + resources: {} + # limits: + # cpu: 500m + # memory: 512Mi + # requests: + # cpu: 100m + # memory: 128Mi + nodeSelector: {} + tolerations: [] + affinity: {} + +worker: + replicaCount: 1 + hpa: + enabled: false + cputhreshold: 60 + minpods: 1 + maxpods: 10 + resources: {} + # limits: + # cpu: 500m + # memory: 256Mi + # requests: + # cpu: 100m + # memory: 128Mi + nodeSelector: {} + tolerations: [] + affinity: {} + serviceAccount: # Specifies whether a service account should be created create: true @@ -23,17 +57,6 @@ serviceAccount: # If not set and create is true, a name is generated using the fullname template name: -podSecurityContext: {} - # fsGroup: 2000 - -securityContext: {} - # capabilities: - # drop: - # - ALL - # readOnlyRootFilesystem: true - # runAsNonRoot: true - # runAsUser: 1000 - service: type: ClusterIP port: 80 @@ -51,20 +74,18 @@ ingress: # 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 +redis: + enabled: true + master: + persistence: + enabled: false + slave: + persistence: + enabled: false + cluster: + enabled: false + slaveCount: 1 -nodeSelector: {} - -tolerations: [] - -affinity: {} +# Default to disabled, use a managed database service. But can be enabled here. +postgresql: + enabled: false \ No newline at end of file