Skip to content

Commit 7fd6a12

Browse files
authored
feat: outline dev instance (#1665)
1 parent 5860b11 commit 7fd6a12

12 files changed

Lines changed: 322 additions & 0 deletions

File tree

kubernetes/apps/tools/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ resources:
77
- ./discord-bot/ks.yaml
88
- ./containerssh/ks.yaml
99
- ./outline/ks.yaml
10+
- ./outline-dev/ks.yaml
1011
- ./outline-role-sync/ks.yaml
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: postgresql.cnpg.io/v1
2+
kind: Cluster
3+
metadata:
4+
name: outline-dev-db
5+
namespace: outline-dev
6+
spec:
7+
storage:
8+
size: 10Gi
9+
storageClass: zfs
10+
bootstrap:
11+
recovery:
12+
source: outline-db
13+
externalClusters:
14+
- name: outline-db
15+
barmanObjectStore:
16+
serverName: outline-db
17+
destinationPath: s3://${bucket_name}
18+
endpointURL: ${api_endpoint}
19+
wal:
20+
compression: bzip2
21+
s3Credentials:
22+
accessKeyId:
23+
name: outline-database-backup-secret
24+
key: id
25+
secretAccessKey:
26+
name: outline-database-backup-secret
27+
key: secret
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
---
2+
apiVersion: helm.toolkit.fluxcd.io/v2
3+
kind: HelmRelease
4+
metadata:
5+
name: outline-dev
6+
namespace: outline-dev
7+
spec:
8+
interval: 30m
9+
chart:
10+
spec:
11+
chart: app-template
12+
version: 3.5.0
13+
sourceRef:
14+
kind: HelmRepository
15+
name: bjw-s
16+
namespace: flux-system
17+
maxHistory: 2
18+
install:
19+
remediation:
20+
retries: 3
21+
upgrade:
22+
cleanupOnFail: true
23+
remediation:
24+
strategy: rollback
25+
retries: 3
26+
values:
27+
controllers:
28+
outline:
29+
containers:
30+
app:
31+
image:
32+
repository: docker.io/outlinewiki/outline
33+
tag: 1.7.1@sha256:361df7040e6f0d7abac768b99f40122197921626a7e69501aabb5fcb496fc1b4
34+
env:
35+
#ref https://github.com/outline/outline/blob/d3c8224839f09fbff601e4a3e7fd8ff1a6b2ba08/.env.sample
36+
URL: "https://outline-dev.immich.cloud"
37+
REDIS_URL: "redis://outline-dev-valkey:6379"
38+
ENABLE_UPDATES: false
39+
FILE_STORAGE: local
40+
FILE_STORAGE_LOCAL_ROOT_DIR: /data
41+
FILE_STORAGE_UPLOAD_MAX_SIZE: &upload-limit "26214400"
42+
FILE_STORAGE_IMPORT_MAX_SIZE: *upload-limit
43+
OIDC_SCOPES: "openid profile email"
44+
OIDC_AUTH_URI: "https://auth.internal.futo.org/oauth/v2/authorize"
45+
OIDC_TOKEN_URI: "https://auth.internal.futo.org/oauth/v2/token"
46+
OIDC_USERINFO_URI: "https://auth.internal.futo.org/oidc/v1/userinfo"
47+
WEB_CONCURRENCY: 10
48+
DATABASE_URL:
49+
valueFrom:
50+
secretKeyRef:
51+
name: outline-dev-db-app
52+
key: uri
53+
envFrom:
54+
- secretRef:
55+
name: outline-secret-keys
56+
- secretRef:
57+
name: outline-oauth-client
58+
securityContext:
59+
fsGroup: 1001
60+
valkey:
61+
containers:
62+
app:
63+
image:
64+
repository: valkey/valkey
65+
tag: 9.1.0@sha256:4963247afc4cd33c7d3b2d2816b9f7f8eeebab148d29056c2ca4d7cbc966f2d9
66+
persistence:
67+
data:
68+
enabled: true
69+
existingClaim: outline-dev
70+
advancedMounts:
71+
outline:
72+
app:
73+
- path: /data
74+
service:
75+
app:
76+
controller: outline
77+
ports:
78+
http:
79+
port: 3000
80+
valkey:
81+
controller: valkey
82+
ports:
83+
main:
84+
port: 6379
85+
ingress:
86+
app:
87+
className: nginx
88+
annotations:
89+
cert-manager.io/cluster-issuer: letsencrypt-production
90+
nginx.ingress.kubernetes.io/proxy-body-size: *upload-limit
91+
hosts:
92+
- host: &host "outline-dev.immich.cloud"
93+
paths:
94+
- path: /
95+
service:
96+
identifier: app
97+
port: http
98+
tls:
99+
- hosts:
100+
- *host
101+
secretName: outline-dev-tls
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1beta1
3+
kind: Kustomization
4+
resources:
5+
- ./database.yaml
6+
- ./volsync.yaml
7+
- ./helmrelease.yaml
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
apiVersion: external-secrets.io/v1
3+
kind: ExternalSecret
4+
metadata:
5+
name: outline-dev-volsync-repo
6+
namespace: outline-dev
7+
spec:
8+
secretStoreRef:
9+
kind: ClusterSecretStore
10+
name: 1p-tf
11+
refreshInterval: "20s"
12+
target:
13+
template:
14+
engineVersion: v2
15+
data:
16+
RESTIC_PASSWORD: "{{ .restic_password }}"
17+
RESTIC_REPOSITORY: "s3:{{ .endpoint }}/{{ .bucket_name }}"
18+
AWS_ACCESS_KEY_ID: "{{ .access_key_id }}"
19+
AWS_SECRET_ACCESS_KEY: "{{ .secret_access_key }}"
20+
data:
21+
- secretKey: restic_password
22+
remoteRef:
23+
key: OUTLINE_VOLSYNC_BACKUPS_RESTIC_SECRET
24+
- secretKey: access_key_id
25+
remoteRef:
26+
key: OUTLINE_VOLSYNC_BACKUPS_BUCKET
27+
property: access_key_id
28+
- secretKey: secret_access_key
29+
remoteRef:
30+
key: OUTLINE_VOLSYNC_BACKUPS_BUCKET
31+
property: secret_access_key
32+
- secretKey: bucket_name
33+
remoteRef:
34+
key: OUTLINE_VOLSYNC_BACKUPS_BUCKET
35+
property: bucket_name
36+
- secretKey: endpoint
37+
remoteRef:
38+
key: OUTLINE_VOLSYNC_BACKUPS_BUCKET
39+
property: endpoint
40+
---
41+
# yaml-language-server: $schema=https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/volsync.backube/replicationdestination_v1alpha1.json
42+
apiVersion: volsync.backube/v1alpha1
43+
kind: ReplicationDestination
44+
metadata:
45+
name: outline-dev-bootstrap
46+
namespace: outline-dev
47+
spec:
48+
trigger:
49+
manual: restore-once
50+
restic:
51+
copyMethod: Snapshot
52+
repository: outline-dev-volsync-repo
53+
cacheStorageClassName: zfs
54+
cacheCapacity: 1Gi
55+
storageClassName: zfs
56+
volumeSnapshotClassName: zfs
57+
accessModes:
58+
- ReadWriteOnce
59+
capacity: 20Gi
60+
---
61+
apiVersion: v1
62+
kind: PersistentVolumeClaim
63+
metadata:
64+
name: outline-dev
65+
namespace: outline-dev
66+
spec:
67+
accessModes:
68+
- ReadWriteOnce
69+
dataSourceRef:
70+
kind: ReplicationDestination
71+
apiGroup: volsync.backube
72+
name: outline-dev-bootstrap
73+
resources:
74+
requests:
75+
storage: 20Gi
76+
storageClassName: zfs
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
apiVersion: kustomize.toolkit.fluxcd.io/v1
2+
kind: Kustomization
3+
metadata:
4+
name: &app outline-dev-secrets
5+
namespace: flux-system
6+
spec:
7+
commonMetadata:
8+
labels:
9+
app.kubernetes.io/name: *app
10+
dependsOn:
11+
- name: external-secrets-stores
12+
path: ./kubernetes/apps/tools/outline-dev/secrets
13+
prune: true
14+
sourceRef:
15+
kind: GitRepository
16+
name: immich-kubernetes
17+
wait: true
18+
interval: 30m
19+
retryInterval: 1m
20+
timeout: 5m
21+
---
22+
apiVersion: kustomize.toolkit.fluxcd.io/v1
23+
kind: Kustomization
24+
metadata:
25+
name: &app outline-dev
26+
namespace: flux-system
27+
spec:
28+
targetNamespace: outline-dev
29+
commonMetadata:
30+
labels:
31+
app.kubernetes.io/name: *app
32+
dependsOn:
33+
- name: outline-dev-secrets
34+
path: ./kubernetes/apps/tools/outline-dev/app
35+
prune: true
36+
sourceRef:
37+
kind: GitRepository
38+
name: immich-kubernetes
39+
wait: true
40+
interval: 30m
41+
retryInterval: 1m
42+
timeout: 5m
43+
postBuild:
44+
substituteFrom:
45+
- kind: Secret
46+
name: outline-dev-database-backup-bucket
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: onepassword.com/v1
2+
kind: OnePasswordItem
3+
metadata:
4+
name: outline-dev-database-backup-bucket
5+
namespace: flux-system
6+
spec:
7+
itemPath: "vaults/Kubernetes/items/mich-cloudflare-r2-outline-database-backup-bucket"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: onepassword.com/v1
2+
kind: OnePasswordItem
3+
metadata:
4+
name: outline-database-backup-secret
5+
namespace: outline-dev
6+
labels:
7+
cnpg.io/reload: true
8+
spec:
9+
itemPath: "vaults/Kubernetes/items/mich-cloudflare-r2-token"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
apiVersion: kustomize.config.k8s.io/v1beta1
3+
kind: Kustomization
4+
resources:
5+
- ./namespace.yaml
6+
- ./secret.yaml
7+
- ./oauth.yaml
8+
- ./db-restore-secret.yaml
9+
- ./db-restore-bucket.yaml
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
apiVersion: v1
3+
kind: Namespace
4+
metadata:
5+
name: outline-dev

0 commit comments

Comments
 (0)