diff --git a/.gitignore b/.gitignore index 01132f72..bb5568f1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,31 @@ map.json *.log *.swp .idea + +######################### +# helm related +######################### +# ignore secrets +gitrepo.yaml +variables.txt +*.secret.yaml + +# ignore terraform files +terraform/.terraform +terraform/*.auto.tfvars +terraform/terraform.tfstate +terraform/terraform.tfstate.backup + +# ignore downloaded chart fiels +helm/smile/charts/* +*charts/* +# values for deployment +helm/smile/values-clowder.yaml +helm/smile/values-smile.yaml + +# idea folder +*.idea/ + +# secrets +*.secret.yaml +helm/smile/smile.secret.yaml diff --git a/helm/smile/Chart.lock b/helm/smile/Chart.lock new file mode 100644 index 00000000..e2b25156 --- /dev/null +++ b/helm/smile/Chart.lock @@ -0,0 +1,12 @@ +dependencies: +- name: rabbitmq + repository: https://charts.bitnami.com/bitnami + version: 11.7.0 +- name: minio + repository: https://charts.bitnami.com/bitnami + version: 12.1.3 +- name: redis + repository: https://charts.bitnami.com/bitnami + version: 17.6.0 +digest: sha256:ef61ee3fc18af86bf276359adba62024af1cab89b4f87bffe57ef0e9e5221195 +generated: "2023-02-01T14:00:21.4759023-06:00" diff --git a/helm/smile/Chart.yaml b/helm/smile/Chart.yaml new file mode 100644 index 00000000..b6f83ab1 --- /dev/null +++ b/helm/smile/Chart.yaml @@ -0,0 +1,45 @@ +apiVersion: v2 +name: smile +icon: +home: https://github.com/ncsa/standalone-smm-smile +description: Smile +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: 0.1.0 + +# List of people that maintain this helm chart. +maintainers: + - name: Yong Wook Kim + email: ywkim@illinois.edu + +# location of source code +sources: + - https://github.com/ncsa/standalone-smm-smile + +# dependencies for the helm chart, use helm dep install to the install them. +dependencies: + - name: rabbitmq + version: ~11 + repository: https://charts.bitnami.com/bitnami + - name: minio + version: ~12 + repository: https://charts.bitnami.com/bitnami + - name: redis + version: ~17 + repository: https://charts.bitnami.com/bitnami + +# annotations for artifact.io +annotations: + artifacthub.io/links: | + - name: Helm Chart + url: https://git.ncsa.illinois.edu/isda/clusters/smm + artifacthub.io/changes: | + - Updated email functions in components diff --git a/helm/smile/smile.secret.yaml.template b/helm/smile/smile.secret.yaml.template new file mode 100644 index 00000000..e81314ef --- /dev/null +++ b/helm/smile/smile.secret.yaml.template @@ -0,0 +1,25 @@ +--- +apiVersion: v1 +kind: Secret +metadata: + name: smile-server + namespace: smile +stringData: + CILOGON_CLIENT_ID: "" + CILOGON_CLIENT_SECRET: "" + CLOWDER_GLOBAL_KEY: "" + GA_KEY: "" # Google Analytics Key + REDDIT_CLIENT_ID: "" + REDDIT_CLIENT_SECRET: "" + BOX_CLIENT_ID: "" + BOX_CLIENT_SECRET: "" + DROPBOX_CLIENT_ID: "" + DROPBOX_CLIENT_SECRET: "" + GOOGLE_CLIENT_ID: "" + GOOGLE_CLIENT_SECRET: "" + root-user: "" #AWS_ACCESSKEY + root-password: "" #AWS_ACCESSKEYSECRET + TWITTER_CONSUMER_KEY: "" + TWITTER_CONSUMER_SECRET: "" + TWITTER_V2_CLIENT_ID: "" + TWITTER_V2_CLIENT_SECRET: "" \ No newline at end of file diff --git a/helm/smile/templates/_helpers.tpl b/helm/smile/templates/_helpers.tpl new file mode 100644 index 00000000..712c0afc --- /dev/null +++ b/helm/smile/templates/_helpers.tpl @@ -0,0 +1,107 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "smile.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 "smile.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 "smile.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "smile.labels" -}} +helm.sh/chart: {{ include "smile.chart" . }} +{{ include "smile.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "smile.selectorLabels" -}} +app.kubernetes.io/name: {{ include "smile.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "smile.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "smile.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Add environment variables to talk to minio +*/}} +{{- define "smile.minio.connect" -}} +- name: MINIO_URL + value: {{ include "smile.fullname" . }}-minio +- name: MINIO_PUBLIC_ACCESS_URL + value: "https://{{ .Values.minio.apiIngress.hostname }}" +- name: AWS_ACCESSKEY + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: root-user +- name: AWS_ACCESSKEYSECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: root-password +- name: BUCKET_NAME + value: {{ .Values.minio.defaultBuckets }} +{{- end }} + +{{/* +Add environment variables to talk to minio +*/}} +{{- define "smile.email.connect" -}} +- name: EMAIL_HOST + value: "smtp.ncsa.illinois.edu" +- name: EMAIL_PORT + value: "25" +- name: EMAIL_FROM_ADDRESS + value: "devnull+smm@ncsa.illinois.edu" +- name: EMAIL_PASSWORD + value: "" +{{- end }} diff --git a/helm/smile/templates/algorithm-autophrase/deployment.yaml b/helm/smile/templates/algorithm-autophrase/deployment.yaml new file mode 100644 index 00000000..83559ebf --- /dev/null +++ b/helm/smile/templates/algorithm-autophrase/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-autophrase + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_autophrase.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-autophrase + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-autophrase + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: autophrase + image: "{{ .Values.image.project }}/{{ .Values.algorithm_autophrase.image.repository }}:{{ .Values.algorithm_autophrase.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_autophrase.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["/usr/bin/python3"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: autophrase + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_autophrase.resources | nindent 12 }} + {{- with .Values.algorithm_autophrase.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_autophrase.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_autophrase.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_classification_predict/deployment.yaml b/helm/smile/templates/algorithm_classification_predict/deployment.yaml new file mode 100644 index 00000000..4dbabc9d --- /dev/null +++ b/helm/smile/templates/algorithm_classification_predict/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cls-predict + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_classification_predict.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cls-predict + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cls-predict + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cls-predict + image: "{{ .Values.image.project }}/{{ .Values.algorithm_classification_predict.image.repository }}:{{ .Values.algorithm_classification_predict.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_classification_predict.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: classification_predict + {{- include "smile.minio.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_classification_predict.resources | nindent 12 }} + {{- with .Values.algorithm_classification_predict.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_classification_predict.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_classification_predict.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_classification_split/deployment.yaml b/helm/smile/templates/algorithm_classification_split/deployment.yaml new file mode 100644 index 00000000..78a5a33b --- /dev/null +++ b/helm/smile/templates/algorithm_classification_split/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cls-split + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_classification_split.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cls-split + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cls-split + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cls-split + image: "{{ .Values.image.project }}/{{ .Values.algorithm_classification_split.image.repository }}:{{ .Values.algorithm_classification_split.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_classification_split.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: classification_split + {{- include "smile.minio.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_classification_split.resources | nindent 12 }} + {{- with .Values.algorithm_classification_split.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_classification_split.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_classification_split.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_classification_train/deployment.yaml b/helm/smile/templates/algorithm_classification_train/deployment.yaml new file mode 100644 index 00000000..c9078230 --- /dev/null +++ b/helm/smile/templates/algorithm_classification_train/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cls-train + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_classification_train.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cls-train + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cls-train + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cls-train + image: "{{ .Values.image.project }}/{{ .Values.algorithm_classification_train.image.repository }}:{{ .Values.algorithm_classification_train.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_classification_train.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: classification_train + {{- include "smile.minio.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_classification_train.resources | nindent 12 }} + {{- with .Values.algorithm_classification_train.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_classification_train.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_classification_train.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_histogram/deployment.yaml b/helm/smile/templates/algorithm_histogram/deployment.yaml new file mode 100644 index 00000000..d88032c9 --- /dev/null +++ b/helm/smile/templates/algorithm_histogram/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-histogram + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_histogram.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-histogram + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-histogram + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: histogram + image: "{{ .Values.image.project }}/{{ .Values.algorithm_histogram.image.repository }}:{{ .Values.algorithm_histogram.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_histogram.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: histogram + {{- include "smile.minio.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_histogram.resources | nindent 12 }} + {{- with .Values.algorithm_histogram.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_histogram.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_histogram.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_name_entity_recognition/deployment.yaml b/helm/smile/templates/algorithm_name_entity_recognition/deployment.yaml new file mode 100644 index 00000000..b2f7d036 --- /dev/null +++ b/helm/smile/templates/algorithm_name_entity_recognition/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-nm-ent-rec + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_name_entity_recognition.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-nm-ent-rec + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-nm-ent-rec + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: nm-ent-rec + image: "{{ .Values.image.project }}/{{ .Values.algorithm_name_entity_recognition.image.repository }}:{{ .Values.algorithm_name_entity_recognition.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_name_entity_recognition.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python3"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: name_entity_recognition + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_name_entity_recognition.resources | nindent 12 }} + {{- with .Values.algorithm_name_entity_recognition.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_name_entity_recognition.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_name_entity_recognition.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_network_analysis/deployment.yaml b/helm/smile/templates/algorithm_network_analysis/deployment.yaml new file mode 100644 index 00000000..31816219 --- /dev/null +++ b/helm/smile/templates/algorithm_network_analysis/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-net-analysis + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_network_analysis.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-net-analysis + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-net-analysis + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: net-analysis + image: "{{ .Values.image.project }}/{{ .Values.algorithm_network_analysis.image.repository }}:{{ .Values.algorithm_network_analysis.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_network_analysis.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: network_analysis + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_network_analysis.resources | nindent 12 }} + {{- with .Values.algorithm_network_analysis.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_network_analysis.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_network_analysis.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_preprocessing/deployment.yaml b/helm/smile/templates/algorithm_preprocessing/deployment.yaml new file mode 100644 index 00000000..7e434552 --- /dev/null +++ b/helm/smile/templates/algorithm_preprocessing/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-preprocessing + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_preprocessing.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-preprocessing + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-preprocessing + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: preprocessing + image: "{{ .Values.image.project }}/{{ .Values.algorithm_preprocessing.image.repository }}:{{ .Values.algorithm_preprocessing.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_preprocessing.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: preprocessing + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_preprocessing.resources | nindent 12 }} + {{- with .Values.algorithm_preprocessing.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_preprocessing.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_preprocessing.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_screen_name_prompt/deployment.yaml b/helm/smile/templates/algorithm_screen_name_prompt/deployment.yaml new file mode 100644 index 00000000..1a9e9f09 --- /dev/null +++ b/helm/smile/templates/algorithm_screen_name_prompt/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-scr-nm-pmt + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_screen_name_prompt.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-scr-nm-pmt + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-scr-nm-pmt + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: scr-nm-pmt + image: "{{ .Values.image.project }}/{{ .Values.algorithm_screen_name_prompt.image.repository }}:{{ .Values.algorithm_screen_name_prompt.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_screen_name_prompt.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./screen_name_prompt.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: bae_screen_name_prompt + {{- include "smile.minio.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_screen_name_prompt.resources | nindent 12 }} + {{- with .Values.algorithm_screen_name_prompt.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_screen_name_prompt.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_screen_name_prompt.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_sentiment_analysis/deployment.yaml b/helm/smile/templates/algorithm_sentiment_analysis/deployment.yaml new file mode 100644 index 00000000..95f9b52d --- /dev/null +++ b/helm/smile/templates/algorithm_sentiment_analysis/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-sent-anal + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_sentiment_analysis.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-sent-anal + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-sent-anal + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: sent-anal + image: "{{ .Values.image.project }}/{{ .Values.algorithm_sentiment_analysis.image.repository }}:{{ .Values.algorithm_sentiment_analysis.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_sentiment_analysis.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: sentiment_analysis + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_sentiment_analysis.resources | nindent 12 }} + {{- with .Values.algorithm_sentiment_analysis.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_sentiment_analysis.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_sentiment_analysis.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/algorithm_topic_modeling/deployment.yaml b/helm/smile/templates/algorithm_topic_modeling/deployment.yaml new file mode 100644 index 00000000..e8c52f47 --- /dev/null +++ b/helm/smile/templates/algorithm_topic_modeling/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-topic-mod + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.algorithm_topic_modeling.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-topic-mod + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-topic-mod + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: topic-mod + image: "{{ .Values.image.project }}/{{ .Values.algorithm_topic_modeling.image.repository }}:{{ .Values.algorithm_topic_modeling.image.tag }}" + imagePullPolicy: {{ .Values.algorithm_topic_modeling.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: topic_modeling + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.algorithm_topic_modeling.resources | nindent 12 }} + {{- with .Values.algorithm_topic_modeling.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_topic_modeling.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.algorithm_topic_modeling.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/clowder_create_collection/deployment.yaml b/helm/smile/templates/clowder_create_collection/deployment.yaml new file mode 100644 index 00000000..17be399a --- /dev/null +++ b/helm/smile/templates/clowder_create_collection/deployment.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cld-crt-coll + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.clowder_create_dataset.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-crt-coll + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-crt-coll + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cld-crt-coll + image: "{{ .Values.image.project }}/{{ .Values.clowder_create_collection.image.repository }}:{{ .Values.clowder_create_collection.image.tag }}" + imagePullPolicy: {{ .Values.clowder_create_collection.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: HOST_IP + value: "{{ include "smile.fullname" . }}-minio" + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: clowder_create_collection + {{- with (index .Values.ingress.hosts 1)}} + - name: CLOWDER_BASE_URL + value: "https://{{ .host }}/" + {{- end}} + resources: + {{- toYaml .Values.clowder_create_collection.resources | nindent 12 }} + {{- with .Values.clowder_create_collection.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_create_collection.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_create_collection.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/clowder_create_dataset/deployment.yaml b/helm/smile/templates/clowder_create_dataset/deployment.yaml new file mode 100644 index 00000000..242e1bbc --- /dev/null +++ b/helm/smile/templates/clowder_create_dataset/deployment.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cld-crt-dataset + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.clowder_create_dataset.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-crt-dataset + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-crt-dataset + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cld-crt-dataset + image: "{{ .Values.image.project }}/{{ .Values.clowder_create_dataset.image.repository }}:{{ .Values.clowder_create_dataset.image.tag }}" + imagePullPolicy: {{ .Values.clowder_create_dataset.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: HOST_IP + value: "{{ include "smile.fullname" . }}-minio" + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: lambda_invoke_clowder + {{- with (index .Values.ingress.hosts 1)}} + - name: CLOWDER_BASE_URL + value: "https://{{ .host }}/" + {{- end}} + resources: + {{- toYaml .Values.clowder_create_dataset.resources | nindent 12 }} + {{- with .Values.clowder_create_dataset.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_create_dataset.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_create_dataset.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/clowder_create_space/deployment.yaml b/helm/smile/templates/clowder_create_space/deployment.yaml new file mode 100644 index 00000000..258b201e --- /dev/null +++ b/helm/smile/templates/clowder_create_space/deployment.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cld-crt-space + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.clowder_create_dataset.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-crt-space + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-crt-space + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cld-crt-space + image: "{{ .Values.image.project }}/{{ .Values.clowder_create_space.image.repository }}:{{ .Values.clowder_create_space.image.tag }}" + imagePullPolicy: {{ .Values.clowder_create_space.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: HOST_IP + value: "{{ include "smile.fullname" . }}-minio" + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: clowder_create_space + {{- with (index .Values.ingress.hosts 1)}} + - name: CLOWDER_BASE_URL + value: "https://{{ .host }}/" + {{- end}} + resources: + {{- toYaml .Values.clowder_create_space.resources | nindent 12 }} + {{- with .Values.clowder_create_space.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_create_space.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_create_space.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/clowder_list/deployment.yaml b/helm/smile/templates/clowder_list/deployment.yaml new file mode 100644 index 00000000..ecc83a01 --- /dev/null +++ b/helm/smile/templates/clowder_list/deployment.yaml @@ -0,0 +1,60 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cld-list + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.clowder_create_dataset.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-list + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-list + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cld-list + image: "{{ .Values.image.project }}/{{ .Values.clowder_list.image.repository }}:{{ .Values.clowder_list.image.tag }}" + imagePullPolicy: {{ .Values.clowder_list.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: HOST_IP + value: "{{ include "smile.fullname" . }}-minio" + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: lambda_list_clowder + {{- with (index .Values.ingress.hosts 1) }} + - name: CLOWDER_BASE_URL + value: "https://{{ .host }}/" + {{- end }} + - name: CLOWDER_GLOBAL_KEY + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: CLOWDER_GLOBAL_KEY + resources: + {{- toYaml .Values.clowder_list.resources | nindent 12 }} + {{- with .Values.clowder_list.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_list.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_list.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/clowder_upload_file/deployment.yaml b/helm/smile/templates/clowder_upload_file/deployment.yaml new file mode 100644 index 00000000..b530d6c8 --- /dev/null +++ b/helm/smile/templates/clowder_upload_file/deployment.yaml @@ -0,0 +1,52 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-cld-up-file + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.clowder_upload_file.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-up-file + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-cld-up-file + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: cld-up-file + image: "{{ .Values.image.project }}/{{ .Values.clowder_upload_file.image.repository }}:{{ .Values.clowder_upload_file.image.tag }}" + imagePullPolicy: {{ .Values.clowder_upload_file.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python"] + args: ["./rabbitmq_handler.py"] + env: + - name: HOST_IP + value: "{{ include "smile.fullname" . }}-minio" + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: lambda_upload_clowder + {{- with (index .Values.ingress.hosts 1)}} + - name: CLOWDER_BASE_URL + value: "https://{{ .host }}/" + {{- end}} + {{- include "smile.minio.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.clowder_upload_file.resources | nindent 12 }} + {{- with .Values.clowder_upload_file.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_upload_file.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.clowder_upload_file.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/collect_reddit_comment/deployment.yaml b/helm/smile/templates/collect_reddit_comment/deployment.yaml new file mode 100644 index 00000000..400f6a55 --- /dev/null +++ b/helm/smile/templates/collect_reddit_comment/deployment.yaml @@ -0,0 +1,65 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-col-redt-com + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.collect_reddit_comment.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-col-redt-com + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-col-redt-com + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: col-redt-com + image: "{{ .Values.image.project }}/{{ .Values.collect_reddit_comment.image.repository }}:{{ .Values.collect_reddit_comment.image.tag }}" + imagePullPolicy: {{ .Values.collect_reddit_comment.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python3"] + args: ["./rabbitmq_handler.py"] + env: + - name: REDDIT_CLIENT_ID + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: REDDIT_CLIENT_ID + - name: REDDIT_CLIENT_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: REDDIT_CLIENT_SECRET + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: reddit_comment + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.collect_reddit_comment.resources | nindent 12 }} + {{- with .Values.collect_reddit_comment.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.collect_reddit_comment.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.collect_reddit_comment.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/configmap.yaml b/helm/smile/templates/configmap.yaml new file mode 100644 index 00000000..1166bf99 --- /dev/null +++ b/helm/smile/templates/configmap.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: smile diff --git a/helm/smile/templates/image_crawler/deployment.yaml b/helm/smile/templates/image_crawler/deployment.yaml new file mode 100644 index 00000000..71014251 --- /dev/null +++ b/helm/smile/templates/image_crawler/deployment.yaml @@ -0,0 +1,47 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-img-crler + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.image_crawler.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-img-crler + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-img-crler + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: img-crler + image: "{{ .Values.image.project }}/{{ .Values.image_crawler.image.repository }}:{{ .Values.image_crawler.image.tag }}" + imagePullPolicy: {{ .Values.image_crawler.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["python3"] + args: ["./rabbitmq_handler.py"] + env: + - name: RABBITMQ_HOST + value: "{{ include "smile.fullname" . }}-rabbitmq" + - name: QUEUE_NAME + value: image_crawler + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + resources: + {{- toYaml .Values.image_crawler.resources | nindent 12 }} + {{- with .Values.image_crawler.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.image_crawler.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.image_crawler.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/secret.yaml b/helm/smile/templates/secret.yaml new file mode 100644 index 00000000..e5d745ab --- /dev/null +++ b/helm/smile/templates/secret.yaml @@ -0,0 +1,24 @@ +#{{- if not .Values.externalsecrets }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "smile.fullname" . }}-server + labels: + {{- include "smile.labels" . | nindent 4 }} +stringData: + CILOGON_CLIENT_ID: cilogon:/client_id/1234 + CILOGON_CLIENT_SECRET: 1234 + CLOWDER_GLOBAL_KEY: 1234 + REDDIT_CLIENT_ID: 1234 + REDDIT_CLIENT_SECRET: 1234 + BOX_CLIENT_ID: 1234 + BOX_CLIENT_SECRET: 1234 + DROPBOX_CLIENT_ID: 1234 + DROPBOX_CLIENT_SECRET: 1234 + GOOGLE_CLIENT_ID: 1234 + GOOGLE_CLIENT_SECRET: 1234 + root-user: 1234 + root-password: 1234 + TWITTER_CONSUMER_KEY: 1234 + TWITTER_CONSUMER_SECRET: 1234 +#{{- end }} diff --git a/helm/smile/templates/smile-graphql/deployment.yaml b/helm/smile/templates/smile-graphql/deployment.yaml new file mode 100644 index 00000000..0a8e6feb --- /dev/null +++ b/helm/smile/templates/smile-graphql/deployment.yaml @@ -0,0 +1,72 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-graphql + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.smile_graphql.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-graphql + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-graphql + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + containers: + - name: graphql + image: "{{ .Values.image.project }}/{{ .Values.smile_graphql.image.repository }}:{{ .Values.smile_graphql.image.tag }}" + imagePullPolicy: {{ .Values.smile_graphql.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["npm"] + args: ["run", "docker-start"] + env: + - name: DOCKERIZED + value: "true" + - name: TWITTER_CONSUMER_KEY + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: TWITTER_CONSUMER_KEY + - name: TWITTER_CONSUMER_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: TWITTER_CONSUMER_SECRET + ports: + - containerPort: {{ .Values.smile_graphql.service.port }} + name: graphql +# livenessProbe: +# httpGet: +# path: / +# port: {{ .Values.smile_graphql.service.port }} +# readinessProbe: +# httpGet: +# path: / +# port: {{ .Values.smile_graphql.service.port }} + resources: + {{- toYaml .Values.smile_graphql.resources | nindent 12 }} + {{- with .Values.smile_graphql.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.smile_graphql.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.smile_graphql.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/smile-graphql/service.yaml b/helm/smile/templates/smile-graphql/service.yaml new file mode 100644 index 00000000..910a215e --- /dev/null +++ b/helm/smile/templates/smile-graphql/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "smile.fullname" . }}-graphql + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + selector: + app.kubernetes.io/name: {{ include "smile.name" . }}-graphql + app.kubernetes.io/instance: {{ .Release.Name }} + type: {{ .Values.smile_graphql.service.type }} + ports: + - port: {{ .Values.smile_graphql.service.port }} + name: graphql + targetPort: {{ .Values.smile_graphql.service.port }} + protocol: TCP diff --git a/helm/smile/templates/smile-server/deployment.yaml b/helm/smile/templates/smile-server/deployment.yaml new file mode 100644 index 00000000..2a2bca02 --- /dev/null +++ b/helm/smile/templates/smile-server/deployment.yaml @@ -0,0 +1,237 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "smile.fullname" . }}-server + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.smile_server.replicas }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "smile.name" . }}-server + app.kubernetes.io/instance: {{ .Release.Name }} + strategy: + type: RollingUpdate + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "smile.name" . }}-server + app.kubernetes.io/instance: {{ .Release.Name }} + spec: +# initContainers: +# - name: tags +# image: "{{ .Values.image.project }}/{{ .Values.smile_server.image.repository }}:{{ .Values.smile_server.image.tag }}" +# imagePullPolicy: {{ .Values.smile_server.image.pullPolicy | default .Values.image.pullPolicy }} +# command: ["/bin/mkdir"] +# args: ["-p", "/mounts/smile_data", "/mounts/smile_user", "/mounts/smile_tag"] +# volumeMounts: +# - name: {{ include "smile.fullname" . }}-data +# mountPath: /mounts + containers: + - name: server + image: "{{ .Values.image.project }}/{{ .Values.smile_server.image.repository }}:{{ .Values.smile_server.image.tag }}" + imagePullPolicy: {{ .Values.smile_server.image.pullPolicy | default .Values.image.pullPolicy }} + command: ["npm"] + args: ["run", "docker-start"] + env: + - name: HOME + value: /smile/ + - name: SINGLE_USER + value: "false" + - name: CLOWDER_ON + value: "true" + - name: DOCKERIZED + value: "true" + - name: REDIS_URL + value: "redis://{{ include "smile.fullname" . }}-redis-master:6379" + - name: RABBITMQ_URL + value: "amqp://{{ include "smile.fullname" . }}-rabbitmq:5672" + - name: SMILE_GRAPHQL_URL + value: "http://{{ include "smile.fullname" . }}-graphql:5050/graphql" + - name: LOCAL_ALGORITHM + value: "true" + - name: HOST_IP + value: "{{ include "smile.fullname" . }}-minio" + - name: SHARE_EXPIRE_IN + value: "1" + - name: GA_KEY + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: GA_KEY + - name: TWITTER_ON + value: "false" + - name: TWITTER_CONSUMER_KEY + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: TWITTER_CONSUMER_KEY + - name: TWITTER_CONSUMER_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: TWITTER_CONSUMER_SECRET + - name: TWITTER_V2_CLIENT_ID + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: TWITTER_V2_CLIENT_ID + - name: TWITTER_V2_CLIENT_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: TWITTER_V2_CLIENT_SECRET + - name: TWITTER_V2_CALLBACK_URL + value: "https://{{ .host }}/login/twitterV2/callback" + - name: REDDIT_ON + value: "true" + - name: REDDIT_CLIENT_ID + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: REDDIT_CLIENT_ID + - name: REDDIT_CLIENT_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: REDDIT_CLIENT_SECRET + {{- with (first .Values.ingress.hosts) }} + - name: REDDIT_CALLBACK_URL + value: "https://{{ .host }}/login/reddit/callback" + {{- end }} + - name: BOX_CLIENT_ID + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: BOX_CLIENT_ID + - name: BOX_CLIENT_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: BOX_CLIENT_SECRET + - name: DROPBOX_CLIENT_ID + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: DROPBOX_CLIENT_ID + - name: DROPBOX_CLIENT_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: DROPBOX_CLIENT_SECRET + - name: GOOGLE_CLIENT_ID + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: GOOGLE_CLIENT_ID + - name: GOOGLE_CLIENT_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: GOOGLE_CLIENT_SECRET + - name: CILOGON_CLIENT_ID + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: CILOGON_CLIENT_ID + - name: CILOGON_CLIENT_SECRET + valueFrom: + secretKeyRef: + {{- if .Values.externalsecrets }} + name: {{ .Values.externalsecrets }} + {{- else }} + name: {{ include "smile.fullname" . }}-server + {{- end }} + key: CILOGON_CLIENT_SECRET + - name: CILOGON_CALLBACK_URL + value: https://{{ .host }}/smile-login/callback + {{- include "smile.minio.connect" . | nindent 12 }} + {{- include "smile.email.connect" . | nindent 12 }} + ports: + - containerPort: {{ .Values.smile_server.service.port }} + name: server + volumeMounts: + - name: {{ include "smile.fullname" . }}-tag + mountPath: /smile/ + livenessProbe: + httpGet: + path: / + port: {{ .Values.smile_server.service.port }} + readinessProbe: + httpGet: + path: / + port: {{ .Values.smile_server.service.port }} + resources: + {{- toYaml .Values.smile_server.resources | nindent 12 }} + volumes: + - name: {{ include "smile.fullname" . }}-tag + persistentVolumeClaim: + claimName: {{ include "smile.fullname" . }}-tag + {{- with .Values.smile_server.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.smile_server.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.smile_server.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/helm/smile/templates/smile-server/ingress.yaml b/helm/smile/templates/smile-server/ingress.yaml new file mode 100644 index 00000000..ea0110b3 --- /dev/null +++ b/helm/smile/templates/smile-server/ingress.yaml @@ -0,0 +1,34 @@ +{{- if .Values.ingress.enabled -}} + {{- $fullName := include "smile.fullname" . -}} + {{- $svcPort := .Values.smile_server.service.port -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $fullName }}-server + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- with (first .Values.ingress.hosts) }} + - host: {{ .host | quote }} + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: {{ $fullName }}-server + port: + number: {{ $svcPort }} + {{- end }} + {{- end }} diff --git a/helm/smile/templates/smile-server/persistence.yaml b/helm/smile/templates/smile-server/persistence.yaml new file mode 100644 index 00000000..0199d58c --- /dev/null +++ b/helm/smile/templates/smile-server/persistence.yaml @@ -0,0 +1,15 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "smile.fullname" . }}-tag + labels: +{{- include "smile.labels" . | nindent 4 }} +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: {{ .Values.smile_server.persistence.size | quote }} +{{- if .Values.smile_server.persistence.storageClass }} + storageClassName: {{ .Values.smile_server.persistence.storageClass }} +{{- end }} diff --git a/helm/smile/templates/smile-server/service.yaml b/helm/smile/templates/smile-server/service.yaml new file mode 100644 index 00000000..baab2598 --- /dev/null +++ b/helm/smile/templates/smile-server/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "smile.fullname" . }}-server + labels: + {{- include "smile.labels" . | nindent 4 }} +spec: + selector: + app.kubernetes.io/name: {{ include "smile.name" . }}-server + app.kubernetes.io/instance: {{ .Release.Name }} + type: {{ .Values.smile_server.service.type }} + ports: + - port: {{ .Values.smile_server.service.port }} + name: server + targetPort: {{ .Values.smile_server.service.port }} + protocol: TCP diff --git a/helm/smile/values.yaml b/helm/smile/values.yaml new file mode 100644 index 00000000..39bddc78 --- /dev/null +++ b/helm/smile/values.yaml @@ -0,0 +1,347 @@ +# Default values for smile. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +# if there is no externalsecrets, then we need to use the secret.yaml file +# there is smile.secret.yaml.template, so use it to create secret.yaml, then +# kubectl create -f secret.yaml +externalsecrets: "smile-server" + +image: + project: socialmediamacroscope + pullPolicy: IfNotPresent + pullSecrets: + - name: regcred + +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 + +ingress: + enabled: true + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: smm.localhost +# tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + # should we add middleare annotations for traefik v2? + traefik: false + +persistence: + size: 10Gi + #existingClaim: someclaim + +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 + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} + + +# ---------------------------------------------------------------------- +# DEPLOYMENT CONFIGURATION +# ---------------------------------------------------------------------- + +# ---------------------------------------------------------------------- +# Smile Server +# ---------------------------------------------------------------------- +smile_server: + replicas: 1 + image: + repository: smile_server + tag: 0.3.0 + service: + type: ClusterIP + port: 8001 + app_env: production + ingress: + annotations: + persistence: + size: 1Gi + +# ---------------------------------------------------------------------- +# Smile GraphQL +# ---------------------------------------------------------------------- +smile_graphql: + replicas: 1 + image: + repository: smile_graphql + tag: 0.1.0 + service: + type: ClusterIP + port: 5050 + persistence: + +# ---------------------------------------------------------------------- +# Smile Algorithm Autophrase +# ---------------------------------------------------------------------- +algorithm_autophrase: + replicas: 1 + image: + repository: autophrase + tag: 0.1.5 + +# ---------------------------------------------------------------------- +# Smile Algorithm Classification Predict +# ---------------------------------------------------------------------- +algorithm_classification_predict: + replicas: 1 + image: + repository: classification_predict + tag: 0.1.2 + +# ---------------------------------------------------------------------- +# Smile Algorithm Classification Train +# ---------------------------------------------------------------------- +algorithm_classification_train: + replicas: 1 + image: + repository: classification_train + tag: 0.1.2 + +# ---------------------------------------------------------------------- +# Smile Algorithm Classification Split +# ---------------------------------------------------------------------- +algorithm_classification_split: + replicas: 1 + image: + repository: classification_split + tag: 0.1.2 + +# ---------------------------------------------------------------------- +# Smile Algorithm Histogram +# ---------------------------------------------------------------------- +algorithm_histogram: + replicas: 1 + image: + repository: histogram + tag: 0.1.1 + +# ---------------------------------------------------------------------- +# Smile Algorithm Network Analysis +# ---------------------------------------------------------------------- +algorithm_network_analysis: + replicas: 1 + image: + repository: network_analysis + tag: 0.1.3 + +# ---------------------------------------------------------------------- +# Smile Algorithm Preprocessing +# ---------------------------------------------------------------------- +algorithm_preprocessing: + replicas: 1 + image: + repository: preprocessing + tag: 0.1.3 + +# ---------------------------------------------------------------------- +# Smile Algorithm Sentiment Analysis +# ---------------------------------------------------------------------- +algorithm_sentiment_analysis: + replicas: 1 + image: + repository: sentiment_analysis + tag: 0.1.5 + +# ---------------------------------------------------------------------- +# Smile Algorithm Screen Name Prompt +# ---------------------------------------------------------------------- +algorithm_screen_name_prompt: + replicas: 1 + image: + repository: screen_name_prompt + tag: 0.1.2 + +# ---------------------------------------------------------------------- +# Smile Algorithm Topic Modeling +# ---------------------------------------------------------------------- +algorithm_topic_modeling: + replicas: 1 + image: + repository: topic_modeling + tag: 0.1.3 + +# ---------------------------------------------------------------------- +# Smile Algorithm Name Entity Recognition +# ---------------------------------------------------------------------- +algorithm_name_entity_recognition: + replicas: 1 + image: + repository: name_entity_recognition + tag: 0.1.2 + +# ---------------------------------------------------------------------- +# Smile Image Crawler +# ---------------------------------------------------------------------- +image_crawler: + replicas: 1 + image: + repository: image_crawler + tag: 0.1.2 + +# ---------------------------------------------------------------------- +# Smile Collect Reddit Comment +# ---------------------------------------------------------------------- +collect_reddit_comment: + replicas: 1 + image: + repository: collect_reddit_comment + tag: 0.1.2 + +# ---------------------------------------------------------------------- +# Clowder Create Collection +# ---------------------------------------------------------------------- +clowder_create_collection: + replicas: 1 + image: + repository: clowder_create_collection + tag: 0.1.0 + +# ---------------------------------------------------------------------- +# Clowder Create Dataset +# ---------------------------------------------------------------------- +clowder_create_dataset: + replicas: 1 + image: + repository: clowder_create_dataset + tag: 0.1.0 + +# ---------------------------------------------------------------------- +# Clowder Create Space +# ---------------------------------------------------------------------- +clowder_create_space: + replicas: 1 + image: + repository: clowder_create_space + tag: 0.1.0 + +# ---------------------------------------------------------------------- +# Clowder List +# ---------------------------------------------------------------------- +clowder_list: + replicas: 1 + image: + repository: clowder_list + tag: 0.1.0 + +# ---------------------------------------------------------------------- +# Clowder Upload File +# ---------------------------------------------------------------------- +clowder_upload_file: + replicas: 1 + image: + repository: clowder_upload_file + tag: 0.1.2 + + +# ---------------------------------------------------------------------- +# DEPENDENCIES CONFIGURATION +# ---------------------------------------------------------------------- + +# ---------------------------------------------------------------------- +# RabbitMQ +# ---------------------------------------------------------------------- +rabbitmq: + enabled: true +# service: +# portEnabled: true +# ports.amqp: 5672 +# ports.manager: 15672 + ingress: + enabled: true + hostname: smile.localhost + persistence: +# existingClaim: rabbitmq-pvc + auth: + username: guest + password: guest + + +# ---------------------------------------------------------------------- +# MinIO +# ---------------------------------------------------------------------- +minio: + enabled: true + auth: + existingSecret: "smile-server" + disableWebUI: false + defaultBuckets: macroscope-smile + mode: standalone + containerPorts: + api: 9000 + console: 9001 + ingress: + enabled: true + hostname: minio.smm.localhost + apiIngress: + enabled: true + hostname: minio-api.smm.localhost + persistence: + enabled: true +# existingClaim: minio-pvc +# mountPath: /data + size: 20Gi + +# ---------------------------------------------------------------------- +# Redis +# ---------------------------------------------------------------------- +redis: + master: + containerPorts: + redis: 6379 + persistence: + enabled: false + architecture: standalone + auth: + enabled: false