From 1d32f45c78f540ed9ff809dbd955ef93d7989945 Mon Sep 17 00:00:00 2001 From: Edward Cheng Date: Wed, 31 Jul 2024 01:48:52 +1000 Subject: [PATCH] add app plane --- apps/plane/base/configmap.yaml | 28 ++ apps/plane/base/deployment.yaml | 263 ++++++++++++++++++ apps/plane/base/ingress.yaml | 46 +++ apps/plane/base/job.yaml | 35 +++ apps/plane/base/kustomization.yaml | 9 + apps/plane/base/service-account.yaml | 6 + apps/plane/base/service.yaml | 69 +++++ apps/plane/env/k3s-cluster/config.json | 12 + apps/plane/env/k3s-cluster/kustomization.yaml | 4 + .../env/k3s-cluster/templates/plane-app.yaml | 14 + .../templates/plane-doc-store.yaml | 15 + .../env/k3s-cluster/templates/plane.yaml | 9 + 12 files changed, 510 insertions(+) create mode 100644 apps/plane/base/configmap.yaml create mode 100644 apps/plane/base/deployment.yaml create mode 100644 apps/plane/base/ingress.yaml create mode 100644 apps/plane/base/job.yaml create mode 100644 apps/plane/base/kustomization.yaml create mode 100644 apps/plane/base/service-account.yaml create mode 100644 apps/plane/base/service.yaml create mode 100644 apps/plane/env/k3s-cluster/config.json create mode 100644 apps/plane/env/k3s-cluster/kustomization.yaml create mode 100644 resources/app-secrets/env/k3s-cluster/templates/plane-app.yaml create mode 100644 resources/app-secrets/env/k3s-cluster/templates/plane-doc-store.yaml create mode 100644 resources/namespaces/env/k3s-cluster/templates/plane.yaml diff --git a/apps/plane/base/configmap.yaml b/apps/plane/base/configmap.yaml new file mode 100644 index 0000000..13b4069 --- /dev/null +++ b/apps/plane/base/configmap.yaml @@ -0,0 +1,28 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: plane + name: plane-app-vars +data: + SENTRY_DSN: "" + SENTRY_ENVIRONMENT: "" + DEBUG: "0" + DOCKERIZED: "1" + GUNICORN_WORKERS: "1" + WEB_URL: "http://plane.cluster.edward.sydney" + CORS_ALLOWED_ORIGINS: "http://plane.cluster.edward.sydney,https:/plane.cluster.edward.sydney" + REDIS_URL: "redis://redis.redis.svc.cluster.local:6379/" +--- +apiVersion: v1 +kind: ConfigMap +metadata: + namespace: plane + name: plane-doc-store-vars +data: + FILE_SIZE_LIMIT: "5242880" + AWS_S3_BUCKET_NAME: "plane" + MINIO_ROOT_USER: "admin" + AWS_S3_ENDPOINT_URL: "http://minio.minio.svc.cluster.local:19000" + USE_MINIO: "1" +--- \ No newline at end of file diff --git a/apps/plane/base/deployment.yaml b/apps/plane/base/deployment.yaml new file mode 100644 index 0000000..a2954db --- /dev/null +++ b/apps/plane/base/deployment.yaml @@ -0,0 +1,263 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: plane + name: plane-admin-wl +spec: + replicas: 1 + selector: + matchLabels: + app.name: plane-admin + template: + metadata: + namespace: plane + labels: + app.name: plane-admin + spec: + containers: + - name: plane-admin + imagePullPolicy: Always + image: makeplane/plane-frontend:stable + stdin: true + tty: true + resources: + requests: + memory: "50Mi" + cpu: "50m" + limits: + memory: "1000Mi" + cpu: "500m" + command: + - node + args: + - admin/server.js + - admin + serviceAccount: plane-srv-account + serviceAccountName: plane-srv-account +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: plane + name: plane-api-wl +spec: + replicas: 1 + selector: + matchLabels: + app.name: plane-api + template: + metadata: + namespace: plane + labels: + app.name: plane-api + spec: + containers: + - name: plane-api + imagePullPolicy: Always + image: makeplane/plane-backend:stable + stdin: true + tty: true + resources: + requests: + memory: "50Mi" + cpu: "50m" + limits: + memory: "1000Mi" + cpu: "500m" + command: + - ./bin/docker-entrypoint-api.sh + envFrom: + - configMapRef: + name: plane-app-vars + optional: false + - secretRef: + name: plane-app-secrets + optional: false + - configMapRef: + name: plane-doc-store-vars + optional: false + - secretRef: + name: plane-doc-store-secrets + optional: false + readinessProbe: + failureThreshold: 30 + httpGet: + path: / + port: 8000 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + serviceAccount: plane-srv-account + serviceAccountName: plane-srv-account +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: plane + name: plane-beat-worker-wl +spec: + replicas: 1 + selector: + matchLabels: + app.name: plane-beat-worker + template: + metadata: + namespace: plane + labels: + app.name: plane-beat-worker + spec: + containers: + - name: plane-beat-worker + imagePullPolicy: Always + image: makeplane/plane-backend:stable + stdin: true + tty: true + resources: + requests: + memory: "50Mi" + cpu: "50m" + limits: + memory: "1000Mi" + cpu: "500m" + command: + - ./bin/docker-entrypoint-beat.sh + envFrom: + - configMapRef: + name: plane-app-vars + optional: false + - secretRef: + name: plane-app-secrets + optional: false + - configMapRef: + name: plane-doc-store-vars + optional: false + - secretRef: + name: plane-doc-store-secrets + optional: false + serviceAccount: plane-srv-account + serviceAccountName: plane-srv-account +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: plane + name: plane-space-wl +spec: + replicas: 1 + selector: + matchLabels: + app.name: plane-space + template: + metadata: + namespace: plane + labels: + app.name: plane-space + spec: + containers: + - name: plane-space + imagePullPolicy: Always + image: makeplane/plane-space:stable + stdin: true + tty: true + resources: + requests: + memory: "50Mi" + cpu: "50m" + limits: + memory: "1000Mi" + cpu: "500m" + command: + - node + args: + - space/server.js + - space + serviceAccount: plane-srv-account + serviceAccountName: plane-srv-account +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: plane + name: plane-web-wl +spec: + replicas: 1 + selector: + matchLabels: + app.name: plane-web + template: + metadata: + namespace: plane + labels: + app.name: plane-web + spec: + containers: + - name: plane-web + imagePullPolicy: Always + image: makeplane/plane-frontend:stable + stdin: true + tty: true + resources: + requests: + memory: "50Mi" + cpu: "50m" + limits: + memory: "1000Mi" + cpu: "500m" + command: + - node + args: + - web/server.js + - web + serviceAccount: plane-srv-account + serviceAccountName: plane-srv-account +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: plane + name: plane-worker-wl +spec: + replicas: 1 + selector: + matchLabels: + app.name: plane-worker + template: + metadata: + namespace: plane + labels: + app.name: plane-worker + spec: + containers: + - name: plane-worker + imagePullPolicy: Always + image: makeplane/plane-backend:stable + stdin: true + tty: true + resources: + requests: + memory: "50Mi" + cpu: "50m" + limits: + memory: "1000Mi" + cpu: "500m" + command: + - ./bin/docker-entrypoint-worker.sh + envFrom: + - configMapRef: + name: plane-app-vars + optional: false + - secretRef: + name: plane-app-secrets + optional: false + - configMapRef: + name: plane-doc-store-vars + optional: false + - secretRef: + name: plane-doc-store-secrets + optional: false + serviceAccount: plane-srv-account + serviceAccountName: plane-srv-account + +--- \ No newline at end of file diff --git a/apps/plane/base/ingress.yaml b/apps/plane/base/ingress.yaml new file mode 100644 index 0000000..5670d99 --- /dev/null +++ b/apps/plane/base/ingress.yaml @@ -0,0 +1,46 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + namespace: plane + name: plane-ingress +spec: + ingressClassName: nginx + rules: + - host: plane.cluster.edward.sydney + http: + paths: + - backend: + service: + port: + number: 3000 + name: plane-web + path: / + pathType: Prefix + - backend: + service: + port: + number: 8000 + name: plane-api + path: /api + pathType: Prefix + - backend: + service: + port: + number: 8000 + name: plane-api + path: /auth + pathType: Prefix + - backend: + service: + port: + number: 3000 + name: plane-space + path: /spaces + pathType: Prefix + - backend: + service: + port: + number: 3000 + name: plane-admin + path: /god-mode + pathType: Prefix \ No newline at end of file diff --git a/apps/plane/base/job.yaml b/apps/plane/base/job.yaml new file mode 100644 index 0000000..2a621e1 --- /dev/null +++ b/apps/plane/base/job.yaml @@ -0,0 +1,35 @@ +--- +apiVersion: batch/v1 +kind: Job +metadata: + namespace: plane + name: plane-api-migrate-{{ .Release.Revision }} +spec: + backoffLimit: 3 + template: + metadata: + labels: + app.name: plane-api-migrate + spec: + containers: + - name: plane-api-migrate + image: makeplane/plane-backend:stable + command: + - ./bin/docker-entrypoint-migrator.sh + imagePullPolicy: Always + envFrom: + - configMapRef: + name: plane-app-vars + optional: false + - secretRef: + name: plane-app-secrets + optional: false + - configMapRef: + name: plane-doc-store-vars + optional: false + - secretRef: + name: plane-doc-store-secrets + optional: false + restartPolicy: OnFailure + serviceAccount: plane-srv-account + serviceAccountName: plane-srv-account \ No newline at end of file diff --git a/apps/plane/base/kustomization.yaml b/apps/plane/base/kustomization.yaml new file mode 100644 index 0000000..60ad62c --- /dev/null +++ b/apps/plane/base/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./configmap.yaml + - ./service-account.yaml + - ./job.yaml + - ./deployment.yaml + - ./service.yaml + - ./ingress.yaml \ No newline at end of file diff --git a/apps/plane/base/service-account.yaml b/apps/plane/base/service-account.yaml new file mode 100644 index 0000000..ea5b934 --- /dev/null +++ b/apps/plane/base/service-account.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +automountServiceAccountToken: true +kind: ServiceAccount +metadata: + namespace: plane + name: plane-srv-account \ No newline at end of file diff --git a/apps/plane/base/service.yaml b/apps/plane/base/service.yaml new file mode 100644 index 0000000..78db580 --- /dev/null +++ b/apps/plane/base/service.yaml @@ -0,0 +1,69 @@ +--- +apiVersion: v1 +kind: Service +metadata: + namespace: plane + name: plane-admin + labels: + app.name: plane-admin +spec: + clusterIP: None + ports: + - name: admin-3000 + port: 3000 + protocol: TCP + targetPort: 3000 + selector: + app.name: plane-admin +--- +apiVersion: v1 +kind: Service +metadata: + namespace: plane + name: plane-api + labels: + app.name: plane-api +spec: + clusterIP: None + ports: + - name: api-8000 + port: 8000 + protocol: TCP + targetPort: 8000 + selector: + app.name: plane-api +--- +apiVersion: v1 +kind: Service +metadata: + namespace: plane + name: plane-space + labels: + app.name: plane-space +spec: + clusterIP: None + ports: + - name: space-3000 + port: 3000 + protocol: TCP + targetPort: 3000 + selector: + app.name: plane-space +--- +apiVersion: v1 +kind: Service +metadata: + namespace: plane + name: plane-web + labels: + app.name: plane-web +spec: + clusterIP: None + ports: + - name: web-3000 + port: 3000 + protocol: TCP + targetPort: 3000 + selector: + app.name: plane-web +--- diff --git a/apps/plane/env/k3s-cluster/config.json b/apps/plane/env/k3s-cluster/config.json new file mode 100644 index 0000000..7dcb086 --- /dev/null +++ b/apps/plane/env/k3s-cluster/config.json @@ -0,0 +1,12 @@ +{ + "appName": "plane", + "userGivenName": "plane", + "namespace": "plane", + "destNamespace": "plane", + "destServer": "https://kubernetes.default.svc", + "srcPath": "apps/plane/env/k3s-cluster", + "srcRepoURL": "https://github.com/3dwardch3ng/home-cluster-ops.git", + "srcTargetRevision": "", + "labels": null, + "annotations": null +} \ No newline at end of file diff --git a/apps/plane/env/k3s-cluster/kustomization.yaml b/apps/plane/env/k3s-cluster/kustomization.yaml new file mode 100644 index 0000000..a227ac4 --- /dev/null +++ b/apps/plane/env/k3s-cluster/kustomization.yaml @@ -0,0 +1,4 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../../base \ No newline at end of file diff --git a/resources/app-secrets/env/k3s-cluster/templates/plane-app.yaml b/resources/app-secrets/env/k3s-cluster/templates/plane-app.yaml new file mode 100644 index 0000000..e3d71bb --- /dev/null +++ b/resources/app-secrets/env/k3s-cluster/templates/plane-app.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + argocd.argoproj.io/sync-options: Prune=false + sealedsecrets.bitnami.com/cluster-wide: "true" + sealedsecrets.bitnami.com/managed: "true" + creationTimestamp: null + name: plane-app-secrets + namespace: plane +type: Opaque +stringData: + SECRET_KEY: "jvxSWYiseYAAStxb5D5EPTCTuLiPAc7CKRJ2iCVRJxCUrR5AQB" + DATABASE_URL: "postgresql://plane:a@ZAfKma&CAfJQjUePXJf8U^@postgresql.argocd.svc.cluster.local/plane" \ No newline at end of file diff --git a/resources/app-secrets/env/k3s-cluster/templates/plane-doc-store.yaml b/resources/app-secrets/env/k3s-cluster/templates/plane-doc-store.yaml new file mode 100644 index 0000000..5923ed6 --- /dev/null +++ b/resources/app-secrets/env/k3s-cluster/templates/plane-doc-store.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Secret +metadata: + annotations: + argocd.argoproj.io/sync-options: Prune=false + sealedsecrets.bitnami.com/cluster-wide: "true" + sealedsecrets.bitnami.com/managed: "true" + creationTimestamp: null + name: plane-doc-store-secrets + namespace: plane +type: Opaque +stringData: + MINIO_ROOT_PASSWORD: "XVHXyKiFk997QvhxRkyF" + AWS_ACCESS_KEY_ID: "5O8DvpKi6DGf7IjjoD3I" + AWS_SECRET_ACCESS_KEY: "f7vptIeYy3EJDUzqOFMmGJ73IsfHcA9MPZs3RELH" \ No newline at end of file diff --git a/resources/namespaces/env/k3s-cluster/templates/plane.yaml b/resources/namespaces/env/k3s-cluster/templates/plane.yaml new file mode 100644 index 0000000..1bcc446 --- /dev/null +++ b/resources/namespaces/env/k3s-cluster/templates/plane.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Namespace +metadata: + annotations: + argocd.argoproj.io/sync-options: Prune=false + creationTimestamp: null + name: plane +spec: {} +status: {}