initial bootstrap: argocd, metallb, envoy-gateway, nfs-provisioner

This commit is contained in:
2026-06-14 16:00:21 +07:00
commit c44c2f6736
15 changed files with 299 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: argocd
namespace: argocd
spec:
parentRefs:
- name: envoy-gateway
namespace: envoy-gateway-system
hostnames:
- "argocd.fireflylab.local"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: argocd-server
port: 80

View File

@@ -0,0 +1,23 @@
nameOverride: argocd
crds:
install: true
keep: true
annotations:
argocd.argoproj.io/sync-options: ServerSideApply=true
global:
domain: argocd.fireflylab.local
image:
repository: quay.io/argoproj/argocd
pullPolicy: IfNotPresent
logging:
format: text
level: info
configs:
params:
server.insecure: true # TLS terminated at Envoy Gateway
server:
replicas: 1

View File

@@ -0,0 +1,20 @@
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: EnvoyProxy
metadata:
name: envoy-daemon-proxy
namespace: envoy-gateway-system
spec:
provider:
type: Kubernetes
kubernetes:
envoyDaemonSet:
container:
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
memory: 1024Mi
envoyService:
type: LoadBalancer
externalTrafficPolicy: Cluster

View File

@@ -0,0 +1,19 @@
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: envoy-gateway
namespace: envoy-gateway-system
spec:
gatewayClassName: envoy-gateway-class
infrastructure:
parametersRef:
group: gateway.envoyproxy.io
kind: EnvoyProxy
name: envoy-daemon-proxy
listeners:
- name: http
port: 80
protocol: HTTP
allowedRoutes:
namespaces:
from: All

View File

@@ -0,0 +1,6 @@
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
name: envoy-gateway-class
spec:
controllerName: gateway.envoyproxy.io/gatewayclass-controller

View File

@@ -0,0 +1,31 @@
global:
images:
envoyGateway:
image: docker.io/envoyproxy/gateway:v1.7.1
pullPolicy: IfNotPresent
ratelimit:
image: docker.io/envoyproxy/ratelimit:c8765e89
pullPolicy: IfNotPresent
deployment:
replicas: 1
envoyGateway:
resources:
limits:
memory: 1024Mi
requests:
cpu: 100m
memory: 256Mi
service:
type: ClusterIP
config:
envoyGateway:
gateway:
controllerName: gateway.envoyproxy.io/gatewayclass-controller
provider:
type: Kubernetes
logging:
level:
default: info

View File

@@ -0,0 +1,9 @@
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: expensive
namespace: metallb-system
spec:
addresses:
- 192.168.1.30/32
autoAssign: true

View File

@@ -0,0 +1,8 @@
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2-advertisement
namespace: metallb-system
spec:
ipAddressPools:
- expensive

View File

@@ -0,0 +1,12 @@
controller:
enabled: true
logLevel: info
speaker:
enabled: true
logLevel: info
tolerateMaster: true
crds:
enabled: true
validationFailurePolicy: Fail

View File

@@ -0,0 +1,23 @@
nfs:
server: "<NFS_SERVER_IP>" # TODO: replace with xpen NAS IP
path: "<NFS_PATH>" # TODO: replace with NFS export path (e.g. /volume1/k8s)
mountOptions:
- nfsvers=4.1
storageClass:
name: nfs-delete
defaultClass: true
reclaimPolicy: Delete
archiveOnDelete: false
# Second StorageClass with Retain policy is created via extraObjects below
extraObjects:
- apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-retain
provisioner: cluster.local/nfs-subdir-external-provisioner
parameters:
archiveOnDelete: "false"
reclaimPolicy: Retain
volumeBindingMode: Immediate