Compare commits
34
Commits
main
..
f1286e4d0b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1286e4d0b | ||
|
|
f1c46b1e3e | ||
|
|
90723eee70 | ||
|
|
619c112940 | ||
|
|
c9dec7cfe9 | ||
|
|
ee23988850 | ||
|
|
35ffa589c5 | ||
|
|
d5b59a719c | ||
|
|
2685698bfc | ||
|
|
40f5fc1111 | ||
|
|
4d0d5587c2 | ||
|
|
8476121d9a | ||
|
|
e9c327c51d | ||
|
|
d1eac83176 | ||
|
|
b8e8a6820b | ||
|
|
0dd2d4e52c | ||
|
|
842ff7b605 | ||
|
|
b2fe500df3 | ||
|
|
4771f2b177 | ||
|
|
885c22b46c | ||
|
|
dc1de99c7a | ||
|
|
2f76274b36 | ||
|
|
9971e90531 | ||
|
|
dc87a2c742 | ||
|
|
4e42ee28aa | ||
|
|
88a80c08b9 | ||
|
|
1ab30a98d7 | ||
|
|
6c6c88a16a | ||
|
|
9436ed134a | ||
|
|
5f4674938d | ||
|
|
bacc31dcdb | ||
|
|
92c8ab9cc9 | ||
|
|
8931194870 | ||
|
|
3465f139d1 |
@@ -6,53 +6,52 @@ All applications are managed using GitOps principles with ArgoCD and utilize cer
|
|||||||
|
|
||||||
## Repository Structure
|
## Repository Structure
|
||||||
|
|
||||||
The repository is split into three top-level areas. Within each, there is one directory per application/component, and every manifest follows the `<app>-<kind>.yaml` naming convention.
|
The repository is organized with one directory per application, containing all necessary Kubernetes resources:
|
||||||
|
|
||||||
```
|
```
|
||||||
├── infra/ # Cluster infrastructure
|
├── argocd/ # GitOps continuous deployment
|
||||||
│ ├── argocd/ # GitOps continuous deployment
|
├── cert-manager/ # TLS certificate management
|
||||||
│ ├── cert-manager/ # TLS certificate management
|
├── metallb/ # Load balancer
|
||||||
│ ├── cloud-native-postgres/ # PostgreSQL operator
|
├── kubevip/ # High availability
|
||||||
│ ├── envoy-gateway/ # Kubernetes Gateway API configuration
|
├── longhorn/ # Distributed storage
|
||||||
│ ├── kubevip/ # High availability
|
├── cloud-native-postgres/ # PostgreSQL operator
|
||||||
│ ├── longhorn/ # Distributed storage
|
├── envoy-gateway/ # Kubernetes Gateway API configuration
|
||||||
│ └── metallb/ # Load balancer
|
├── infisical/ # Secrets management
|
||||||
│
|
├── authentik/ # Identity provider and SSO
|
||||||
├── applications/ # Deployed workloads
|
├── it-tools/ # IT utilities
|
||||||
│ ├── authentik/ # Identity provider and SSO
|
├── jellyfin/ # Media server
|
||||||
│ ├── azure-ddns-python/ # Dynamic DNS updater
|
├── immich/ # Photo and video management
|
||||||
│ ├── bentopdf/ # PDF conversion
|
├── minecraft/ # Game servers
|
||||||
│ ├── comfyui/ # Stable Diffusion workflow UI
|
├── gitea/ # Git service
|
||||||
│ ├── databasus/ # Database management
|
├── jenkins/ # CI/CD automation
|
||||||
│ ├── excalidraw/ # Whiteboard / diagramming
|
├── n8n/ # Workflow automation
|
||||||
│ ├── gitea/ # Git service
|
├── react-resume/ # Resume builder application
|
||||||
│ ├── gotify/ # Push notification server
|
├── passbolt/ # Password manager
|
||||||
│ ├── immich/ # Photo and video management
|
├── wikijs/ # Documentation wiki
|
||||||
│ ├── infisical/ # Secrets management
|
├── zipline/ # File sharing
|
||||||
│ ├── it-tools/ # IT utilities
|
├── gotify/ # Push notification server
|
||||||
│ ├── jellyfin/ # Media server
|
├── ntfy/ # Push notifications
|
||||||
│ ├── minecraft/ # Game servers
|
├── bentopdf/ # PDF conversion
|
||||||
│ ├── minio-aistor/ # S3-compatible object storage
|
├── excalidraw/ # Whiteboard / diagramming
|
||||||
│ ├── n8n/ # Workflow automation
|
├── searxng/ # Privacy-respecting search engine
|
||||||
│ ├── netbootxyz/ # Network boot service
|
├── uptime-kuma/ # Uptime monitoring
|
||||||
│ ├── netbox/ # IPAM and DCIM source of truth
|
├── openwebui/ # Web UI for AI models
|
||||||
│ ├── ollama/ # Local LLM runner
|
├── ollama/ # Local LLM runner
|
||||||
│ ├── openwebui/ # Web UI for AI models
|
├── comfyui/ # Stable Diffusion workflow UI
|
||||||
│ ├── outline/ # Knowledge base / wiki
|
├── minio-aistor/ # S3-compatible object storage
|
||||||
│ ├── passbolt/ # Password manager
|
├── databasus/ # Database management
|
||||||
│ ├── pelican/ # Game server management panel
|
├── netbootxyz/ # Network boot service
|
||||||
│ ├── proxmox/ # Virtualization platform
|
├── technitium/ # DNS server
|
||||||
│ ├── react-resume/ # Resume builder application
|
├── azure-ddns-python/ # Dynamic DNS updater
|
||||||
│ ├── searxng/ # Privacy-respecting search engine
|
├── victoria-metrics/ # Metrics and monitoring
|
||||||
│ ├── technitium/ # DNS server
|
├── affine/ # Self-hosted collaborative workspace
|
||||||
│ ├── truenas/ # Storage system
|
├── harbor/ # Container image registry
|
||||||
│ ├── unifi/ # Network controller
|
├── pelican/ # Game server management panel
|
||||||
│ ├── uptime-kuma/ # Uptime monitoring
|
├── stable-diffusion/ # Stable Diffusion image generation
|
||||||
│ ├── victoria-metrics/ # Metrics and monitoring
|
├── proxmox/ # Virtualization platform
|
||||||
│ ├── wikijs/ # Documentation wiki
|
├── unifi/ # Network controller
|
||||||
│ └── zipline/ # File sharing
|
├── truenas/ # Storage system
|
||||||
│
|
└── deprecated/ # Deprecated applications
|
||||||
└── deprecated/ # Deprecated applications
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Categories
|
## Categories
|
||||||
@@ -80,11 +79,13 @@ The repository is split into three top-level areas. Within each, there is one di
|
|||||||
- **Stable Diffusion**: Image generation service
|
- **Stable Diffusion**: Image generation service
|
||||||
|
|
||||||
### Self-Hosted Tools
|
### Self-Hosted Tools
|
||||||
|
- **AFFiNE**: Collaborative workspace and note-taking platform
|
||||||
- **Harbor**: Container image registry
|
- **Harbor**: Container image registry
|
||||||
- **Pelican**: Game server management panel
|
- **Pelican**: Game server management panel
|
||||||
|
|
||||||
### Development & CI/CD
|
### Development & CI/CD
|
||||||
- **Gitea**: Self-hosted Git service with container registry
|
- **Gitea**: Self-hosted Git service with container registry
|
||||||
|
- **Jenkins**: Automation server for CI/CD pipelines
|
||||||
- **n8n**: Workflow automation platform
|
- **n8n**: Workflow automation platform
|
||||||
- **MinIO AIStor**: S3-compatible object storage
|
- **MinIO AIStor**: S3-compatible object storage
|
||||||
|
|
||||||
@@ -92,9 +93,9 @@ The repository is split into three top-level areas. Within each, there is one di
|
|||||||
- **React-Resume**: Resume builder with MinIO and PostgreSQL
|
- **React-Resume**: Resume builder with MinIO and PostgreSQL
|
||||||
- **Passbolt**: Team password manager
|
- **Passbolt**: Team password manager
|
||||||
- **Wiki.js**: Modern documentation platform
|
- **Wiki.js**: Modern documentation platform
|
||||||
- **Outline**: Team knowledge base and wiki (PostgreSQL, Redis/Valkey, MinIO S3, Authentik SSO)
|
|
||||||
- **Zipline**: File sharing and screenshot service
|
- **Zipline**: File sharing and screenshot service
|
||||||
- **Gotify**: Push notification server with REST API and WebSocket support
|
- **Gotify**: Push notification server with REST API and WebSocket support
|
||||||
|
- **Ntfy**: Push notification service
|
||||||
- **BentoPDF**: PDF conversion service
|
- **BentoPDF**: PDF conversion service
|
||||||
- **Excalidraw**: Online whiteboard and diagramming tool
|
- **Excalidraw**: Online whiteboard and diagramming tool
|
||||||
- **SearXNG**: Privacy-respecting metasearch engine
|
- **SearXNG**: Privacy-respecting metasearch engine
|
||||||
@@ -106,7 +107,6 @@ The repository is split into three top-level areas. Within each, there is one di
|
|||||||
- **Technitium**: DNS server with web interface
|
- **Technitium**: DNS server with web interface
|
||||||
- **Azure DDNS Python**: Dynamic DNS updater for Azure DNS
|
- **Azure DDNS Python**: Dynamic DNS updater for Azure DNS
|
||||||
- **NetbootXYZ**: Network boot service for OS installation
|
- **NetbootXYZ**: Network boot service for OS installation
|
||||||
- **NetBox**: IPAM and DCIM source of truth for the network
|
|
||||||
- **VictoriaMetrics**: Metrics collection and monitoring stack
|
- **VictoriaMetrics**: Metrics collection and monitoring stack
|
||||||
|
|
||||||
### External Service Integration
|
### External Service Integration
|
||||||
@@ -118,9 +118,6 @@ The repository is split into three top-level areas. Within each, there is one di
|
|||||||
- **Nginx Ingress Controller**: Replaced by Envoy Gateway; dropped after upstream support ended in March 2025
|
- **Nginx Ingress Controller**: Replaced by Envoy Gateway; dropped after upstream support ended in March 2025
|
||||||
- **Psono**: Self-hosted password manager; replaced by Passbolt
|
- **Psono**: Self-hosted password manager; replaced by Passbolt
|
||||||
- **Vaultwarden**: Self-hosted Bitwarden server; no longer in use
|
- **Vaultwarden**: Self-hosted Bitwarden server; no longer in use
|
||||||
- **AFFiNE**: Collaborative workspace and note-taking platform; no longer in use
|
|
||||||
- **Jenkins**: CI/CD automation server; no longer in use
|
|
||||||
- **Ntfy**: Push notification service; no longer in use
|
|
||||||
|
|
||||||
## Infrastructure
|
## Infrastructure
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: authentik
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: authentik-ldap
|
|
||||||
namespace: authentik
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: authentik-ldap
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: authentik-ldap
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: ldap
|
|
||||||
image: ghcr.io/goauthentik/ldap:2026.8.0
|
|
||||||
ports:
|
|
||||||
- containerPort: 3389
|
|
||||||
name: ldap
|
|
||||||
- containerPort: 6636
|
|
||||||
name: ldaps
|
|
||||||
- containerPort: 9300
|
|
||||||
name: metrics
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: authentik-ldap-secrets
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /outpost.goauthentik.io/ping
|
|
||||||
port: 9300
|
|
||||||
initialDelaySeconds: 10
|
|
||||||
periodSeconds: 30
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /outpost.goauthentik.io/ping
|
|
||||||
port: 9300
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 10
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 128Mi
|
|
||||||
limits:
|
|
||||||
memory: 256Mi
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: authentik-ldap-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/authentik/authentik-ldap"
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: authentik-ldap-secrets
|
|
||||||
secretNamespace: authentik
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: authentik-ldap
|
|
||||||
namespace: authentik
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: authentik-ldap
|
|
||||||
ports:
|
|
||||||
- name: ldap
|
|
||||||
port: 3389
|
|
||||||
targetPort: 3389
|
|
||||||
- name: metrics
|
|
||||||
port: 9300
|
|
||||||
targetPort: 9300
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: gateway.networking.k8s.io/v1alpha2
|
|
||||||
kind: TCPRoute
|
|
||||||
metadata:
|
|
||||||
name: authentik-ldap
|
|
||||||
namespace: authentik
|
|
||||||
spec:
|
|
||||||
parentRefs:
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: gateway-internal
|
|
||||||
namespace: envoy-gateway
|
|
||||||
sectionName: authentik-ldap
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: gateway-internal
|
|
||||||
namespace: envoy-gateway
|
|
||||||
sectionName: authentik-ldaps
|
|
||||||
rules:
|
|
||||||
# The gateway terminates TLS on 636, so both listeners hit the plaintext port
|
|
||||||
- backendRefs:
|
|
||||||
- name: authentik-ldap
|
|
||||||
port: 3389
|
|
||||||
kind: Service
|
|
||||||
group: ""
|
|
||||||
weight: 1
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: authentik-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/authentik/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: authentik-postgres-secrets
|
|
||||||
secretNamespace: authentik
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: authentik-server
|
|
||||||
namespace: authentik
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: authentik-server
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: authentik-server
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: authentik
|
|
||||||
image: ghcr.io/goauthentik/server:2026.8.0
|
|
||||||
command: ["ak"]
|
|
||||||
args: ["server"]
|
|
||||||
ports:
|
|
||||||
- containerPort: 9000
|
|
||||||
name: http
|
|
||||||
- containerPort: 9443
|
|
||||||
name: https
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: authentik-app-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /data
|
|
||||||
- name: templates
|
|
||||||
mountPath: /templates
|
|
||||||
- name: dshm
|
|
||||||
mountPath: /dev/shm
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 256Mi
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
volumes:
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: authentik-server-data
|
|
||||||
- name: templates
|
|
||||||
emptyDir: {}
|
|
||||||
- name: dshm
|
|
||||||
emptyDir:
|
|
||||||
medium: Memory
|
|
||||||
sizeLimit: 512Mi
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: authentik-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/authentik/authentik"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: authentik-app-secrets
|
|
||||||
secretNamespace: authentik
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: authentik-worker
|
|
||||||
namespace: authentik
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: authentik-worker
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: authentik-worker
|
|
||||||
spec:
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 0
|
|
||||||
containers:
|
|
||||||
- name: authentik
|
|
||||||
image: ghcr.io/goauthentik/server:2026.8.0
|
|
||||||
command: ["ak"]
|
|
||||||
args: ["worker"]
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: authentik-app-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /data
|
|
||||||
- name: certs
|
|
||||||
mountPath: /certs
|
|
||||||
- name: templates
|
|
||||||
mountPath: /templates
|
|
||||||
- name: dshm
|
|
||||||
mountPath: /dev/shm
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 256Mi
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
volumes:
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: authentik-worker-data
|
|
||||||
- name: templates
|
|
||||||
emptyDir: {}
|
|
||||||
- name: certs
|
|
||||||
emptyDir: {}
|
|
||||||
- name: dshm
|
|
||||||
emptyDir:
|
|
||||||
medium: Memory
|
|
||||||
sizeLimit: 512Mi
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: azure-ddns
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
apiVersion: batch/v1
|
|
||||||
kind: CronJob
|
|
||||||
metadata:
|
|
||||||
name: azure-ddns
|
|
||||||
namespace: azure-ddns
|
|
||||||
spec:
|
|
||||||
schedule: "*/30 * * * *"
|
|
||||||
concurrencyPolicy: Forbid
|
|
||||||
successfulJobsHistoryLimit: 3
|
|
||||||
failedJobsHistoryLimit: 3
|
|
||||||
startingDeadlineSeconds: 300
|
|
||||||
jobTemplate:
|
|
||||||
spec:
|
|
||||||
backoffLimit: 3
|
|
||||||
template:
|
|
||||||
spec:
|
|
||||||
restartPolicy: OnFailure
|
|
||||||
containers:
|
|
||||||
- name: azure-ddns
|
|
||||||
image: gitea.jsme.be/jeffrey/azure-ddns-python:1.2
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 128Mi
|
|
||||||
limits:
|
|
||||||
cpu: 200m
|
|
||||||
memory: 256Mi
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: azure-ddns-app-secrets
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: azure-ddns-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/azure-ddns/azure-ddns"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: azure-ddns-app-secrets
|
|
||||||
secretNamespace: azure-ddns
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: bentopdf
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: excalidraw
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: gitea
|
|
||||||
namespace: gitea
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: gitea
|
|
||||||
serviceName: gitea
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: gitea
|
|
||||||
spec:
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
containers:
|
|
||||||
- name: gitea
|
|
||||||
image: docker.gitea.com/gitea:1.27.2
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 200m
|
|
||||||
memory: 512Mi
|
|
||||||
limits:
|
|
||||||
cpu: 1000m
|
|
||||||
memory: 1Gi
|
|
||||||
ports:
|
|
||||||
- containerPort: 3000
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /data
|
|
||||||
subPath: Gitea
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: gitea-app-secrets
|
|
||||||
restartPolicy: Always
|
|
||||||
volumes:
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: gitea-pvc
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: gitea-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/gitea/gitea"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: gitea-app-secrets
|
|
||||||
secretNamespace: gitea
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: gitea-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/gitea/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: gitea-postgres-secrets
|
|
||||||
secretNamespace: gitea
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: gotify
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: gotify-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/gotify/gotify"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: gotify-app-secrets
|
|
||||||
secretNamespace: gotify
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: gotify
|
|
||||||
namespace: gotify
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: gotify
|
|
||||||
serviceName: gotify
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: gotify
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 10
|
|
||||||
containers:
|
|
||||||
- name: gotify
|
|
||||||
image: gotify/server:3.0.0
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 128Mi
|
|
||||||
limits:
|
|
||||||
cpu: 200m
|
|
||||||
memory: 256Mi
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
name: http
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: gotify-app-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /app/data
|
|
||||||
volumes:
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: gotify-data-pvc
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: gotify-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/gotify/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: gotify-postgres-secrets
|
|
||||||
secretNamespace: gotify
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: immich
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
namespace: immich
|
|
||||||
name: immich
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: immich
|
|
||||||
serviceName: immich
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: immich
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
containers:
|
|
||||||
- name: immich
|
|
||||||
image: ghcr.io/immich-app/immich-server:v3.1.0
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "250m"
|
|
||||||
limits:
|
|
||||||
memory: "2Gi"
|
|
||||||
cpu: "2000m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 2283
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: immich-app-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: photos
|
|
||||||
mountPath: /data
|
|
||||||
volumes:
|
|
||||||
- name: photos
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: immich-pvc
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: immich-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/immich/immich"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: immich-app-secrets
|
|
||||||
secretNamespace: immich
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: immich-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/immich/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: immich-postgres-secrets
|
|
||||||
secretNamespace: immich
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: crowdsec-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/crowdsec"
|
|
||||||
recursive: true
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: crowdsec-secrets
|
|
||||||
secretNamespace: crowdsec
|
|
||||||
secretType: Opaque
|
|
||||||
# NOTE: add a secret "bouncer-key" (a long random string, e.g. `openssl rand -hex 32`)
|
|
||||||
# under kubernetes / prod / /crowdsec in Infisical. It is shared by:
|
|
||||||
# - CrowdSec LAPI (pre-registers the "envoy" bouncer via BOUNCER_KEY_envoy)
|
|
||||||
# - the kdwils envoy bouncer (authenticates to LAPI + AppSec)
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: infisical-backend
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: infisical-backend
|
|
||||||
strategy:
|
|
||||||
type: RollingUpdate
|
|
||||||
rollingUpdate:
|
|
||||||
maxUnavailable: 0
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: infisical-backend
|
|
||||||
spec:
|
|
||||||
# The backend runs DB migrations on startup, so wait for Postgres to be ready.
|
|
||||||
initContainers:
|
|
||||||
- name: wait-for-db
|
|
||||||
image: postgres:14-alpine
|
|
||||||
command:
|
|
||||||
- sh
|
|
||||||
- -c
|
|
||||||
- "until pg_isready -h infisical-postgres -p 5432 -U $POSTGRES_USER; do echo waiting for db; sleep 2; done"
|
|
||||||
env:
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: infisical-secrets
|
|
||||||
key: POSTGRES_USER
|
|
||||||
containers:
|
|
||||||
- name: backend
|
|
||||||
image: infisical/infisical:v0.162.6 # pinned — bump deliberately
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
# ENCRYPTION_KEY, AUTH_SECRET, DB_CONNECTION_URI, REDIS_URL (+ POSTGRES_* — ignored) come from the Secret
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: infisical-secrets
|
|
||||||
env:
|
|
||||||
- name: NODE_ENV
|
|
||||||
value: production
|
|
||||||
- name: SITE_URL
|
|
||||||
value: https://infisical.jsme.be
|
|
||||||
- name: OTEL_TELEMETRY_COLLECTION_ENABLED
|
|
||||||
value: "false"
|
|
||||||
# Allow Core to reach the in-cluster Kubernetes API (kubernetes.default.svc,
|
|
||||||
# a private ClusterIP) for Kubernetes Auth token review. Off by default (SSRF guard).
|
|
||||||
- name: ALLOW_INTERNAL_IP_CONNECTIONS
|
|
||||||
value: "true"
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /api/status
|
|
||||||
port: 8080
|
|
||||||
initialDelaySeconds: 20
|
|
||||||
periodSeconds: 10
|
|
||||||
failureThreshold: 12
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /api/status
|
|
||||||
port: 8080
|
|
||||||
initialDelaySeconds: 60
|
|
||||||
periodSeconds: 20
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 250m
|
|
||||||
memory: 512Mi
|
|
||||||
limits:
|
|
||||||
memory: 1Gi
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: infisical-backend
|
|
||||||
namespace: infisical
|
|
||||||
labels:
|
|
||||||
app: infisical-backend
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: infisical-backend
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
port: 8080
|
|
||||||
targetPort: 8080
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: infisical
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: infisical-postgres
|
|
||||||
namespace: infisical
|
|
||||||
labels:
|
|
||||||
app: infisical-postgres
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: infisical-postgres
|
|
||||||
ports:
|
|
||||||
- name: postgres
|
|
||||||
port: 5432
|
|
||||||
targetPort: 5432
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: infisical-postgres
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
serviceName: infisical-postgres
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: infisical-postgres
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: infisical-postgres
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: postgres
|
|
||||||
image: postgres:14-alpine
|
|
||||||
ports:
|
|
||||||
- containerPort: 5432
|
|
||||||
env:
|
|
||||||
# Keep data in a subdir so an RWO volume's lost+found doesn't block initdb
|
|
||||||
- name: PGDATA
|
|
||||||
value: /var/lib/postgresql/data/pgdata
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: infisical-secrets
|
|
||||||
key: POSTGRES_USER
|
|
||||||
- name: POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: infisical-secrets
|
|
||||||
key: POSTGRES_PASSWORD
|
|
||||||
- name: POSTGRES_DB
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: infisical-secrets
|
|
||||||
key: POSTGRES_DB
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /var/lib/postgresql/data
|
|
||||||
readinessProbe:
|
|
||||||
exec:
|
|
||||||
command: ["sh", "-c", "pg_isready -U $POSTGRES_USER -d $POSTGRES_DB"]
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 5
|
|
||||||
timeoutSeconds: 10
|
|
||||||
failureThreshold: 10
|
|
||||||
livenessProbe:
|
|
||||||
exec:
|
|
||||||
command: ["sh", "-c", "pg_isready -U $POSTGRES_USER -d $POSTGRES_DB"]
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
periodSeconds: 15
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 256Mi
|
|
||||||
limits:
|
|
||||||
memory: 512Mi
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- metadata:
|
|
||||||
name: data
|
|
||||||
spec:
|
|
||||||
accessModes: ["ReadWriteOnce"]
|
|
||||||
storageClassName: longhorn
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 8Gi
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# ⚠️ BOOTSTRAP SECRETS — do NOT commit this file to Git in plaintext.
|
|
||||||
# Infisical can't manage its own bootstrap secrets (chicken/egg), so these live
|
|
||||||
# in a plain Secret. Manage via SOPS/sealed-secrets or `kubectl create secret`
|
|
||||||
# out-of-band. Values below were randomly generated for you.
|
|
||||||
#
|
|
||||||
# ENCRYPTION_KEY : openssl rand -hex 16
|
|
||||||
# AUTH_SECRET : openssl rand -base64 32
|
|
||||||
#
|
|
||||||
# DB_CONNECTION_URI password MUST match POSTGRES_PASSWORD.
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: infisical-secrets
|
|
||||||
namespace: infisical
|
|
||||||
type: Opaque
|
|
||||||
stringData:
|
|
||||||
ENCRYPTION_KEY: ""
|
|
||||||
AUTH_SECRET: ""
|
|
||||||
POSTGRES_USER: ""
|
|
||||||
POSTGRES_PASSWORD: ""
|
|
||||||
POSTGRES_DB: ""
|
|
||||||
DB_CONNECTION_URI: ""
|
|
||||||
REDIS_URL: ""
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
# Kubernetes-native auth for the InfisicalSecret operator.
|
|
||||||
# infisical-auth: the identity the CRDs mint short-lived tokens for.
|
|
||||||
# infisical-token-reviewer: its JWT is pasted into Infisical's Kubernetes Auth
|
|
||||||
# config so Infisical can call TokenReview. Bound to system:auth-delegator below.
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ServiceAccount
|
|
||||||
metadata:
|
|
||||||
name: infisical-token-reviewer
|
|
||||||
namespace: infisical
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: infisical-token-reviewer
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: system:auth-delegator
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: infisical-token-reviewer
|
|
||||||
namespace: infisical
|
|
||||||
---
|
|
||||||
# The operator needs to mint tokens for infisical-auth; without this it falls
|
|
||||||
# back to the legacy SA .secrets[] lookup and never gets a token.
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: infisical-operator-token-creator
|
|
||||||
rules:
|
|
||||||
- apiGroups: [""]
|
|
||||||
resources: ["serviceaccounts/token"]
|
|
||||||
verbs: ["create"]
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: infisical-operator-token-creator
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: infisical-operator-token-creator
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
name: infisical-opera-controller-manager
|
|
||||||
namespace: infisical-operator
|
|
||||||
---
|
|
||||||
# Long-lived token for the reviewer SA. `kubectl create token` expires; the
|
|
||||||
# value pasted into Infisical's Kubernetes Auth config must not.
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: infisical-token-reviewer
|
|
||||||
namespace: infisical
|
|
||||||
annotations:
|
|
||||||
kubernetes.io/service-account.name: infisical-token-reviewer
|
|
||||||
type: kubernetes.io/service-account-token
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: infisical-valkey
|
|
||||||
namespace: infisical
|
|
||||||
labels:
|
|
||||||
app: infisical-valkey
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: infisical-valkey
|
|
||||||
ports:
|
|
||||||
- name: valkey
|
|
||||||
port: 6379
|
|
||||||
targetPort: 6379
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: infisical-valkey
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
serviceName: infisical-valkey
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: infisical-valkey
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: infisical-valkey
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: valkey
|
|
||||||
# Valkey is a drop-in, Redis-protocol-compatible replacement for Redis.
|
|
||||||
image: valkey/valkey:8-alpine
|
|
||||||
args: ["--appendonly", "yes"]
|
|
||||||
ports:
|
|
||||||
- containerPort: 6379
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /data
|
|
||||||
readinessProbe:
|
|
||||||
exec:
|
|
||||||
command: ["valkey-cli", "ping"]
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 10
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 50m
|
|
||||||
memory: 64Mi
|
|
||||||
limits:
|
|
||||||
memory: 256Mi
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- metadata:
|
|
||||||
name: data
|
|
||||||
spec:
|
|
||||||
accessModes: ["ReadWriteOnce"]
|
|
||||||
storageClassName: longhorn
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: it-tools
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: jellyfin
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: minio-aistor
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: netbootxyz
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
apiVersion: batch/v1
|
|
||||||
kind: CronJob
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-housekeeping
|
|
||||||
spec:
|
|
||||||
schedule: "15 3 * * *"
|
|
||||||
concurrencyPolicy: Forbid
|
|
||||||
successfulJobsHistoryLimit: 3
|
|
||||||
failedJobsHistoryLimit: 3
|
|
||||||
jobTemplate:
|
|
||||||
spec:
|
|
||||||
backoffLimit: 2
|
|
||||||
template:
|
|
||||||
spec:
|
|
||||||
restartPolicy: OnFailure
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 999
|
|
||||||
runAsGroup: 0
|
|
||||||
fsGroup: 0
|
|
||||||
containers:
|
|
||||||
- name: netbox-housekeeping
|
|
||||||
image: netboxcommunity/netbox:v4.6.8-5.0.2
|
|
||||||
args:
|
|
||||||
- /opt/netbox/venv/bin/python
|
|
||||||
- /opt/netbox/netbox/manage.py
|
|
||||||
- housekeeping
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "128Mi"
|
|
||||||
cpu: "50m"
|
|
||||||
limits:
|
|
||||||
memory: "512Mi"
|
|
||||||
cpu: "500m"
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: netbox-app-secrets
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
apiVersion: gateway.networking.k8s.io/v1
|
|
||||||
kind: HTTPRoute
|
|
||||||
metadata:
|
|
||||||
name: netbox-route
|
|
||||||
namespace: netbox
|
|
||||||
spec:
|
|
||||||
parentRefs:
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: gateway-internal
|
|
||||||
namespace: envoy-gateway
|
|
||||||
sectionName: netbox
|
|
||||||
hostnames:
|
|
||||||
- "netbox.jsme.be"
|
|
||||||
rules:
|
|
||||||
- matches:
|
|
||||||
- path:
|
|
||||||
type: PathPrefix
|
|
||||||
value: /
|
|
||||||
filters:
|
|
||||||
- type: RequestHeaderModifier
|
|
||||||
requestHeaderModifier:
|
|
||||||
set:
|
|
||||||
- name: X-Forwarded-Host
|
|
||||||
value: "netbox.jsme.be"
|
|
||||||
- name: X-Forwarded-Proto
|
|
||||||
value: https
|
|
||||||
- type: ResponseHeaderModifier
|
|
||||||
responseHeaderModifier:
|
|
||||||
set:
|
|
||||||
- name: Strict-Transport-Security
|
|
||||||
value: "max-age=31536000; includeSubDomains"
|
|
||||||
- name: X-Content-Type-Options
|
|
||||||
value: nosniff
|
|
||||||
- name: X-Frame-Options
|
|
||||||
value: SAMEORIGIN
|
|
||||||
- name: Referrer-Policy
|
|
||||||
value: strict-origin-when-cross-origin
|
|
||||||
- name: Permissions-Policy
|
|
||||||
value: "camera=(), microphone=(), geolocation=(), payment=()"
|
|
||||||
backendRefs:
|
|
||||||
- name: netbox
|
|
||||||
port: 8080
|
|
||||||
kind: Service
|
|
||||||
group: ""
|
|
||||||
weight: 1
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: netbox
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
strategy:
|
|
||||||
type: Recreate
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: netbox
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: netbox
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 999
|
|
||||||
runAsGroup: 0
|
|
||||||
fsGroup: 0
|
|
||||||
containers:
|
|
||||||
- name: netbox
|
|
||||||
image: netboxcommunity/netbox:v4.6.8-5.0.2
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "512Mi"
|
|
||||||
cpu: "250m"
|
|
||||||
limits:
|
|
||||||
memory: "2Gi"
|
|
||||||
cpu: "2000m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: netbox-app-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: netbox-data
|
|
||||||
mountPath: /opt/netbox/netbox/media
|
|
||||||
subPath: media
|
|
||||||
- name: netbox-data
|
|
||||||
mountPath: /opt/netbox/netbox/reports
|
|
||||||
subPath: reports
|
|
||||||
- name: netbox-data
|
|
||||||
mountPath: /opt/netbox/netbox/scripts
|
|
||||||
subPath: scripts
|
|
||||||
startupProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /login/
|
|
||||||
port: 8080
|
|
||||||
# Django rejects the pod IP as a Host header (ALLOWED_HOSTS).
|
|
||||||
httpHeaders:
|
|
||||||
- name: Host
|
|
||||||
value: netbox.jsme.be
|
|
||||||
periodSeconds: 10
|
|
||||||
# Generous: the entrypoint runs migrations before granian binds.
|
|
||||||
failureThreshold: 60
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /login/
|
|
||||||
port: 8080
|
|
||||||
# Django rejects the pod IP as a Host header (ALLOWED_HOSTS).
|
|
||||||
httpHeaders:
|
|
||||||
- name: Host
|
|
||||||
value: netbox.jsme.be
|
|
||||||
periodSeconds: 15
|
|
||||||
livenessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /login/
|
|
||||||
port: 8080
|
|
||||||
# Django rejects the pod IP as a Host header (ALLOWED_HOSTS).
|
|
||||||
httpHeaders:
|
|
||||||
- name: Host
|
|
||||||
value: netbox.jsme.be
|
|
||||||
periodSeconds: 30
|
|
||||||
failureThreshold: 5
|
|
||||||
volumes:
|
|
||||||
- name: netbox-data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: netbox-data-pvc
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: netbox-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/netbox/netbox"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: netbox-app-secrets
|
|
||||||
secretNamespace: netbox
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-data-pvc
|
|
||||||
spec:
|
|
||||||
# RWX: shared by the web pod and the rqworker pod.
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteMany
|
|
||||||
storageClassName: longhorn-static
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 5Gi
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: netbox
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: 8080
|
|
||||||
targetPort: 8080
|
|
||||||
type: ClusterIP
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: netbox-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/netbox/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: netbox-postgres-secrets
|
|
||||||
secretNamespace: netbox
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-postgres-pvc
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
storageClassName: longhorn-static
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 10Gi
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: netbox-postgres
|
|
||||||
namespace: netbox
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: netbox-postgres
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- name: netbox-postgres-port
|
|
||||||
protocol: TCP
|
|
||||||
port: 5432
|
|
||||||
targetPort: 5432
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-postgres
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
serviceName: netbox-postgres
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: netbox-postgres
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: netbox-postgres
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
containers:
|
|
||||||
- name: netbox-postgres
|
|
||||||
image: postgres:18
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "100m"
|
|
||||||
limits:
|
|
||||||
memory: "1Gi"
|
|
||||||
cpu: "1000m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 5432
|
|
||||||
volumeMounts:
|
|
||||||
- name: netbox-postgres-data
|
|
||||||
mountPath: /var/lib/postgresql/data
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: netbox-postgres-secrets
|
|
||||||
readinessProbe:
|
|
||||||
exec:
|
|
||||||
command: ["sh", "-c", "pg_isready -q -U \"$POSTGRES_USER\" -d \"$POSTGRES_DB\""]
|
|
||||||
initialDelaySeconds: 10
|
|
||||||
periodSeconds: 10
|
|
||||||
volumes:
|
|
||||||
- name: netbox-postgres-data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: netbox-postgres-pvc
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-redis-cache
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: netbox-redis-cache
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: netbox-redis-cache
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
containers:
|
|
||||||
- name: netbox-redis-cache
|
|
||||||
image: valkey/valkey:9.1-alpine
|
|
||||||
# Cache only: no persistence, contents are disposable.
|
|
||||||
command: ["sh", "-c", "exec valkey-server --requirepass \"$REDIS_PASSWORD\""]
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "64Mi"
|
|
||||||
cpu: "50m"
|
|
||||||
limits:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "200m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 6379
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: netbox-redis-cache-secrets
|
|
||||||
readinessProbe:
|
|
||||||
exec:
|
|
||||||
command: ["sh", "-c", "valkey-cli --pass \"$REDIS_PASSWORD\" ping | grep -q PONG"]
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 10
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: netbox-redis-cache-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/netbox/redis-cache"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: netbox-redis-cache-secrets
|
|
||||||
secretNamespace: netbox
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: netbox-redis-cache
|
|
||||||
namespace: netbox
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: netbox-redis-cache
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- name: netbox-redis-cache-port
|
|
||||||
protocol: TCP
|
|
||||||
port: 6379
|
|
||||||
targetPort: 6379
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: netbox-redis-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/netbox/redis"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: netbox-redis-secrets
|
|
||||||
secretNamespace: netbox
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-redis-pvc
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
storageClassName: longhorn-static
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: netbox-redis
|
|
||||||
namespace: netbox
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: netbox-redis
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- name: netbox-redis-port
|
|
||||||
protocol: TCP
|
|
||||||
port: 6379
|
|
||||||
targetPort: 6379
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-redis
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
serviceName: netbox-redis
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: netbox-redis
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: netbox-redis
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
containers:
|
|
||||||
- name: netbox-redis
|
|
||||||
image: valkey/valkey:9.1-alpine
|
|
||||||
# Task queue: appendonly so queued background jobs survive a restart.
|
|
||||||
command: ["sh", "-c", "exec valkey-server --appendonly yes --requirepass \"$REDIS_PASSWORD\""]
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "64Mi"
|
|
||||||
cpu: "50m"
|
|
||||||
limits:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "200m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 6379
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: netbox-redis-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: netbox-redis-data
|
|
||||||
mountPath: /data
|
|
||||||
readinessProbe:
|
|
||||||
exec:
|
|
||||||
command: ["sh", "-c", "valkey-cli --pass \"$REDIS_PASSWORD\" ping | grep -q PONG"]
|
|
||||||
initialDelaySeconds: 5
|
|
||||||
periodSeconds: 10
|
|
||||||
volumes:
|
|
||||||
- name: netbox-redis-data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: netbox-redis-pvc
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: netbox
|
|
||||||
name: netbox-worker
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: netbox-worker
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: netbox-worker
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 999
|
|
||||||
runAsGroup: 0
|
|
||||||
fsGroup: 0
|
|
||||||
containers:
|
|
||||||
- name: netbox-worker
|
|
||||||
image: netboxcommunity/netbox:v4.6.8-5.0.2
|
|
||||||
# Overrides CMD only, so tini stays the entrypoint and migrations
|
|
||||||
# are left to the web pod.
|
|
||||||
args:
|
|
||||||
- /opt/netbox/venv/bin/python
|
|
||||||
- /opt/netbox/netbox/manage.py
|
|
||||||
- rqworker
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "100m"
|
|
||||||
limits:
|
|
||||||
memory: "1Gi"
|
|
||||||
cpu: "1000m"
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: netbox-app-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: netbox-data
|
|
||||||
mountPath: /opt/netbox/netbox/media
|
|
||||||
subPath: media
|
|
||||||
- name: netbox-data
|
|
||||||
mountPath: /opt/netbox/netbox/reports
|
|
||||||
subPath: reports
|
|
||||||
- name: netbox-data
|
|
||||||
mountPath: /opt/netbox/netbox/scripts
|
|
||||||
subPath: scripts
|
|
||||||
volumes:
|
|
||||||
- name: netbox-data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: netbox-data-pvc
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: outline
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: outline-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/outline/outline"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: outline-app-secrets
|
|
||||||
secretNamespace: outline
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: outline
|
|
||||||
name: outline
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: outline
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: outline
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
containers:
|
|
||||||
- name: outline
|
|
||||||
image: docker.getoutline.com/outlinewiki/outline:1.9.2
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "512Mi"
|
|
||||||
cpu: "250m"
|
|
||||||
limits:
|
|
||||||
memory: "2Gi"
|
|
||||||
cpu: "2000m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 3000
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: outline-app-secrets
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
apiVersion: gateway.networking.k8s.io/v1
|
|
||||||
kind: HTTPRoute
|
|
||||||
metadata:
|
|
||||||
name: outline-route
|
|
||||||
namespace: outline
|
|
||||||
spec:
|
|
||||||
parentRefs:
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: gateway-internal
|
|
||||||
namespace: envoy-gateway
|
|
||||||
sectionName: outline
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: gateway-public
|
|
||||||
namespace: envoy-gateway
|
|
||||||
sectionName: outline
|
|
||||||
hostnames:
|
|
||||||
- "outline.jsme.be"
|
|
||||||
rules:
|
|
||||||
- matches:
|
|
||||||
- path:
|
|
||||||
type: PathPrefix
|
|
||||||
value: /
|
|
||||||
filters:
|
|
||||||
- type: RequestHeaderModifier
|
|
||||||
requestHeaderModifier:
|
|
||||||
set:
|
|
||||||
- name: X-Forwarded-Host
|
|
||||||
value: "outline.jsme.be"
|
|
||||||
- name: X-Forwarded-Proto
|
|
||||||
value: https
|
|
||||||
- type: ResponseHeaderModifier
|
|
||||||
responseHeaderModifier:
|
|
||||||
set:
|
|
||||||
- name: Strict-Transport-Security
|
|
||||||
value: "max-age=31536000; includeSubDomains"
|
|
||||||
- name: X-Content-Type-Options
|
|
||||||
value: nosniff
|
|
||||||
- name: X-Frame-Options
|
|
||||||
value: SAMEORIGIN
|
|
||||||
- name: Referrer-Policy
|
|
||||||
value: strict-origin-when-cross-origin
|
|
||||||
- name: Permissions-Policy
|
|
||||||
value: "camera=(), microphone=(), geolocation=(), payment=()"
|
|
||||||
backendRefs:
|
|
||||||
- name: outline
|
|
||||||
port: 3000
|
|
||||||
kind: Service
|
|
||||||
group: ""
|
|
||||||
weight: 1
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
namespace: outline
|
|
||||||
name: outline
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: outline
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: 3000
|
|
||||||
targetPort: 3000
|
|
||||||
type: ClusterIP
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: outline-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/outline/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: outline-postgres-secrets
|
|
||||||
secretNamespace: outline
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: outline-postgres
|
|
||||||
namespace: outline
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: outline-postgres
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- name: outline-postgres-port
|
|
||||||
protocol: TCP
|
|
||||||
port: 5432
|
|
||||||
targetPort: 5432
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
namespace: outline
|
|
||||||
name: outline-postgres
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
serviceName: outline-postgres
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: outline-postgres
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: outline-postgres
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 60
|
|
||||||
containers:
|
|
||||||
- name: outline-postgres
|
|
||||||
image: postgres:18
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "100m"
|
|
||||||
limits:
|
|
||||||
memory: "1Gi"
|
|
||||||
cpu: "500m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 5432
|
|
||||||
volumeMounts:
|
|
||||||
- name: outline-postgres-data
|
|
||||||
mountPath: /var/lib/postgresql/data
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: outline-postgres-secrets
|
|
||||||
volumes:
|
|
||||||
- name: outline-postgres-data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: outline-postgres-pvc
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: outline
|
|
||||||
name: outline-redis
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: outline-redis
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: outline-redis
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
containers:
|
|
||||||
- name: outline-redis
|
|
||||||
image: valkey/valkey:9
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "64Mi"
|
|
||||||
cpu: "50m"
|
|
||||||
limits:
|
|
||||||
memory: "256Mi"
|
|
||||||
cpu: "200m"
|
|
||||||
ports:
|
|
||||||
- containerPort: 6379
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: outline-redis
|
|
||||||
namespace: outline
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: outline-redis
|
|
||||||
type: ClusterIP
|
|
||||||
ports:
|
|
||||||
- name: outline-redis-port
|
|
||||||
protocol: TCP
|
|
||||||
port: 6379
|
|
||||||
targetPort: 6379
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: passbolt-mariadb-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/passbolt/mariadb"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: passbolt-mariadb-secrets
|
|
||||||
secretNamespace: passbolt
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: passbolt
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: passbolt-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/passbolt/passbolt"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: passbolt-app-secrets
|
|
||||||
secretNamespace: passbolt
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
namespace: passbolt
|
|
||||||
name: passbolt
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: passbolt
|
|
||||||
serviceName: passbolt
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: passbolt
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 10
|
|
||||||
containers:
|
|
||||||
- name: passbolt
|
|
||||||
image: passbolt/passbolt:latest-ce
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 200m
|
|
||||||
memory: 512Mi
|
|
||||||
limits:
|
|
||||||
cpu: 1000m
|
|
||||||
memory: 1Gi
|
|
||||||
volumeMounts:
|
|
||||||
- name: gpg-volume
|
|
||||||
mountPath: /etc/passbolt/gpg
|
|
||||||
- name: jwt-volume
|
|
||||||
mountPath: /etc/passbolt/jwt
|
|
||||||
- name: nginx-ssl
|
|
||||||
mountPath: /etc/nginx/snippets/passbolt-ssl.conf
|
|
||||||
subPath: passbolt-ssl.conf
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: passbolt-app-secrets
|
|
||||||
volumes:
|
|
||||||
- name: gpg-volume
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: passbolt-gpg-pvc
|
|
||||||
- name: jwt-volume
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: passbolt-jwt-pvc
|
|
||||||
- name: nginx-ssl
|
|
||||||
configMap:
|
|
||||||
name: passbolt-nginx-ssl
|
|
||||||
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: pelican
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
apiVersion: gateway.networking.k8s.io/v1
|
|
||||||
kind: HTTPRoute
|
|
||||||
metadata:
|
|
||||||
name: wings-ark-route
|
|
||||||
namespace: pelican
|
|
||||||
spec:
|
|
||||||
parentRefs:
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: gateway-internal
|
|
||||||
namespace: envoy-gateway
|
|
||||||
sectionName: wings-ark
|
|
||||||
- group: gateway.networking.k8s.io
|
|
||||||
kind: Gateway
|
|
||||||
name: gateway-public
|
|
||||||
namespace: envoy-gateway
|
|
||||||
sectionName: wings-ark
|
|
||||||
hostnames:
|
|
||||||
- "wings-ark.jsme.be"
|
|
||||||
rules:
|
|
||||||
- matches:
|
|
||||||
- path:
|
|
||||||
type: PathPrefix
|
|
||||||
value: /
|
|
||||||
backendRefs:
|
|
||||||
- name: wings-ark
|
|
||||||
port: 8080
|
|
||||||
kind: Service
|
|
||||||
group: ""
|
|
||||||
weight: 1
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: wings-ark
|
|
||||||
namespace: pelican
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: 8080
|
|
||||||
targetPort: 8080
|
|
||||||
type: ClusterIP
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: pelican-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/pelican/pelican"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: pelican-app-secrets
|
|
||||||
secretNamespace: pelican
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: pelican-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/pelican/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: pelican-postgres-secrets
|
|
||||||
secretNamespace: pelican
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: proxmox
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: resume-chrome-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/reactive_resume/chrome"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: resume-chrome-secrets
|
|
||||||
secretNamespace: resume
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: chrome
|
|
||||||
namespace: resume
|
|
||||||
labels:
|
|
||||||
app: chrome
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: chrome
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: chrome
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: chrome
|
|
||||||
image: ghcr.io/browserless/chromium:latest
|
|
||||||
ports:
|
|
||||||
- containerPort: 3000
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: resume-chrome-secrets
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: resume-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/reactive_resume/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: resume-postgres-secrets
|
|
||||||
secretNamespace: resume
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: resume
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: resume-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/reactive_resume/resume"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: resume-app-secrets
|
|
||||||
secretNamespace: resume
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
namespace: resume
|
|
||||||
name: resume
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: resume
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: resume
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 10
|
|
||||||
containers:
|
|
||||||
- name: resume
|
|
||||||
image: ghcr.io/amruthpillai/reactive-resume:v5.0
|
|
||||||
ports:
|
|
||||||
- containerPort: 3000
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
cpu: "1000m"
|
|
||||||
memory: "2Gi"
|
|
||||||
requests:
|
|
||||||
cpu: "500m"
|
|
||||||
memory: "1Gi"
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: resume-app-secrets
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: searxng
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: searxng-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/searxng/searxng"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: searxng-app-secrets
|
|
||||||
secretNamespace: searxng
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: technitium
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: truenas
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: unifi
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: uptime-kuma-mariadb-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/uptime-kuma/mariadb"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: uptime-kuma-mariadb-secrets
|
|
||||||
secretNamespace: uptime-kuma
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: uptime-kuma
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: uptime-kuma-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/uptime-kuma/uptime-kuma"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: uptime-kuma-app-secrets
|
|
||||||
secretNamespace: uptime-kuma
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: uptime-kuma
|
|
||||||
namespace: uptime-kuma
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: uptime-kuma
|
|
||||||
serviceName: uptime-kuma
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: uptime-kuma
|
|
||||||
spec:
|
|
||||||
restartPolicy: Always
|
|
||||||
terminationGracePeriodSeconds: 10
|
|
||||||
containers:
|
|
||||||
- name: uptime-kuma
|
|
||||||
image: louislam/uptime-kuma:2.5.3
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
cpu: 100m
|
|
||||||
memory: 256Mi
|
|
||||||
limits:
|
|
||||||
cpu: 500m
|
|
||||||
memory: 512Mi
|
|
||||||
ports:
|
|
||||||
- containerPort: 3001
|
|
||||||
name: http
|
|
||||||
# DATABASE_HOST/PORT/NAME/USERNAME/PASSWORD come from the Secret.
|
|
||||||
envFrom:
|
|
||||||
- secretRef:
|
|
||||||
name: uptime-kuma-app-secrets
|
|
||||||
volumeMounts:
|
|
||||||
- name: data
|
|
||||||
mountPath: /app/data
|
|
||||||
volumes:
|
|
||||||
- name: data
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: uptime-kuma-pvc
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: victoria-metrics
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: zipline-postgres-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/zipline/postgres"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: zipline-postgres-secrets
|
|
||||||
secretNamespace: zipline
|
|
||||||
secretType: Opaque
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Namespace
|
|
||||||
metadata:
|
|
||||||
name: zipline
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
apiVersion: secrets.infisical.com/v1alpha1
|
|
||||||
kind: InfisicalSecret
|
|
||||||
metadata:
|
|
||||||
name: zipline-app-secrets
|
|
||||||
namespace: infisical
|
|
||||||
spec:
|
|
||||||
hostAPI: https://infisical.jsme.be
|
|
||||||
resyncInterval: 30
|
|
||||||
authentication:
|
|
||||||
kubernetesAuth:
|
|
||||||
identityId: "5458def7-7c63-40d2-95da-41c614d0933a"
|
|
||||||
serviceAccountRef:
|
|
||||||
name: infisical-auth
|
|
||||||
namespace: infisical
|
|
||||||
autoCreateServiceAccountToken: true
|
|
||||||
secretsScope:
|
|
||||||
projectSlug: "kubernetes"
|
|
||||||
envSlug: "prod"
|
|
||||||
secretsPath: "/zipline/zipline"
|
|
||||||
# Non-recursive: keys are already named as the container expects.
|
|
||||||
recursive: false
|
|
||||||
managedSecretReference:
|
|
||||||
secretName: zipline-app-secrets
|
|
||||||
secretNamespace: zipline
|
|
||||||
secretType: Opaque
|
|
||||||
+2
-1
@@ -7,7 +7,7 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
repoURL: https://gitea.jsme.be/Jeffrey/Kubernetes-Manifests.git
|
repoURL: https://gitea.jsme.be/Jeffrey/Kubernetes-Manifests.git
|
||||||
path: applications/authentik
|
path: authentik
|
||||||
targetRevision: main
|
targetRevision: main
|
||||||
directory:
|
directory:
|
||||||
recurse: true
|
recurse: true
|
||||||
@@ -19,4 +19,5 @@ spec:
|
|||||||
prune: true
|
prune: true
|
||||||
selfHeal: true
|
selfHeal: true
|
||||||
syncOptions:
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
- ServerSideApply=true
|
- ServerSideApply=true
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user