App/plane (#730)

* add app plane

* add app plane
This commit is contained in:
2024-07-31 01:49:55 +10:00
committed by GitHub
parent 447188e7a3
commit 6f0c30b5d0
12 changed files with 528 additions and 0 deletions

View File

@@ -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"
---

View File

@@ -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
---

View File

@@ -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

35
apps/plane/base/job.yaml Normal file
View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1,6 @@
apiVersion: v1
automountServiceAccountToken: true
kind: ServiceAccount
metadata:
namespace: plane
name: plane-srv-account

View File

@@ -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
---

12
apps/plane/env/k3s-cluster/config.json vendored Normal file
View File

@@ -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
}

View File

@@ -0,0 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base

View File

@@ -0,0 +1,23 @@
---
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
annotations:
sealedsecrets.bitnami.com/cluster-wide: "true"
creationTimestamp: null
name: plane-app-secrets
namespace: plane
spec:
encryptedData:
DATABASE_URL: AgBtQ5he7Q8FSo+GyEV+KK11PYdICqrRv5lYnOAVMnngr9gBMA92toE6Xhc3LZfMR25ePZfCGx4UY6z03SE3kaxlC/1+OnsEv2J+/SL/aGHlJoSDZgW7iKDRUsLa4oVgN/ufMNPRSUldyNnUpHo1ZPIo9zJKlckXVHjC+hf8g75GlAGYo0wElolhD/06tsd4Bc188ccyVzZlQXMunri/XqXPdrwuzsPkgsWQHtgJL9RLX/Ew/zvuGrjWRoHHzxlXchu2j+jfhU+aR/kyUnxOtjsjorAhz1acivYeZlFEFhQd3wpFCtwHw2JS4SYfmTBr5UrGOoYbjcXkzuHYUq7uFqUbXG7+PgKlE9BvL3mz0h84MK1tCkWTf/OFFd3o3uMwXnBpDAAnvinV6AUBGuF1XAYVykO3iFR1+kU5c641nkFnJ4M8UI3QP6R9iUQpDmNLtUBvQJ2Wtm9k79IAkA+Wvpj1EiFdzZqdpXXjW8nyWix/PMeNqAD7NBgKpKEiQ0DZMtCVPSsQ0ImZZCHN3wYPar05OTj9cVC6RKogtR9FHqlZLikt78JQXcrl5neUCHjQLWNYOXsLQbzLissNJLt5yViF2a/prbR2Jbjg4seYc4qxb3IQDqeH/2lV0VSJZrcbpC3kL3jQdIVe/jhK5UU3m5KH9e4HTWlNS9S7sP/FTP3f6PLwWVEpnyaR8JS1RQIBFQUD6vCQMTVqiYirZ+3LvKBYepRwBGrNF8yhEzC5DpFml/fpHnsSFogNXOGhqZtEUCJFI1xlfAQNsPL7bXr5Pbmio5AFpnqrNL7yD4FfBd4/5KGY/lHi
SECRET_KEY: AgBALDiQZIzoLufpAjYDaw2Ki3x4TAep0q0zQmLnhWMpsMerPG6q8f18XWLIYhvQ+oFcsg3RLayornryPIu7+knPmccfXGrJlxipqy2n17nh5k6dXg29LNxjWdS8MhechiN65mI1IqpV2cMTHjOUuv1YsT4x/a66biRXASjj8baDzs9EIeEv/2XfWbYk3xCVsOEdfaBomR5oByY5d9LHABzPllZxWxDvlaSm7+AkJsVaOywZHRp0tQNONGT1NCUMGvd5eFSzY3pmV5Xdv8/UFQaxDhC4ffiLXCtI/5cWctpq1/ez9yDThH0l+7bsimkKax6hpHJIwNPuSjluJ33HfvmeR3+59fjWRyP4l2JjCW+mWJEpjOWaCm0lpJLdXAWPCp+GVH+5D5RbYbYbTsgOssYxFgfPtTu77YSHc3CFv7E5BG/0MCVd2OcmEc8fMYWma38oi6FDToTRcJk07p809DJmLfJAOb9m3haSeWDNS/YpKCfQZtWbHO6oF8RYlkBjVy0YleE+nhJWXkiuKp6rF0TLvvk/Nb9u5O1bfpATaPQfqbsMVTpAVJvM+qZFisuzsK6phcXTezhbwzwmptFGyFyaqEUwYSMKLT0dMGlAU7tImmeCvs2/OJuUjCEVQZirO5HTSQYjUD/1t9FwuRXdfG0hcaQwgYl32Eo5Y28Q+A9ZOpeNbFW5H7/X3Kgre5T18NvYdB3Adm1gRd+Gios4d90XGk8MD0hhSbau93/KCNeBAyXPzuVUTDQ+T7nWQLkX3zhr7Q==
template:
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

View File

