deploy outline wiki
This commit is contained in:
22
apps/outline-app.yaml
Normal file
22
apps/outline-app.yaml
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: outline
|
||||||
|
namespace: argocd
|
||||||
|
annotations:
|
||||||
|
argocd.argoproj.io/sync-wave: "5"
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://git.cloud-infra.prod.openmailserver.de/stabify/gitops.git
|
||||||
|
targetRevision: HEAD
|
||||||
|
path: apps/outline
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: outline
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
10
apps/outline/Chart.yaml
Normal file
10
apps/outline/Chart.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: outline-wrapper
|
||||||
|
description: Wrapper chart for Outline Wiki
|
||||||
|
type: application
|
||||||
|
version: 1.0.0
|
||||||
|
appVersion: "1.0.0"
|
||||||
|
dependencies:
|
||||||
|
- name: outline
|
||||||
|
repository: https://runxs-charts.github.io/community-charts
|
||||||
|
version: 0.5.4 # Prüfen ob das die aktuelle stabile Version ist, ich nehme eine gängige.
|
||||||
54
apps/outline/VAULT_SETUP.md
Normal file
54
apps/outline/VAULT_SETUP.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Vault Secrets für Outline anlegen
|
||||||
|
|
||||||
|
Outline benötigt viele Secrets für DB, Redis, S3 und OIDC.
|
||||||
|
Hier sind die Befehle, um diese in Vault anzulegen.
|
||||||
|
|
||||||
|
**Wichtig:** Du musst die Platzhalter (S3 Keys, OIDC Daten) mit deinen echten Daten ersetzen!
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Umgebungsvariablen für Vault setzen
|
||||||
|
export VAULT_ADDR='https://10.100.30.11:8200'
|
||||||
|
export VAULT_TOKEN='DeinRootToken'
|
||||||
|
export VAULT_CACERT='./vault-ca.crt' # Pfad anpassen
|
||||||
|
|
||||||
|
# 1. Passwörter und Keys generieren
|
||||||
|
POSTGRES_PASS=$(openssl rand -hex 16)
|
||||||
|
REDIS_PASS=$(openssl rand -hex 16)
|
||||||
|
SECRET_KEY=$(openssl rand -hex 32)
|
||||||
|
UTILS_SECRET=$(openssl rand -hex 32)
|
||||||
|
|
||||||
|
# 2. Connection Strings bauen (Interner Cluster DNS)
|
||||||
|
# Hostnames basieren auf dem Release Namen 'outline'
|
||||||
|
DB_URL="postgres://postgres:$POSTGRES_PASS@outline-postgresql.outline.svc.cluster.local:5432/outline"
|
||||||
|
REDIS_URL="redis://:$REDIS_PASS@outline-redis-master.outline.svc.cluster.local:6379"
|
||||||
|
|
||||||
|
# 3. Externe Credentials (BITTE ANPASSEN!)
|
||||||
|
# Beispiel für MinIO oder AWS S3
|
||||||
|
AWS_ACCESS_KEY="dein-access-key"
|
||||||
|
AWS_SECRET_KEY="dein-secret-key"
|
||||||
|
|
||||||
|
# Beispiel für Google/OIDC
|
||||||
|
OIDC_CLIENT_ID="deine-client-id"
|
||||||
|
OIDC_CLIENT_SECRET="dein-client-secret"
|
||||||
|
OIDC_AUTH_URI="https://accounts.google.com/o/oauth2/v2/auth"
|
||||||
|
OIDC_TOKEN_URI="https://oauth2.googleapis.com/token"
|
||||||
|
OIDC_USERINFO_URI="https://openidconnect.googleapis.com/v1/userinfo"
|
||||||
|
|
||||||
|
# 4. Alles in Vault schreiben
|
||||||
|
vault kv put secret/apps/outline \
|
||||||
|
secret_key="$SECRET_KEY" \
|
||||||
|
utils_secret="$UTILS_SECRET" \
|
||||||
|
database_url="$DB_URL" \
|
||||||
|
redis_url="$REDIS_URL" \
|
||||||
|
postgres_password="$POSTGRES_PASS" \
|
||||||
|
redis_password="$REDIS_PASS" \
|
||||||
|
aws_access_key_id="$AWS_ACCESS_KEY" \
|
||||||
|
aws_secret_access_key="$AWS_SECRET_KEY" \
|
||||||
|
oidc_client_id="$OIDC_CLIENT_ID" \
|
||||||
|
oidc_client_secret="$OIDC_CLIENT_SECRET" \
|
||||||
|
oidc_auth_uri="$OIDC_AUTH_URI" \
|
||||||
|
oidc_token_uri="$OIDC_TOKEN_URI" \
|
||||||
|
oidc_userinfo_uri="$OIDC_USERINFO_URI"
|
||||||
|
```
|
||||||
|
|
||||||
|
Nachdem du das ausgeführt hast, synchronisiert ArgoCD/ExternalSecrets diese Daten in den Cluster.
|
||||||
83
apps/outline/external-secret.yaml
Normal file
83
apps/outline/external-secret.yaml
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
apiVersion: external-secrets.io/v1beta1
|
||||||
|
kind: ExternalSecret
|
||||||
|
metadata:
|
||||||
|
name: outline-secrets
|
||||||
|
namespace: outline
|
||||||
|
spec:
|
||||||
|
refreshInterval: 1m
|
||||||
|
secretStoreRef:
|
||||||
|
name: vault-backend
|
||||||
|
kind: ClusterSecretStore
|
||||||
|
target:
|
||||||
|
name: outline-secrets
|
||||||
|
creationPolicy: Owner
|
||||||
|
data:
|
||||||
|
# Generelle Outline Secrets
|
||||||
|
- secretKey: SECRET_KEY
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: secret_key
|
||||||
|
- secretKey: UTILS_SECRET
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: utils_secret
|
||||||
|
|
||||||
|
# Datenbank URLs (muss zusammengebaut werden oder direkt in Vault liegen)
|
||||||
|
# Wir bauen die URL im Vault zusammen oder hier?
|
||||||
|
# Outline erwartet DATABASE_URL als kompletten String.
|
||||||
|
# Format: postgres://user:password@host:5432/dbname
|
||||||
|
# Host für internes Postgres: outline-postgresql
|
||||||
|
- secretKey: DATABASE_URL
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: database_url
|
||||||
|
|
||||||
|
# Redis URL
|
||||||
|
# Format: redis://:password@host:6379
|
||||||
|
# Host für internes Redis: outline-redis-master
|
||||||
|
- secretKey: REDIS_URL
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: redis_url
|
||||||
|
|
||||||
|
# Passwörter für die Subcharts (damit die Pods starten können)
|
||||||
|
- secretKey: postgres-password
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: postgres_password
|
||||||
|
- secretKey: redis-password
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: redis_password
|
||||||
|
|
||||||
|
# S3 Storage Credentials
|
||||||
|
- secretKey: AWS_ACCESS_KEY_ID
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: aws_access_key_id
|
||||||
|
- secretKey: AWS_SECRET_ACCESS_KEY
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: aws_secret_access_key
|
||||||
|
|
||||||
|
# OIDC Credentials
|
||||||
|
- secretKey: OIDC_CLIENT_ID
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: oidc_client_id
|
||||||
|
- secretKey: OIDC_CLIENT_SECRET
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: oidc_client_secret
|
||||||
|
- secretKey: OIDC_AUTH_URI
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: oidc_auth_uri
|
||||||
|
- secretKey: OIDC_TOKEN_URI
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: oidc_token_uri
|
||||||
|
- secretKey: OIDC_USERINFO_URI
|
||||||
|
remoteRef:
|
||||||
|
key: secret/apps/outline
|
||||||
|
property: oidc_userinfo_uri
|
||||||
66
apps/outline/values.yaml
Normal file
66
apps/outline/values.yaml
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
outline:
|
||||||
|
image:
|
||||||
|
repository: outlinewiki/outline
|
||||||
|
tag: latest
|
||||||
|
|
||||||
|
# URL Configuration
|
||||||
|
url: https://kb.apps.k3s.stabify.de
|
||||||
|
|
||||||
|
# Secrets (werden via ExternalSecrets injected)
|
||||||
|
secret:
|
||||||
|
existingSecret: "outline-secrets"
|
||||||
|
# Die Keys im Secret müssen matchen:
|
||||||
|
# SECRET_KEY, UTILS_SECRET, DATABASE_URL, REDIS_URL
|
||||||
|
# AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
|
||||||
|
# OIDC_CLIENT_SECRET, etc.
|
||||||
|
|
||||||
|
# Storage (S3) - Diese Werte kommen z.T. aus dem Secret oder hier hardcoded wenn öffentlich
|
||||||
|
storage:
|
||||||
|
storageType: s3
|
||||||
|
s3:
|
||||||
|
bucket: "outline"
|
||||||
|
region: "us-east-1" # Bei MinIO/Cloudflare oft egal, aber nötig
|
||||||
|
# uploadBucketUrl: "https://..." # Optional, falls public access anders ist
|
||||||
|
# endpoint: "https://..." # Muss in Vault oder hier gesetzt werden. Ich setze es hier als Placeholder.
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
auth:
|
||||||
|
oidc:
|
||||||
|
enabled: true
|
||||||
|
displayName: "OIDC Login"
|
||||||
|
# scopes: "openid profile email"
|
||||||
|
|
||||||
|
# PostgreSQL Dependency Configuration
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
auth:
|
||||||
|
existingSecret: "outline-secrets"
|
||||||
|
secretKeys:
|
||||||
|
adminPasswordKey: "postgres-password"
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
primary:
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
size: 8Gi
|
||||||
|
|
||||||
|
# Redis Dependency Configuration
|
||||||
|
redis:
|
||||||
|
enabled: true
|
||||||
|
architecture: standalone
|
||||||
|
auth:
|
||||||
|
existingSecret: "outline-secrets"
|
||||||
|
existingSecretPasswordKey: "redis-password"
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
hosts:
|
||||||
|
- host: kb.apps.k3s.stabify.de
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- secretName: outline-tls
|
||||||
|
hosts:
|
||||||
|
- kb.apps.k3s.stabify.de
|
||||||
Reference in New Issue
Block a user