feat: add metallb
This commit is contained in:
parent
bd0c392b57
commit
1eab068977
30 changed files with 107 additions and 24 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -23,3 +23,4 @@ k8s/charts/README.md
|
|||
opencode.json
|
||||
*.pyc
|
||||
.venv/
|
||||
METALLB.md
|
||||
|
|
|
|||
|
|
@ -19,3 +19,8 @@ helm upgrade argo-cd argo/argo-cd -n argo-cd -f k8s/helm/argo-cd/values.yaml
|
|||
```bash
|
||||
scripts/users.py add -u catalin -n cătălin -e catalin@roboces.dev
|
||||
```
|
||||
|
||||
## MetalLB and reserved VIPs
|
||||
|
||||
- traefik VIP: 192.168.1.127
|
||||
- adguard dns VIP: 192.168.1.125
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@ spec:
|
|||
service:
|
||||
dns:
|
||||
type: LoadBalancer
|
||||
port: 53
|
||||
annotations:
|
||||
metallb.universe.tf/address-pool: adguard-dns-pool
|
||||
loadBalancerIP: 192.168.1.125
|
||||
web:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8006
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ spec:
|
|||
helm:
|
||||
valuesObject:
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8081
|
||||
ingress:
|
||||
enabled: true
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ spec:
|
|||
cpu: 1
|
||||
memory: 1024Mi
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 9091
|
||||
ingress:
|
||||
enabled: true
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ spec:
|
|||
enabled: true
|
||||
minAvailable: 1
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
servicePortHttp: 9001
|
||||
servicePortHttps: 9444
|
||||
annotations:
|
||||
|
|
@ -72,7 +72,7 @@ spec:
|
|||
metrics:
|
||||
enabled: true
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
serviceMonitor:
|
||||
enabled: false
|
||||
ingress:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ spec:
|
|||
drop:
|
||||
- all
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8004
|
||||
ingress:
|
||||
enabled: true
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ spec:
|
|||
replicaCount: 1
|
||||
service:
|
||||
http:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
ssh:
|
||||
type: NodePort
|
||||
ingress:
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ spec:
|
|||
targetCPUUtilizationPercentage: 80
|
||||
targetMemoryUtilizationPercentage: 80
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8001
|
||||
targetPort: 4000
|
||||
ingress:
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ spec:
|
|||
drop:
|
||||
- all
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
config:
|
||||
database:
|
||||
hostname: "192.168.1.3"
|
||||
|
|
@ -96,7 +96,7 @@ spec:
|
|||
machineLearning:
|
||||
enabled: true
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
secret:
|
||||
enabled: true
|
||||
existingSecretName: "immich-secrets"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ spec:
|
|||
valuesObject:
|
||||
lldap:
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
httpPort: 17170
|
||||
ldapPort: 3890
|
||||
ingress:
|
||||
|
|
|
|||
25
k8s/argo-apps/metallb.yaml
Normal file
25
k8s/argo-apps/metallb.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: metallb
|
||||
namespace: argo-cd
|
||||
spec:
|
||||
destination:
|
||||
name: ''
|
||||
namespace: metallb-system
|
||||
server: https://kubernetes.default.svc
|
||||
sources:
|
||||
- repoURL: https://metallb.github.io/metallb
|
||||
chart: metallb
|
||||
targetRevision: 0.16.*
|
||||
helm:
|
||||
valuesObject:
|
||||
crds:
|
||||
enabled: true
|
||||
- repoURL: https://git.roboces.dev/catalin/fukuops.git
|
||||
path: k8s/services/metallb
|
||||
targetRevision: main
|
||||
project: management
|
||||
syncPolicy:
|
||||
automated: {}
|
||||
|
|
@ -27,7 +27,7 @@ spec:
|
|||
drop:
|
||||
- all
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "traefik"
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ spec:
|
|||
accessMode: ReadWriteMany
|
||||
size: 50Gi
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
config:
|
||||
server:
|
||||
port: 8086
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ spec:
|
|||
image:
|
||||
tag: "9.7"
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8010
|
||||
ingress:
|
||||
enabled: true
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ spec:
|
|||
helm:
|
||||
valuesObject:
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: NodePort
|
||||
httpPort: 9002
|
||||
httpsPort: 9445
|
||||
edgePort: 8005
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@ spec:
|
|||
api:
|
||||
enabled: true
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
persistence:
|
||||
storageClass: truenas-nfs-csi
|
||||
accessMode: ReadWriteMany
|
||||
dashboard:
|
||||
enabled: true
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8007
|
||||
ingress:
|
||||
enabled: true
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ spec:
|
|||
drop:
|
||||
- all
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "traefik"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ chart:
|
|||
tag: ""
|
||||
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
targetPort: 80
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ dokuwiki:
|
|||
securityContext: {}
|
||||
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8004
|
||||
targetPort: 8080
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ lldap:
|
|||
tag: "stable"
|
||||
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
httpPort: 17170
|
||||
ldapPort: 3890
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ oxicloud:
|
|||
tag: ""
|
||||
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8086
|
||||
|
||||
ingress:
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ vaultwarden:
|
|||
securityContext: {}
|
||||
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
port: 8008
|
||||
targetPort: 80
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ configs:
|
|||
|
||||
server:
|
||||
service:
|
||||
type: LoadBalancer
|
||||
type: ClusterIP
|
||||
servicePortHttp: 8002
|
||||
servicePortHttps: 8003
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ spec:
|
|||
server: https://kubernetes.default.svc
|
||||
- namespace: argo-workflows
|
||||
server: https://kubernetes.default.svc
|
||||
- namespace: metallb-system
|
||||
server: https://kubernetes.default.svc
|
||||
clusterResourceWhitelist:
|
||||
- group: '*'
|
||||
kind: '*'
|
||||
|
|
@ -26,3 +28,4 @@ spec:
|
|||
- https://democratic-csi.github.io/charts/
|
||||
- https://bitnami-labs.github.io/sealed-secrets
|
||||
- https://kubernetes-sigs.github.io/descheduler
|
||||
- https://metallb.github.io/metallb
|
||||
|
|
|
|||
9
k8s/services/metallb/l2advert-adguard.yaml
Normal file
9
k8s/services/metallb/l2advert-adguard.yaml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
metadata:
|
||||
name: adguard-dns-l2
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
ipAddressPools:
|
||||
- adguard-dns-pool
|
||||
9
k8s/services/metallb/l2advert-prod.yaml
Normal file
9
k8s/services/metallb/l2advert-prod.yaml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: L2Advertisement
|
||||
metadata:
|
||||
name: ingress-l2
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
ipAddressPools:
|
||||
- ingress-pool
|
||||
5
k8s/services/metallb/namespace.yaml
Normal file
5
k8s/services/metallb/namespace.yaml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: metallb-system
|
||||
10
k8s/services/metallb/pool-adguard.yaml
Normal file
10
k8s/services/metallb/pool-adguard.yaml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: IPAddressPool
|
||||
metadata:
|
||||
name: adguard-dns-pool
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
addresses:
|
||||
- 192.168.1.125/32
|
||||
autoAssign: false
|
||||
12
k8s/services/metallb/pool-prod.yaml
Normal file
12
k8s/services/metallb/pool-prod.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: IPAddressPool
|
||||
metadata:
|
||||
name: ingress-pool
|
||||
namespace: metallb-system
|
||||
spec:
|
||||
addresses:
|
||||
- 192.168.1.126/32
|
||||
# Only Traefik should get this IP. Other LoadBalancer services that are
|
||||
# not yet migrated will stay pending instead of stealing the single VIP.
|
||||
autoAssign: false
|
||||
Loading…
Add table
Add a link
Reference in a new issue