{{/* # Copyright © 2019 Bell Canada # # 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: apps/v1 kind: StatefulSet metadata: name: {{ include "common.fullname" . }} namespace: {{ include "common.namespace" . }} labels: app: {{ include "common.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} release: {{ include "common.release" . }} heritage: {{ .Release.Service }} spec: podManagementPolicy: OrderedReady replicas: {{ .Values.replicaCount }} serviceName: {{ include "common.fullname" . }} selector: matchLabels: app: {{ include "common.fullname" . }} name: {{ include "common.name" . }}-web-deploy service: django template: metadata: labels: app: {{ include "common.fullname" . }} name: {{ include "common.name" . }}-web-deploy release: {{ include "common.release" . }} service: django spec: initContainers: - name: {{ include "common.name" . }}-init-readiness image: {{ include "repositoryGenerator.image.readiness" . }} imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} command: - /app/ready.py args: - --container-name - {{ include "common.name" . }}-mgnt env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace containers: - image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.web }} imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} name: {{ include "common.name" . }}-web ports: - containerPort: {{ .Values.service.web.internalPort }} protocol: TCP resources: requests: cpu: 500m memory: 1Gi volumeMounts: - mountPath: /etc/tower/settings.py name: awx-application-config readOnly: true subPath: settings.py - mountPath: /etc/tower/conf.d/ name: awx-application-credentials readOnly: true - mountPath: /etc/tower/SECRET_KEY name: awx-secret-key readOnly: true subPath: SECRET_KEY - command: ["/bin/sh","-c"] args: ["/usr/bin/launch_awx_task.sh"] env: - name: AWX_SKIP_MIGRATIONS value: "1" image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.task }} imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} name: {{ include "common.name" . }}-celery resources: requests: cpu: 1500m memory: 2Gi securityContext: privileged: true volumeMounts: - mountPath: /etc/tower/settings.py name: awx-application-config readOnly: true subPath: settings.py - mountPath: /etc/tower/conf.d/ name: awx-application-credentials readOnly: true - mountPath: /etc/tower/SECRET_KEY name: awx-secret-key readOnly: true subPath: SECRET_KEY - env: - name: MY_POD_IP valueFrom: fieldRef: apiVersion: v1 fieldPath: status.podIP - name: RABBITMQ_USE_LONGNAME value: "true" - name: RABBITMQ_NODENAME value: rabbit@$(MY_POD_IP) - name: RABBITMQ_ERLANG_COOKIE valueFrom: secretKeyRef: key: rabbitmq_erlang_cookie name: {{ include "common.fullname" . }}-secrets - name: K8S_SERVICE_NAME value: {{ include "common.servicename" . }}-rabbitmq image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.rabbitmq }} imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} name: {{ include "common.name" . }}-rabbit livenessProbe: exec: command: - rabbitmqctl - status failureThreshold: 3 initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} periodSeconds: {{ .Values.liveness.periodSeconds }} successThreshold: 1 timeoutSeconds: 10 ports: - containerPort: {{ .Values.service.rabbitmq.http.internalPort }} name: {{ .Values.service.rabbitmq.http.portName }} protocol: TCP - containerPort: {{ .Values.service.rabbitmq.amqp.internalPort }} name: {{ .Values.service.rabbitmq.amqp.portName }} protocol: TCP readinessProbe: exec: command: - rabbitmqctl - status failureThreshold: 3 initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }} periodSeconds: {{ .Values.liveness.periodSeconds }} successThreshold: 1 timeoutSeconds: 10 resources: requests: cpu: 500m memory: 2Gi volumeMounts: - mountPath: /etc/rabbitmq name: rabbitmq-config - image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image.memcached }} imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} name: {{ include "common.name" . }}-memcached resources: requests: cpu: 500m memory: 1Gi serviceAccount: {{ include "common.fullname" . }} serviceAccountName: {{ include "common.fullname" . }} volumes: - configMap: defaultMode: 420 items: - key: awx_settings path: settings.py name: {{ include "common.fullname" . }}-settings name: awx-application-config - name: awx-application-credentials secret: defaultMode: 420 items: - key: credentials_py path: credentials.py - key: environment_sh path: environment.sh secretName: {{ include "common.fullname" . }}-secrets - name: awx-secret-key secret: defaultMode: 420 items: - key: secret_key path: SECRET_KEY secretName: {{ include "common.fullname" . }}-secrets - configMap: defaultMode: 420 items: - key: rabbitmq.conf path: rabbitmq.conf - key: enabled_plugins path: enabled_plugins - key: rabbitmq_definitions.json path: rabbitmq_definitions.json name: {{ include "common.fullname" . }}-rabbitmq name: rabbitmq-config imagePullSecrets: - name: "{{ include "common.namespace" . }}-docker-registry-key"