diff --git a/docker-compose.yml b/docker-compose.yml index 9a944a15..3a5fa1ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,6 @@ version: '3.6' -x-common-variables: &common-variables - MONGO_INITDB_DATABASE: testdb - MONGO_INITDB_ROOT_USERNAME: admin - MONGO_INITDB_ROOT_PASSWORD: admin - services: - web: build: . image: 81318131/fastapi_gpt @@ -15,23 +9,7 @@ services: volumes: - './app:/code/app' environment: - <<: *common-variables OPENAI_API_KEY: ${KEY:-} TEST: ${TEST:-} - MONGO_HOST: mongo_gpt - MONGO_PORT: 27017 - ports: - "80:80" - - - - mongo: - image: mongo - container_name: mongo_gpt - restart: always - volumes: - - './data:/data/db' - ports: - - "27017:27017" - environment: *common-variables diff --git a/helm/templates/app/_helpers.tpl b/helm/templates/app/_helpers.tpl new file mode 100644 index 00000000..8cd40792 --- /dev/null +++ b/helm/templates/app/_helpers.tpl @@ -0,0 +1,17 @@ +{{- define "app.labels" -}} +app: {{ .Chart.Name }} +component: gpt-app +release: {{ .Release.Name }} +{{- end -}} + +{{- define "app.deploymentName" -}} +{{ .Release.Name }}-app-deployment +{{- end -}} + +{{- define "app.serviceName" -}} +{{ .Release.Name }}-app-service +{{- end -}} + +{{- define "app.secretName" -}} +{{ .Release.Name }}-app-secret +{{- end -}} diff --git a/helm/templates/app/deployment.yaml b/helm/templates/app/deployment.yaml new file mode 100644 index 00000000..93df9f50 --- /dev/null +++ b/helm/templates/app/deployment.yaml @@ -0,0 +1,32 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "app.deploymentName" . }} + labels: + {{- include "app.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.app.replicaCount }} + selector: + matchLabels: + {{- include "app.labels" . | nindent 8 }} + template: + metadata: + labels: + {{- include "app.labels" . | nindent 8 }} + spec: + containers: + - name: {{ include "app.deploymentName" . }} + image: {{ .Values.app.image.repository }}:{{ .Values.app.image.tag }} + command: ["fastapi", "run", "app/main.py", "--port", "8080"] + ports: + - containerPort: {{ .Values.app.service.targetPort }} + envFrom: + - secretRef: + name: {{ include "app.secretName" . }} + {{- if .Values.app.nodeSelector }} + nodeSelector: {{ .Values.app.nodeSelector | toYaml | nindent 8 }} + {{- end }} + + {{- if .Values.app.affinity }} + affinity: {{ .Values.app.affinity | toYaml | nindent 8 }} + {{- end }} diff --git a/helm/templates/app/secret.yaml b/helm/templates/app/secret.yaml new file mode 100644 index 00000000..e0fdbdac --- /dev/null +++ b/helm/templates/app/secret.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "app.secretName" . }} + labels: + {{- include "app.labels" . | nindent 4 }} +type: Opaque +data: +{{- range $key, $value := .Values.app.environment }} + {{ $key }}: {{ $value | b64enc | quote }} +{{- end }} diff --git a/helm/templates/app/service.yaml b/helm/templates/app/service.yaml new file mode 100644 index 00000000..7d2ca6dd --- /dev/null +++ b/helm/templates/app/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "app.serviceName" . }} + labels: + {{- include "app.labels" . | nindent 4 }} +spec: + type: {{ .Values.app.service.type }} + ports: + - port: {{ .Values.app.service.port }} + targetPort: {{ .Values.app.service.targetPort }} + protocol: {{ .Values.app.service.protocol }} + {{- if eq .Values.app.service.type "NodePort" }} + nodePort: {{ .Values.app.service.nodePort }} + {{- end }} + selector: + {{- include "app.labels" . | nindent 4 }} diff --git a/helm/templates/db/_helpers.tpl b/helm/templates/db/_helpers.tpl deleted file mode 100644 index c74d3337..00000000 --- a/helm/templates/db/_helpers.tpl +++ /dev/null @@ -1,21 +0,0 @@ -{{- define "db.labels" -}} -app: {{ .Chart.Name }} -component: db-gpt -release: {{ .Release.Name }} -{{- end -}} - -{{- define "db.deploymentName" -}} -{{ .Release.Name }}-db -{{- end -}} - -{{- define "db.serviceName" -}} -{{ .Release.Name }}-db-service -{{- end -}} - -{{- define "db.pvcName" -}} -{{ .Release.Name }}-db-pvc -{{- end -}} - -{{- define "db.secretName" -}} -{{ .Release.Name }}-db-secret -{{- end -}} diff --git a/helm/templates/db/deployment.yaml b/helm/templates/db/deployment.yaml deleted file mode 100644 index eb32e4ea..00000000 --- a/helm/templates/db/deployment.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "db.deploymentName" . }} - labels: - {{- include "db.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.db.replicaCount }} - selector: - matchLabels: - {{- include "db.labels" . | nindent 8 }} - template: - metadata: - labels: - {{- include "db.labels" . | nindent 8 }} - spec: - containers: - - name: {{ include "db.deploymentName" . }} - image: {{ .Values.db.image.repository }}:{{ .Values.db.image.tag }} - ports: - - containerPort: {{ .Values.db.service.targetPort }} - envFrom: - - secretRef: - name: {{ include "db.secretName" . }} - volumeMounts: - - name: data - mountPath: /data/db - volumes: - - name: data - persistentVolumeClaim: - claimName: {{ include "db.pvcName" . }} - {{- if .Values.db.nodeSelector }} - nodeSelector: {{ .Values.db.nodeSelector | toYaml | nindent 8 }} - {{- end }} - - {{- if .Values.db.affinity }} - affinity: {{ .Values.db.affinity | toYaml | nindent 8 }} - {{- end }} diff --git a/helm/templates/db/pvc.yaml b/helm/templates/db/pvc.yaml deleted file mode 100644 index c46c19af..00000000 --- a/helm/templates/db/pvc.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.db.persistence.enabled }} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "db.pvcName" . }} - labels: - {{- include "db.labels" . | nindent 4 }} -spec: - accessModes: - - {{ .Values.db.persistence.accessModes | first | quote }} - resources: - requests: - storage: {{ .Values.db.persistence.size | quote }} - {{- if .Values.db.persistence.storageClass }} - storageClassName: {{ .Values.db.persistence.storageClass | quote }} - {{- end }} -{{- end }} diff --git a/helm/templates/db/secret.yaml b/helm/templates/db/secret.yaml deleted file mode 100644 index 717cd2e5..00000000 --- a/helm/templates/db/secret.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "db.secretName" . }} - labels: - {{- include "db.labels" . | nindent 4 }} -type: Opaque -data: -{{- range $key, $value := .Values.db.environment }} - {{ $key }}: {{ $value | b64enc | quote }} -{{- end }} diff --git a/helm/templates/db/service.yaml b/helm/templates/db/service.yaml deleted file mode 100644 index 665308f0..00000000 --- a/helm/templates/db/service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "db.serviceName" . }} - labels: - {{- include "db.labels" . | nindent 4 }} -spec: - type: {{ .Values.db.service.type }} - ports: - - port: {{ .Values.db.service.port }} - targetPort: {{ .Values.db.service.targetPort }} - protocol: {{ .Values.db.service.protocol }} - selector: - {{- include "db.labels" . | nindent 4 }} diff --git a/helm/templates/web/_helpers.tpl b/helm/templates/web/_helpers.tpl deleted file mode 100644 index 643345ec..00000000 --- a/helm/templates/web/_helpers.tpl +++ /dev/null @@ -1,17 +0,0 @@ -{{- define "web.labels" -}} -app: {{ .Chart.Name }} -component: web-gpt -release: {{ .Release.Name }} -{{- end -}} - -{{- define "web.deploymentName" -}} -{{ .Release.Name }}-web -{{- end -}} - -{{- define "web.serviceName" -}} -{{ .Release.Name }}-web-service -{{- end -}} - -{{- define "web.secretName" -}} -{{ .Release.Name }}-web-secret -{{- end -}} diff --git a/helm/templates/web/deployment.yaml b/helm/templates/web/deployment.yaml deleted file mode 100644 index 3208ca29..00000000 --- a/helm/templates/web/deployment.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "web.deploymentName" . }} - labels: - {{- include "web.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.web.replicaCount }} - selector: - matchLabels: - {{- include "web.labels" . | nindent 8 }} - template: - metadata: - labels: - {{- include "web.labels" . | nindent 8 }} - spec: - containers: - - name: {{ include "web.deploymentName" . }} - image: {{ .Values.web.image.repository }}:{{ .Values.web.image.tag }} - command: ["fastapi", "run", "app/main.py", "--port", "8080"] - ports: - - containerPort: {{ .Values.web.service.targetPort }} - envFrom: - - secretRef: - name: {{ include "web.secretName" . }} - - secretRef: - name: {{ include "db.secretName" . }} - env: - - name: MONGO_HOST - value: {{ include "db.serviceName" . }} - - name: MONGO_PORT - value: "{{ .Values.db.service.port }}" - {{- if .Values.web.nodeSelector }} - nodeSelector: {{ .Values.web.nodeSelector | toYaml | nindent 8 }} - {{- end }} - - {{- if .Values.web.affinity }} - affinity: {{ .Values.web.affinity | toYaml | nindent 8 }} - {{- end }} diff --git a/helm/templates/web/secret.yaml b/helm/templates/web/secret.yaml deleted file mode 100644 index 7751beca..00000000 --- a/helm/templates/web/secret.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "web.secretName" . }} - labels: - {{- include "web.labels" . | nindent 4 }} -type: Opaque -data: -{{- range $key, $value := .Values.web.environment }} - {{ $key }}: {{ $value | b64enc | quote }} -{{- end }} diff --git a/helm/templates/web/service.yaml b/helm/templates/web/service.yaml deleted file mode 100644 index d8b7f72f..00000000 --- a/helm/templates/web/service.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "web.serviceName" . }} - labels: - {{- include "web.labels" . | nindent 4 }} -spec: - type: {{ .Values.web.service.type }} - ports: - - port: {{ .Values.web.service.port }} - targetPort: {{ .Values.web.service.targetPort }} - protocol: {{ .Values.web.service.protocol }} - {{- if eq .Values.web.service.type "NodePort" }} - nodePort: {{ .Values.web.service.nodePort }} - {{- end }} - selector: - {{- include "web.labels" . | nindent 4 }} diff --git a/helm/values.yaml b/helm/values.yaml index 669731ee..66265167 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -1,14 +1,8 @@ -web: +app: replicaCount: 1 image: repository: 81318131/fastapi_gpt tag: latest - persistence: - enabled: true - size: 1Gi - accessModes: - - ReadWriteOnce - storageClass: "" service: type: ClusterIP port: 80 @@ -19,26 +13,3 @@ web: OPENAI_API_KEY: "" nodeSelector: {} affinity: {} - -db: - replicaCount: 1 - image: - repository: mongo - tag: latest - persistence: - enabled: true - size: 1Gi - accessModes: - - ReadWriteOnce - storageClass: "" - service: - type: ClusterIP - port: 27017 - targetPort: 27017 - protocol: TCP - environment: - MONGO_INITDB_DATABASE: "testdb" - MONGO_INITDB_ROOT_USERNAME: "admin" - MONGO_INITDB_ROOT_PASSWORD: "admin" - nodeSelector: {} - affinity: {}