@@ -0,0 +1,24 @@
---
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
annotations:
sealedsecrets.bitnami.com/cluster-wide: "true"
creationTimestamp: null
name: plane-doc-store-secrets
namespace: plane
spec:
encryptedData:
AWS_ACCESS_KEY_ID: AgBStbhakP/fEmALklALSl+uKJbEPBFvELNDvpEmx91k0OBikgvKRPgwNy5kTYAFFHeUt7U3V6Uo8S8OkTtlxSeBD6DKmtdHJwMU0VGbRnOpK48Ju5GLfIGdpMPhQ9djdA8XY4lezkbpiJBaHwu274vYi4eD1kAl21RS73FfpL52Xu8VCgap5X9VG4E1M5BF4B5/EBTqZaIgSjYwNk1nsCc3Qva39DiLEHluHnHR0ByMohjpHv2hbXYy6x9ECezNL1MUzT77PDEfVQs04o0RNS6pLG9tggl6hzzlvHlDA0MsknkGa1Iboi0RPGjFAk0O9yEhrbzqDSQEVn5KqEuglErduF0SB73I5B9lvRQ4ORWzrPKkDhgAqERo0LJY5FmaIFholiMd6k1EeDgX9l8hYtm0rddMlTb8cxjfivrSYwg99auv1S751Hwa0U9HKE7eb0ZVwGm1kAnA/Y2Ki/JeYLaplExMwyYwlacv5oZx+7wsvEFMCaSDP9O0M/Qu248Pc7rslsCtAA79amIhXoTzIwcrwcFE0KOnYFd0Rx7hNb3NJ3IHVwGIxiYZZgWlvKftDVH8MrZW3/+iWixJpy8dN2agZPp9zLzOSuvKm2c7SAcNtAvcJpIjA0FP1NwolPuwczSux3SRhuXDo/HgiD0h+M5hNlGnKM6b7THq6y1vRh2XUDyOT7Tcj3hCN3b0x9scnUQC8p+z3wHf14HFh7GQdWj2mKkn8g==
AWS_SECRET_ACCESS_KEY: AgAsW6ipYue6DmLH4aZsyvoKnD2JdLnsk/vvemycoK8Y1RwVPQLX6vcvG0F020814qingItLqpevzFj5hsd9uRLN0bYAxU1xlVLGV3ySt3lA/88twkBXMFwWi7B+HP9VxHLGD6pe7jlDLdxf9tUIV9pBOLJVr+nfXxzIuWO59rMQBOf6HA9wRtTqeWixdi3gyDUksXx+N7v2OPSuHYQ9gh/SfOyLyI0mavGLWWkzL5VdyUup99clWCCDJaLoFCXuWLj95uh6JGCQBBuyEBnz/y1/7wLPchcJnXsxU6oWFDXW9HwWgtikT94iTDqkvnEthIwlr55xIQbmDk6NaGXgK9taUzuPsx9DzP4AHSyMvlo7uP8Z74XdV0ctfLLZmtG/kUSQLrqEYDAjzUZyZBHMdS+qzp5hwxpIdDLiX54J9KZ7XOEuxvbyUPTMLrUu45VCni+MVPNzWj2bFKLonvFkxjup2cD8zJYyi+kb+6ANvy4umN64zVN6zPoAFvi0HTxq/Oqakkzu3iLlORscIhkFkplRXFWj6QIlKfMcsdxYPyHrCeuhBsPcXKveHkv/aRNDwbJvl4kCRYmqii1Yq6gClGKhbxCmvZQw8XR1LP5nUIBfpWiuaObY3qEW2e5/ac+H0YyUGp7DlGSvx650SNcMYgKLpqSjAlOb+YdUidKythJaEgwURvekU7hFpjhE4bA4X8KfqR1gaBP6wqRjFEMI+picWDvGUlxF/tt+/CEv5Qjol84cDkGqejMW
MINIO_ROOT_PASSWORD: AgCGsjeZalomydWLfqfYyrgQpQafjIZYh3TdxITYboyy3T/c6qMFHIo/TDR2ifHJsGYKUrmffoAb8zu/QxvR4lX61M3E3TYxA5Lsd4/y0rJ0ckQjQvBv8bA8hpQ0vtlpkvcH3yrYGfrSOZzrzZV3OlAlqb/wp8T3MX9UCBeiVJZBQQwA3dEG5xWXsGqmm52Ezg2plmzNDyZ9R7c18zGHNzXFaAW58Gbo5RxBSijUoEFs7v5jy8ZD7LiHbGCtSE9Gsmr+yW93LNh+09x+4PpC74qJFNyDQC7lir0MbvdyXZm83wONuWWB/gZmfASqR6VgT7ZATDO/cTgmSBJ3+zoDqu6qo8aOyt/P/7DlKQw6iEy8WKVCXKTzhiydpmC3bZkQSd/fhnL6Fxw9Ei/bZsQ5+2oUbHpPC4arctUszy2/+x3IRZLJrL9MsnFL0bBGRgBUL4AVcGTCTUQCt7ZlPROFVxwvvYtCDJEQzI4akenqES4wxlOYVUGKOKnEoS8UQ4RwnCzlxSh8nlY0srQnazLOGppg2YEHpvjaDOySVpUJ3pxXdy7W9zJYYJPhVDO26IchbgtRSl4/sHbsk+5ZD9aPRXf4DqA9ZB9Bzavr07zQxFSZwZxjG/Fgt4ww+8WS92XzLGf3AYzMROnaYYArjoHNDmd7iPqk0CIz3GXtURYQN2VU6rAW2rcHLOSm3mF2dXQXwsWrrItlGno5ME9jxnKP/nYO+C9KYA==
template:
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

View File

@@ -0,0 +1,9 @@
apiVersion: v1
kind: Namespace
metadata:
annotations:
argocd.argoproj.io/sync-options: Prune=false
creationTimestamp: null
name: plane
spec: {}
status: {}