{% if RUN_CADDY %} --- apiVersion: apps/v1 kind: Deployment metadata: name: caddy labels: app.kubernetes.io/name: caddy spec: selector: matchLabels: app.kubernetes.io/name: caddy template: metadata: labels: app.kubernetes.io/name: caddy spec: containers: - name: caddy image: {{ DOCKER_IMAGE_CADDY }} volumeMounts: - mountPath: /etc/caddy/ name: config - mountPath: /data/ name: data ports: - containerPort: 80 - containerPort: 443 volumes: - name: config configMap: name: caddy-config - name: data persistentVolumeClaim: claimName: caddy {% endif %} {% if RUN_CMS %} --- apiVersion: apps/v1 kind: Deployment metadata: name: cms labels: app.kubernetes.io/name: cms spec: selector: matchLabels: app.kubernetes.io/name: cms template: metadata: labels: app.kubernetes.io/name: cms spec: containers: - name: cms image: {{ DOCKER_IMAGE_OPENEDX }} env: - name: SERVICE_VARIANT value: cms ports: - containerPort: 8000 volumeMounts: - mountPath: /openedx/edx-platform/lms/envs/tutor/ name: settings-lms - mountPath: /openedx/edx-platform/cms/envs/tutor/ name: settings-cms - mountPath: /openedx/config name: config resources: requests: memory: 2Gi volumes: - name: settings-lms configMap: name: openedx-settings-lms - name: settings-cms configMap: name: openedx-settings-cms - name: config configMap: name: openedx-config --- apiVersion: apps/v1 kind: Deployment metadata: name: cms-worker labels: app.kubernetes.io/name: cms-worker spec: selector: matchLabels: app.kubernetes.io/name: cms-worker template: metadata: labels: app.kubernetes.io/name: cms-worker spec: containers: - name: cms-worker image: {{ DOCKER_IMAGE_OPENEDX }} args: ["celery", "worker", "--app=cms.celery", "--loglevel=info", "--hostname=edx.cms.core.default.%%h", "--maxtasksperchild", "100", "--exclude-queues=edx.lms.core.default"] env: - name: SERVICE_VARIANT value: cms - name: C_FORCE_ROOT value: "1" volumeMounts: - mountPath: /openedx/edx-platform/lms/envs/tutor/ name: settings-lms - mountPath: /openedx/edx-platform/cms/envs/tutor/ name: settings-cms - mountPath: /openedx/config name: config volumes: - name: settings-lms configMap: name: openedx-settings-lms - name: settings-cms configMap: name: openedx-settings-cms - name: config configMap: name: openedx-config {% endif %} {% if RUN_FORUM %} --- apiVersion: apps/v1 kind: Deployment metadata: name: forum labels: app.kubernetes.io/name: forum spec: selector: matchLabels: app.kubernetes.io/name: forum template: metadata: labels: app.kubernetes.io/name: forum spec: containers: - name: forum image: {{ DOCKER_IMAGE_FORUM }} ports: - containerPort: 4567 env: - name: SEARCH_SERVER value: "{{ ELASTICSEARCH_SCHEME }}://{{ ELASTICSEARCH_HOST }}:{{ ELASTICSEARCH_PORT }}" - name: MONGODB_AUTH value: "{% if MONGODB_USERNAME and MONGODB_PASSWORD %}{{ MONGODB_USERNAME}}:{{ MONGODB_PASSWORD }}@{% endif %}" - name: MONGODB_HOST value: "{{ MONGODB_HOST }}" - name: MONGODB_PORT value: "{{ MONGODB_PORT }}" {% endif %} {% if RUN_LMS %} --- apiVersion: apps/v1 kind: Deployment metadata: name: lms labels: app.kubernetes.io/name: lms spec: selector: matchLabels: app.kubernetes.io/name: lms template: metadata: labels: app.kubernetes.io/name: lms spec: containers: - name: lms image: {{ DOCKER_IMAGE_OPENEDX }} ports: - containerPort: 8000 volumeMounts: - mountPath: /openedx/edx-platform/lms/envs/tutor/ name: settings-lms - mountPath: /openedx/edx-platform/cms/envs/tutor/ name: settings-cms - mountPath: /openedx/config name: config resources: requests: memory: 2Gi volumes: - name: settings-lms configMap: name: openedx-settings-lms - name: settings-cms configMap: name: openedx-settings-cms - name: config configMap: name: openedx-config --- apiVersion: apps/v1 kind: Deployment metadata: name: lms-worker labels: app.kubernetes.io/name: lms-worker spec: selector: matchLabels: app.kubernetes.io/name: lms-worker template: metadata: labels: app.kubernetes.io/name: lms-worker spec: containers: - name: lms-worker image: {{ DOCKER_IMAGE_OPENEDX }} args: ["celery", "worker", "--app=lms.celery", "--loglevel=info", "--hostname=edx.lms.core.default.%%h", "--maxtasksperchild=100", "--exclude-queues=edx.cms.core.default"] env: - name: SERVICE_VARIANT value: lms - name: C_FORCE_ROOT value: "1" volumeMounts: - mountPath: /openedx/edx-platform/lms/envs/tutor/ name: settings-lms - mountPath: /openedx/edx-platform/cms/envs/tutor/ name: settings-cms - mountPath: /openedx/config name: config volumes: - name: settings-lms configMap: name: openedx-settings-lms - name: settings-cms configMap: name: openedx-settings-cms - name: config configMap: name: openedx-config {% endif %} {% if RUN_ELASTICSEARCH %} --- apiVersion: apps/v1 kind: Deployment metadata: name: elasticsearch labels: app.kubernetes.io/name: elasticsearch spec: selector: matchLabels: app.kubernetes.io/name: elasticsearch strategy: type: Recreate template: metadata: labels: app.kubernetes.io/name: elasticsearch spec: containers: - name: elasticsearch image: {{ DOCKER_IMAGE_ELASTICSEARCH }} env: - name: cluster.name value: "openedx" - name: bootstrap.memory_lock value: "true" - name: discovery.type value: "single-node" - name: ES_JAVA_OPTS value: "-Xms{{ ELASTICSEARCH_HEAP_SIZE }} -Xmx{{ ELASTICSEARCH_HEAP_SIZE }}" - name: TAKE_FILE_OWNERSHIP value: "1" ports: - containerPort: 9200 volumeMounts: - mountPath: /usr/share/elasticsearch/data name: data volumes: - name: data persistentVolumeClaim: claimName: elasticsearch {% endif %} {% if RUN_MONGODB %} --- apiVersion: apps/v1 kind: Deployment metadata: name: mongodb labels: app.kubernetes.io/name: mongodb spec: selector: matchLabels: app.kubernetes.io/name: mongodb strategy: type: Recreate template: metadata: labels: app.kubernetes.io/name: mongodb spec: containers: - name: mongodb image: {{ DOCKER_IMAGE_MONGODB }} args: ["mongod", "--smallfiles", "--nojournal", "--storageEngine", "wiredTiger"] ports: - containerPort: 27017 volumeMounts: - mountPath: /data/db name: data volumes: - name: data persistentVolumeClaim: claimName: mongodb {% endif %} {% if RUN_MYSQL %} --- apiVersion: apps/v1 kind: Deployment metadata: name: mysql labels: app.kubernetes.io/name: mysql spec: selector: matchLabels: app.kubernetes.io/name: mysql strategy: type: Recreate template: metadata: labels: app.kubernetes.io/name: mysql spec: containers: - name: mysql image: {{ DOCKER_IMAGE_MYSQL }} # Note the ignore-db-dir: this is because ext4 volumes are created with a lost+found directory in them, which causes mysql # initialization to fail args: ["mysqld", "--character-set-server=utf8", "--collation-server=utf8_general_ci", "--ignore-db-dir=lost+found"] env: - name: MYSQL_ROOT_PASSWORD value: "{{ MYSQL_ROOT_PASSWORD }}" ports: - containerPort: 3306 volumeMounts: - mountPath: /var/lib/mysql name: data volumes: - name: data persistentVolumeClaim: claimName: mysql {% endif %} {% if RUN_SMTP %} --- apiVersion: apps/v1 kind: Deployment metadata: name: smtp labels: app.kubernetes.io/name: smtp spec: selector: matchLabels: app.kubernetes.io/name: smtp template: metadata: labels: app.kubernetes.io/name: smtp spec: containers: - name: smtp image: {{ DOCKER_IMAGE_SMTP }} ports: - containerPort: 25 {% endif %} --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app.kubernetes.io/name: nginx spec: selector: matchLabels: app.kubernetes.io/name: nginx template: metadata: labels: app.kubernetes.io/name: nginx spec: containers: - name: nginx image: {{ DOCKER_IMAGE_NGINX }} volumeMounts: - mountPath: /etc/nginx/conf.d/ name: config {{ patch("k8s-deployments-nginx-volume-mounts")|indent(12) }} ports: - containerPort: 80 volumes: - name: config configMap: name: nginx-config {{ patch("k8s-deployments-nginx-volumes")|indent(8) }} {% if RUN_REDIS %} --- apiVersion: apps/v1 kind: Deployment metadata: name: redis labels: app.kubernetes.io/name: redis spec: selector: matchLabels: app.kubernetes.io/name: redis strategy: type: Recreate template: metadata: labels: app.kubernetes.io/name: redis spec: containers: - name: redis image: {{ DOCKER_IMAGE_REDIS }} args: ["redis-server", "/openedx/redis/config/redis.conf"] workingDir: /openedx/redis/data ports: - containerPort: {{ REDIS_PORT }} volumeMounts: - mountPath: /openedx/redis/config/ name: config - mountPath: /openedx/redis/data name: data volumes: - name: config configMap: name: redis-config - name: data persistentVolumeClaim: claimName: redis {% endif %} {{ patch("k8s-deployments") }}