diff --git a/apps/kustomization.yaml b/apps/kustomization.yaml index bf93a88..d0b92d7 100644 --- a/apps/kustomization.yaml +++ b/apps/kustomization.yaml @@ -3,3 +3,4 @@ kind: Kustomization resources: - nginx-app.yaml + - scriptscribe.yaml diff --git a/apps/scriptscribe.yaml b/apps/scriptscribe.yaml new file mode 100644 index 0000000..8ed0622 --- /dev/null +++ b/apps/scriptscribe.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: scriptscribe + namespace: argocd +spec: + project: default + source: + repoURL: https://gitea.whyredfire.tech/whyredfire/gitops + targetRevision: main + path: manifests/scriptscribe + destination: + server: https://kubernetes.default.svc + namespace: scriptscribe + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true diff --git a/manifests/scriptscribe/backend/auth-secret.yaml b/manifests/scriptscribe/backend/auth-secret.yaml new file mode 100644 index 0000000..3ac986b --- /dev/null +++ b/manifests/scriptscribe/backend/auth-secret.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: auth-secret +data: + JWT_SECRET: c2FtcGxlLWp3dC1zZWNyZXQK + PASS_SALT: c2FtcGxlLXBhc3Mtc2FsdC1zZWNyZXQK diff --git a/manifests/scriptscribe/backend/configmap.yaml b/manifests/scriptscribe/backend/configmap.yaml new file mode 100644 index 0000000..dbcf613 --- /dev/null +++ b/manifests/scriptscribe/backend/configmap.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: backend-config +data: + DB_CONNECTION: "mongodb://mongodb.scriptscribe.svc.cluster.local:27017" diff --git a/manifests/scriptscribe/backend/deployment.yaml b/manifests/scriptscribe/backend/deployment.yaml new file mode 100644 index 0000000..bb29755 --- /dev/null +++ b/manifests/scriptscribe/backend/deployment.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: backend + labels: + app: backend +spec: + replicas: 1 + selector: + matchLabels: + app: backend + template: + metadata: + labels: + app: backend + spec: + containers: + - name: backend + image: ghcr.io/whyredfire/ss-backend:3e5673bc5fb8ec7c950c8f43a620dbcb8ba43068 + ports: + - containerPort: 8000 + env: + - name: DB_CONNECTION + valueFrom: + configMapKeyRef: + name: backend-config + key: DB_CONNECTION + - name: JWT_SECRET + valueFrom: + secretKeyRef: + name: auth-secret + key: JWT_SECRET + - name: PASS_SALT + valueFrom: + secretKeyRef: + name: auth-secret + key: PASS_SALT diff --git a/manifests/scriptscribe/backend/kustomization.yaml b/manifests/scriptscribe/backend/kustomization.yaml new file mode 100644 index 0000000..363ad2b --- /dev/null +++ b/manifests/scriptscribe/backend/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - auth-secret.yaml + - deployment.yaml + - configmap.yaml + - service.yaml + diff --git a/manifests/scriptscribe/backend/service.yaml b/manifests/scriptscribe/backend/service.yaml new file mode 100644 index 0000000..7414344 --- /dev/null +++ b/manifests/scriptscribe/backend/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: backend +spec: + type: ClusterIP + selector: + app: backend + ports: + - port: 8000 + targetPort: 8000 diff --git a/manifests/scriptscribe/database/kustomization.yaml b/manifests/scriptscribe/database/kustomization.yaml new file mode 100644 index 0000000..1f067f5 --- /dev/null +++ b/manifests/scriptscribe/database/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - stateful-set.yaml + - service.yaml + diff --git a/manifests/scriptscribe/database/service.yaml b/manifests/scriptscribe/database/service.yaml new file mode 100644 index 0000000..5f081fe --- /dev/null +++ b/manifests/scriptscribe/database/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: mongodb +spec: + type: ClusterIP + selector: + app: mongodb + ports: + - port: 27017 + targetPort: 27017 diff --git a/manifests/scriptscribe/database/stateful-set.yaml b/manifests/scriptscribe/database/stateful-set.yaml new file mode 100644 index 0000000..a3d4513 --- /dev/null +++ b/manifests/scriptscribe/database/stateful-set.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mongodb +spec: + serviceName: mongodb + replicas: 1 + selector: + matchLabels: + app: mongodb + template: + metadata: + labels: + app: mongodb + spec: + containers: + - name: mongodb + image: mongo:8-noble + ports: + - containerPort: 27017 + volumeMounts: + - name: data + mountPath: /data/db + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 500Mi diff --git a/manifests/scriptscribe/frontend/deployment.yaml b/manifests/scriptscribe/frontend/deployment.yaml new file mode 100644 index 0000000..e6b52db --- /dev/null +++ b/manifests/scriptscribe/frontend/deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: frontend +spec: + replicas: 1 + selector: + matchLabels: + app: frontend + template: + metadata: + labels: + app: frontend + spec: + containers: + - name: frontend + image: ghcr.io/whyredfire/ss-frontend:3e5673bc5fb8ec7c950c8f43a620dbcb8ba43068 + ports: + - containerPort: 80 diff --git a/manifests/scriptscribe/frontend/kustomization.yaml b/manifests/scriptscribe/frontend/kustomization.yaml new file mode 100644 index 0000000..c3c1876 --- /dev/null +++ b/manifests/scriptscribe/frontend/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - deployment.yaml + - service.yaml + diff --git a/manifests/scriptscribe/frontend/service.yaml b/manifests/scriptscribe/frontend/service.yaml new file mode 100644 index 0000000..1501a46 --- /dev/null +++ b/manifests/scriptscribe/frontend/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: frontend +spec: + type: ClusterIP + selector: + app: frontend + ports: + - port: 80 + targetPort: 80 diff --git a/manifests/scriptscribe/ingress.yaml b/manifests/scriptscribe/ingress.yaml new file mode 100644 index 0000000..5a69ef2 --- /dev/null +++ b/manifests/scriptscribe/ingress.yaml @@ -0,0 +1,25 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ingress-rules + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: web +spec: + rules: + - host: scriptscribe.whyredfire.tech + http: + paths: + - path: /api + pathType: Prefix + backend: + service: + name: backend + port: + number: 8000 + - path: / + pathType: Prefix + backend: + service: + name: frontend + port: + number: 80 diff --git a/manifests/scriptscribe/kustomization.yaml b/manifests/scriptscribe/kustomization.yaml new file mode 100644 index 0000000..b925568 --- /dev/null +++ b/manifests/scriptscribe/kustomization.yaml @@ -0,0 +1,5 @@ +resources: + - database + - frontend + - backend + - ingress.yaml