refactor ingresses
This commit is contained in:
64
README.md
64
README.md
@@ -25,18 +25,20 @@ Aquest clúster K3s gestiona els següents serveis:
|
|||||||
```
|
```
|
||||||
.
|
.
|
||||||
├── README.md # Aquest fitxer
|
├── README.md # Aquest fitxer
|
||||||
├── ingress.yaml # Configuració d'Ingress principal (Traefik)
|
|
||||||
├── nas.yaml # Servei extern per al NAS
|
|
||||||
├── <aplicació>/ # Cada aplicació té el seu directori
|
├── <aplicació>/ # Cada aplicació té el seu directori
|
||||||
│ ├── deployment.yaml # Definició del Deployment
|
│ ├── deployment.yaml # Definició del Deployment
|
||||||
│ ├── service.yaml # Definició del Service
|
│ ├── service.yaml # Definició del Service
|
||||||
│ ├── ingress.yaml # Configuració d'Ingress (opcional)
|
│ ├── ingress.yaml # Configuració d'Ingress de l'aplicació
|
||||||
│ ├── namespace.yaml # Namespace dedicat (opcional)
|
│ ├── namespace.yaml # Namespace dedicat (opcional)
|
||||||
│ ├── configmap.yaml # ConfigMaps (opcional)
|
│ ├── configmap.yaml # ConfigMaps (opcional)
|
||||||
│ └── pvc.yaml # PersistentVolumeClaims (opcional)
|
│ └── pvc.yaml # PersistentVolumeClaims (opcional)
|
||||||
└── monitoring/ # Stack de monitorització complet
|
└── nas/ # Servei extern per al NAS
|
||||||
|
├── nas.yaml # Service i Endpoints externs
|
||||||
|
└── ingress.yaml # Ingress del NAS
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> **Nota**: Cada aplicació té el seu propi `ingress.yaml` dins del seu directori. Ja no hi ha cap `ingress.yaml` centralitzat a l'arrel.
|
||||||
|
|
||||||
## 🚀 Desplegament
|
## 🚀 Desplegament
|
||||||
|
|
||||||
### Prerequisits
|
### Prerequisits
|
||||||
@@ -66,9 +68,8 @@ for dir in */; do
|
|||||||
kubectl apply -f "$dir"
|
kubectl apply -f "$dir"
|
||||||
done
|
done
|
||||||
|
|
||||||
# O aplicar recursos globals primer
|
# O aplicar recursos globals primer (opcional)
|
||||||
kubectl apply -f ingress.yaml
|
kubectl apply -f nas/
|
||||||
kubectl apply -f nas.yaml
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Eliminar una Aplicació
|
### Eliminar una Aplicació
|
||||||
@@ -83,18 +84,43 @@ kubectl delete -f <aplicació>/<fitxer>.yaml
|
|||||||
|
|
||||||
## 🌐 Ingress i Networking
|
## 🌐 Ingress i Networking
|
||||||
|
|
||||||
### Configuració d'Ingress Principal
|
### Configuració d'Ingress per Aplicació
|
||||||
|
|
||||||
El fitxer [ingress.yaml](ingress.yaml) conté la configuració centralitzada d'Ingress utilitzant **Traefik** (controlador per defecte de K3s). Característiques:
|
Cada aplicació té el seu propi fitxer `ingress.yaml` dins del seu directori, seguint el model de [pihole/ingress.yaml](pihole/ingress.yaml). Característiques:
|
||||||
|
|
||||||
- **TLS/SSL**: Certificats wildcard `*.rogi.casa` gestionats per cert-manager
|
- **Traefik**: Controlador per defecte de K3s (`ingressClassName: traefik`)
|
||||||
- **Cloudflare Origin Issuer**: Utilitzat per generar certificats
|
- **TLS/SSL**: Certificats per host gestionats per cert-manager amb el cluster-issuer `letsencrypt-prod`
|
||||||
- **Redirect HTTPS**: Redireccions automàtiques de HTTP a HTTPS
|
- **Secret per aplicació**: Cada ingress té el seu propi `<aplicació>-tls`
|
||||||
- **Compressió**: Habilitada per defecte
|
- **Namespace dedicat**: Cada ingress pertany al namespace de la seva aplicació
|
||||||
|
|
||||||
### Aplicacions amb Ingress Dedicat
|
Exemple (`pihole/ingress.yaml`):
|
||||||
|
|
||||||
Algunes aplicacions tenen el seu propi fitxer `ingress.yaml` dins del seu directori per a configuracions específiques.
|
```yaml
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: pihole
|
||||||
|
namespace: pihole
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- pihole.rogi.casa
|
||||||
|
secretName: pihole-tls
|
||||||
|
rules:
|
||||||
|
- host: pihole.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: pihole-web
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
```
|
||||||
|
|
||||||
## 💾 Persistència de Dades
|
## 💾 Persistència de Dades
|
||||||
|
|
||||||
@@ -218,7 +244,7 @@ kubectl get pv
|
|||||||
|
|
||||||
## 📝 Bones Pràctiques
|
## 📝 Bones Pràctiques
|
||||||
|
|
||||||
1. **Namespaces**: Les aplicacions complexes utilitzen namespaces dedicats (n8n, monitoring, phoenix)
|
1. **Namespaces**: Totes les aplicacions tenen un namespace dedicat; cap queda al namespace `default`
|
||||||
2. **Labels**: Tots els recursos utilitzen labels consistents per facilitar la gestió
|
2. **Labels**: Tots els recursos utilitzen labels consistents per facilitar la gestió
|
||||||
3. **Resources Limits**: Configura limits de CPU/memòria per evitar overconsumption
|
3. **Resources Limits**: Configura limits de CPU/memòria per evitar overconsumption
|
||||||
4. **Health Checks**: Implementa liveness i readiness probes quan sigui possible
|
4. **Health Checks**: Implementa liveness i readiness probes quan sigui possible
|
||||||
@@ -245,7 +271,7 @@ kubectl rollout undo deployment/<nom> -n <namespace>
|
|||||||
## 🌟 Serveis Externs
|
## 🌟 Serveis Externs
|
||||||
|
|
||||||
### NAS
|
### NAS
|
||||||
El fitxer [nas.yaml](nas.yaml) configura un servei extern que apunta al NAS local (10.88.88.238:5000) sense desplegar pods dins del clúster.
|
El fitxer [nas/nas.yaml](nas/nas.yaml) configura un servei extern que apunta al NAS local (10.88.88.238:5000) sense desplegar pods dins del clúster. L'Ingress corresponent és a [nas/ingress.yaml](nas/ingress.yaml).
|
||||||
|
|
||||||
## 📚 Recursos Addicionals
|
## 📚 Recursos Addicionals
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# gitea-ingress.yaml
|
|
||||||
apiVersion: networking.k8s.io/v1
|
apiVersion: networking.k8s.io/v1
|
||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
@@ -10,10 +9,10 @@ spec:
|
|||||||
ingressClassName: traefik
|
ingressClassName: traefik
|
||||||
tls:
|
tls:
|
||||||
- hosts:
|
- hosts:
|
||||||
- git.rogi.casa
|
- gitea.rogi.casa
|
||||||
secretName: gitea-tls
|
secretName: gitea-tls
|
||||||
rules:
|
rules:
|
||||||
- host: git.rogi.casa
|
- host: gitea.rogi.casa
|
||||||
http:
|
http:
|
||||||
paths:
|
paths:
|
||||||
- path: /
|
- path: /
|
||||||
@@ -2,6 +2,7 @@ apiVersion: v1
|
|||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: glance-config
|
name: glance-config
|
||||||
|
namespace: glance
|
||||||
data:
|
data:
|
||||||
glance.yml: |
|
glance.yml: |
|
||||||
pages:
|
pages:
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: glance
|
||||||
|
---
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: glance
|
name: glance
|
||||||
|
namespace: glance
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
@@ -29,7 +35,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: glance-service
|
name: glance-service
|
||||||
namespace: default
|
namespace: glance
|
||||||
spec:
|
spec:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
selector:
|
selector:
|
||||||
|
|||||||
24
glance/ingress.yaml
Normal file
24
glance/ingress.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: glance
|
||||||
|
namespace: glance
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- glance.rogi.casa
|
||||||
|
secretName: glance-tls
|
||||||
|
rules:
|
||||||
|
- host: glance.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: glance-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
@@ -1,7 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: gym-tracker
|
||||||
|
---
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: gym-tracker
|
name: gym-tracker
|
||||||
|
namespace: gym-tracker
|
||||||
labels:
|
labels:
|
||||||
app: gym-tracker
|
app: gym-tracker
|
||||||
spec:
|
spec:
|
||||||
@@ -67,6 +73,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: gym-tracker
|
name: gym-tracker
|
||||||
|
namespace: gym-tracker
|
||||||
labels:
|
labels:
|
||||||
app: gym-tracker
|
app: gym-tracker
|
||||||
spec:
|
spec:
|
||||||
@@ -87,6 +94,7 @@ apiVersion: v1
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: gym-tracker-data
|
name: gym-tracker-data
|
||||||
|
namespace: gym-tracker
|
||||||
labels:
|
labels:
|
||||||
app: gym-tracker
|
app: gym-tracker
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
24
gym-tracker/ingress.yaml
Normal file
24
gym-tracker/ingress.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: gym-tracker
|
||||||
|
namespace: gym-tracker
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- gym.rogi.casa
|
||||||
|
secretName: gym-tracker-tls
|
||||||
|
rules:
|
||||||
|
- host: gym.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: gym-tracker
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
24
homeassistant/ingress.yaml
Normal file
24
homeassistant/ingress.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: homeassistant
|
||||||
|
namespace: home-assistant
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- homeassistant.rogi.casa
|
||||||
|
secretName: homeassistant-tls
|
||||||
|
rules:
|
||||||
|
- host: homeassistant.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: home-assistant
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
307
ingress.yaml
307
ingress.yaml
@@ -1,307 +0,0 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: rogicasa-ingress
|
|
||||||
namespace: default
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: glance.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: glance-service
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- host: pihole.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: pihole-web
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- host: litellm.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: litellm-service
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- host: openai.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: open-webui-service
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- host: gym.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: gym-tracker
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: gitea-ingress
|
|
||||||
namespace: gitea
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: gitea.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: gitea
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: monitoring-ingress
|
|
||||||
namespace: monitoring
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: grafana.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: grafana
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- host: prometheus.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: prometheus-k8s
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: vaultwarden-ingress
|
|
||||||
namespace: vaultwarden
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: vaultwarden.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: vaultwarden
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: homeassistant-ingress
|
|
||||||
namespace: home-assistant
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: homeassistant.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: home-assistant
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: minecraft-ingress
|
|
||||||
namespace: minecraft
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: minecraft.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: minecraft-server
|
|
||||||
port:
|
|
||||||
number: 25565
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: argocd-ingress
|
|
||||||
namespace: argocd
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: argocd.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: argocd-server
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
---
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: nas-ingress
|
|
||||||
namespace: default
|
|
||||||
annotations:
|
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
|
||||||
kubernetes.io/ingress.class: "traefik"
|
|
||||||
# Enable SSL redirect
|
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
|
||||||
# Optional: enable compression
|
|
||||||
traefik.ingress.kubernetes.io/compress: "true"
|
|
||||||
# Allow large file uploads (5GB) for NAS
|
|
||||||
traefik.ingress.kubernetes.io/max-request-body-bytes: "5368709120"
|
|
||||||
cert-manager.io/issuer: prod-issuer
|
|
||||||
cert-manager.io/issuer-kind: OriginIssuer
|
|
||||||
cert-manager.io/issuer-group: cert-manager.k8s.cloudflare.com
|
|
||||||
spec:
|
|
||||||
tls:
|
|
||||||
- hosts:
|
|
||||||
- "*.rogi.casa"
|
|
||||||
secretName: rogicasa-tls
|
|
||||||
rules:
|
|
||||||
- host: nas.rogi.casa
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: external-ip
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
24
litellm/ingress.yaml
Normal file
24
litellm/ingress.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: litellm
|
||||||
|
namespace: litellm
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- litellm.rogi.casa
|
||||||
|
secretName: litellm-tls
|
||||||
|
rules:
|
||||||
|
- host: litellm.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: litellm-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
@@ -1,7 +1,13 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: litellm
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: litellm-config-file
|
name: litellm-config-file
|
||||||
|
namespace: litellm
|
||||||
data:
|
data:
|
||||||
config.yaml: |
|
config.yaml: |
|
||||||
model_list:
|
model_list:
|
||||||
@@ -50,6 +56,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: litellm-deployment
|
name: litellm-deployment
|
||||||
|
namespace: litellm
|
||||||
labels:
|
labels:
|
||||||
app: litellm
|
app: litellm
|
||||||
spec:
|
spec:
|
||||||
@@ -88,7 +95,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: litellm-service
|
name: litellm-service
|
||||||
namespace: default
|
namespace: litellm
|
||||||
spec:
|
spec:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
selector:
|
selector:
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ apiVersion: v1
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: postgres-volume-claim
|
name: postgres-volume-claim
|
||||||
|
namespace: litellm
|
||||||
labels:
|
labels:
|
||||||
app: postgres
|
app: postgres
|
||||||
spec:
|
spec:
|
||||||
@@ -32,6 +33,7 @@ apiVersion: apps/v1
|
|||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: postgres
|
name: postgres
|
||||||
|
namespace: litellm
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
@@ -63,6 +65,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: postgres
|
name: postgres
|
||||||
|
namespace: litellm
|
||||||
labels:
|
labels:
|
||||||
app: postgres
|
app: postgres
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
24
minecraft-server/ingress.yaml
Normal file
24
minecraft-server/ingress.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: minecraft
|
||||||
|
namespace: minecraft
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- minecraft.rogi.casa
|
||||||
|
secretName: minecraft-tls
|
||||||
|
rules:
|
||||||
|
- host: minecraft.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: minecraft-server
|
||||||
|
port:
|
||||||
|
number: 25565
|
||||||
35
monitoring/ingress.yaml
Normal file
35
monitoring/ingress.yaml
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: monitoring
|
||||||
|
namespace: monitoring
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- grafana.rogi.casa
|
||||||
|
- prometheus.rogi.casa
|
||||||
|
secretName: monitoring-tls
|
||||||
|
rules:
|
||||||
|
- host: grafana.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: grafana
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
- host: prometheus.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: prometheus-k8s
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: ConfigMap
|
kind: ConfigMap
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-assistant-config
|
name: myorg-assistant-config
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
data:
|
data:
|
||||||
# LiteLLM Configuration
|
# LiteLLM Configuration
|
||||||
LITELLM_ENDPOINT: "http://litellm-service.default.svc.cluster.local:4000"
|
LITELLM_ENDPOINT: "http://litellm-service.default.svc.cluster.local:4000"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: batch/v1
|
|||||||
kind: CronJob
|
kind: CronJob
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-deadline-checker
|
name: myorg-deadline-checker
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
labels:
|
labels:
|
||||||
app: myorg-assistant
|
app: myorg-assistant
|
||||||
job: deadline-checker
|
job: deadline-checker
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: batch/v1
|
|||||||
kind: CronJob
|
kind: CronJob
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-evening-summary
|
name: myorg-evening-summary
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
labels:
|
labels:
|
||||||
app: myorg-assistant
|
app: myorg-assistant
|
||||||
job: evening-summary
|
job: evening-summary
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: batch/v1
|
|||||||
kind: CronJob
|
kind: CronJob
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-git-sync
|
name: myorg-git-sync
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
labels:
|
labels:
|
||||||
app: myorg-assistant
|
app: myorg-assistant
|
||||||
job: git-sync
|
job: git-sync
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: batch/v1
|
|||||||
kind: CronJob
|
kind: CronJob
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-morning-briefing
|
name: myorg-morning-briefing
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
labels:
|
labels:
|
||||||
app: myorg-assistant
|
app: myorg-assistant
|
||||||
job: morning-briefing
|
job: morning-briefing
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: batch/v1
|
|||||||
kind: CronJob
|
kind: CronJob
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-waiting-followup
|
name: myorg-waiting-followup
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
labels:
|
labels:
|
||||||
app: myorg-assistant
|
app: myorg-assistant
|
||||||
job: waiting-followup
|
job: waiting-followup
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: myorg-assistant
|
||||||
|
---
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-assistant
|
name: myorg-assistant
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
labels:
|
labels:
|
||||||
app: myorg-assistant
|
app: myorg-assistant
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: networking.k8s.io/v1
|
|||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-ingress
|
name: myorg-ingress
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
annotations:
|
annotations:
|
||||||
# Use Traefik as the ingress controller (default in k3s)
|
# Use Traefik as the ingress controller (default in k3s)
|
||||||
kubernetes.io/ingress.class: "traefik"
|
kubernetes.io/ingress.class: "traefik"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-assistant-pvc
|
name: myorg-assistant-pvc
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: myorg-assistant-service
|
name: myorg-assistant-service
|
||||||
namespace: default
|
namespace: myorg-assistant
|
||||||
labels:
|
labels:
|
||||||
app: myorg-assistant
|
app: myorg-assistant
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
45
nas.yaml
45
nas.yaml
@@ -1,45 +0,0 @@
|
|||||||
#apiVersion: networking.k8s.io/v1
|
|
||||||
#kind: Ingress
|
|
||||||
#metadata:
|
|
||||||
# name: nas-redirect
|
|
||||||
# annotations:
|
|
||||||
# nginx.ingress.kubernetes.io/permanent-redirect: "http://10.88.88.238:5000"
|
|
||||||
#spec:
|
|
||||||
# rules:
|
|
||||||
# - host: nas.rogi.casa
|
|
||||||
# http:
|
|
||||||
# paths:
|
|
||||||
# - path: /
|
|
||||||
# pathType: Prefix
|
|
||||||
# backend:
|
|
||||||
# service:
|
|
||||||
# name: dummy-service
|
|
||||||
# port:
|
|
||||||
# number: 80
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: external-ip
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: app
|
|
||||||
port: 80
|
|
||||||
protocol: TCP
|
|
||||||
targetPort: 5000
|
|
||||||
clusterIP: None
|
|
||||||
type: ClusterIP
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Endpoints
|
|
||||||
metadata:
|
|
||||||
name: external-ip
|
|
||||||
subsets:
|
|
||||||
- addresses:
|
|
||||||
- ip: 10.88.88.238
|
|
||||||
ports:
|
|
||||||
- name: app
|
|
||||||
port: 5000
|
|
||||||
protocol: TCP
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
26
nas/ingress.yaml
Normal file
26
nas/ingress.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: nas
|
||||||
|
namespace: nas
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
# Allow large file uploads (5GB) for NAS
|
||||||
|
traefik.ingress.kubernetes.io/max-request-body-bytes: "5368709120"
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- nas.rogi.casa
|
||||||
|
secretName: nas-tls
|
||||||
|
rules:
|
||||||
|
- host: nas.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: external-ip
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
31
nas/nas.yaml
Normal file
31
nas/nas.yaml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: nas
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: external-ip
|
||||||
|
namespace: nas
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 5000
|
||||||
|
clusterIP: None
|
||||||
|
type: ClusterIP
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: external-ip
|
||||||
|
namespace: nas
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 10.88.88.238
|
||||||
|
ports:
|
||||||
|
- name: app
|
||||||
|
port: 5000
|
||||||
|
protocol: TCP
|
||||||
24
openwebui/ingress.yaml
Normal file
24
openwebui/ingress.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: openwebui
|
||||||
|
namespace: openwebui
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- openai.rogi.casa
|
||||||
|
secretName: openwebui-tls
|
||||||
|
rules:
|
||||||
|
- host: openai.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: open-webui-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
@@ -1,7 +1,13 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: openwebui
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: openwebui-pvc
|
name: openwebui-pvc
|
||||||
|
namespace: openwebui
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
@@ -15,6 +21,7 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
app: open-webui
|
app: open-webui
|
||||||
name: open-webui
|
name: open-webui
|
||||||
|
namespace: openwebui
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: 1
|
||||||
selector:
|
selector:
|
||||||
@@ -84,6 +91,7 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
app: open-webui
|
app: open-webui
|
||||||
name: open-webui-service
|
name: open-webui-service
|
||||||
|
namespace: openwebui
|
||||||
spec:
|
spec:
|
||||||
ports:
|
ports:
|
||||||
- name: http
|
- name: http
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ apiVersion: networking.k8s.io/v1
|
|||||||
kind: Ingress
|
kind: Ingress
|
||||||
metadata:
|
metadata:
|
||||||
name: qbittorrent-ingress
|
name: qbittorrent-ingress
|
||||||
|
namespace: qbittorrent
|
||||||
annotations:
|
annotations:
|
||||||
kubernetes.io/ingress.class: "traefik"
|
kubernetes.io/ingress.class: "traefik"
|
||||||
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
traefik.ingress.kubernetes.io/redirect-entry-point: https
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: qbittorrent
|
||||||
|
---
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: qbittorrent
|
name: qbittorrent
|
||||||
|
namespace: qbittorrent
|
||||||
labels:
|
labels:
|
||||||
app: qbittorrent
|
app: qbittorrent
|
||||||
spec:
|
spec:
|
||||||
@@ -48,6 +54,7 @@ apiVersion: v1
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: qbittorrent-config
|
name: qbittorrent-config
|
||||||
|
namespace: qbittorrent
|
||||||
labels:
|
labels:
|
||||||
app: qbittorrent
|
app: qbittorrent
|
||||||
spec:
|
spec:
|
||||||
@@ -76,6 +83,7 @@ apiVersion: v1
|
|||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: qbittorrent-downloads
|
name: qbittorrent-downloads
|
||||||
|
namespace: qbittorrent
|
||||||
labels:
|
labels:
|
||||||
app: qbittorrent
|
app: qbittorrent
|
||||||
spec:
|
spec:
|
||||||
@@ -91,6 +99,7 @@ apiVersion: v1
|
|||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: qbittorrent
|
name: qbittorrent
|
||||||
|
namespace: qbittorrent
|
||||||
labels:
|
labels:
|
||||||
app: qbittorrent
|
app: qbittorrent
|
||||||
spec:
|
spec:
|
||||||
|
|||||||
24
vaultwarden/ingress.yaml
Normal file
24
vaultwarden/ingress.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: vaultwarden
|
||||||
|
namespace: vaultwarden
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
spec:
|
||||||
|
ingressClassName: traefik
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- vaultwarden.rogi.casa
|
||||||
|
secretName: vaultwarden-tls
|
||||||
|
rules:
|
||||||
|
- host: vaultwarden.rogi.casa
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: vaultwarden
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
Reference in New Issue
Block a user