tested initial dev deployment to local k3d Reviewed-on: https://codeberg.org/headshed/infctl-cli/pulls/2 Co-authored-by: jon brookes <jon@headshed.dev> Co-committed-by: jon brookes <jon@headshed.dev>
174 lines
No EOL
3.5 KiB
Bash
Executable file
174 lines
No EOL
3.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
if kubectl -n kube-system get pods --no-headers 2>/dev/null | grep -q 'traefik'; then
|
|
echo "Traefik is already running in the 'kube-system' namespace. Upgrading instead."
|
|
|
|
# Create a temporary values file for more complex configuration
|
|
cat > /tmp/traefik-values.yaml <<EOF
|
|
ingressClass:
|
|
enabled: true
|
|
isDefaultClass: true
|
|
ports:
|
|
web:
|
|
port: 80
|
|
websecure:
|
|
port: 443
|
|
traefik:
|
|
port: 9000
|
|
turn-tcp:
|
|
port: 1194
|
|
exposedPort: 1194
|
|
protocol: TCP
|
|
turn-udp:
|
|
port: 1194
|
|
exposedPort: 1194
|
|
protocol: UDP
|
|
entryPoints:
|
|
turn-tcp:
|
|
address: ":1194/tcp"
|
|
turn-udp:
|
|
address: ":1194/udp"
|
|
api:
|
|
dashboard: true
|
|
insecure: true
|
|
ingressRoute:
|
|
dashboard:
|
|
enabled: true
|
|
ping: true
|
|
log:
|
|
level: INFO
|
|
# Add this service section to expose the ports properly
|
|
service:
|
|
enabled: true
|
|
type: LoadBalancer
|
|
annotations: {}
|
|
ports:
|
|
web:
|
|
port: 80
|
|
protocol: TCP
|
|
targetPort: web
|
|
websecure:
|
|
port: 443
|
|
protocol: TCP
|
|
targetPort: websecure
|
|
turn-tcp:
|
|
port: 1194
|
|
protocol: TCP
|
|
targetPort: turn-tcp
|
|
turn-udp:
|
|
port: 1194
|
|
protocol: UDP
|
|
targetPort: turn-udp
|
|
EOF
|
|
|
|
helm upgrade traefik traefik/traefik --namespace kube-system -f /tmp/traefik-values.yaml
|
|
|
|
else
|
|
echo "Installing Traefik..."
|
|
|
|
helm repo add traefik https://traefik.github.io/charts
|
|
helm repo update
|
|
|
|
# Create a temporary values file for more complex configuration
|
|
cat > /tmp/traefik-values.yaml <<EOF
|
|
ingressClass:
|
|
enabled: true
|
|
isDefaultClass: true
|
|
ports:
|
|
web:
|
|
port: 80
|
|
websecure:
|
|
port: 443
|
|
traefik:
|
|
port: 9000
|
|
turn-tcp:
|
|
port: 1194
|
|
exposedPort: 1194
|
|
protocol: TCP
|
|
turn-udp:
|
|
port: 1194
|
|
exposedPort: 1194
|
|
protocol: UDP
|
|
entryPoints:
|
|
turn-tcp:
|
|
address: ":1194/tcp"
|
|
turn-udp:
|
|
address: ":1194/udp"
|
|
api:
|
|
dashboard: true
|
|
insecure: true
|
|
ingressRoute:
|
|
dashboard:
|
|
enabled: true
|
|
ping: true
|
|
log:
|
|
level: INFO
|
|
# Add the service section here too for new installations
|
|
service:
|
|
enabled: true
|
|
type: LoadBalancer
|
|
annotations: {}
|
|
ports:
|
|
web:
|
|
port: 80
|
|
protocol: TCP
|
|
targetPort: web
|
|
websecure:
|
|
port: 443
|
|
protocol: TCP
|
|
targetPort: websecure
|
|
turn-tcp:
|
|
port: 1194
|
|
protocol: TCP
|
|
targetPort: turn-tcp
|
|
turn-udp:
|
|
port: 1194
|
|
protocol: UDP
|
|
targetPort: turn-udp
|
|
EOF
|
|
|
|
helm install traefik traefik/traefik --namespace kube-system -f /tmp/traefik-values.yaml
|
|
fi
|
|
|
|
|
|
|
|
# cat > traefik-turn-service.yaml << EOF
|
|
# apiVersion: v1
|
|
# kind: Service
|
|
# metadata:
|
|
# name: traefik-turn
|
|
# namespace: kube-system
|
|
# labels:
|
|
# app.kubernetes.io/instance: traefik-traefik
|
|
# app.kubernetes.io/name: traefik
|
|
# spec:
|
|
# type: LoadBalancer
|
|
# ports:
|
|
# - name: turn-tcp
|
|
# port: 1194
|
|
# protocol: TCP
|
|
# targetPort: turn-tcp
|
|
# - name: turn-udp
|
|
# port: 1194
|
|
# protocol: UDP
|
|
# targetPort: turn-udp
|
|
# selector:
|
|
# app.kubernetes.io/instance: traefik-traefik
|
|
# app.kubernetes.io/name: traefik
|
|
# EOF
|
|
|
|
# kubectl apply -f traefik-turn-service.yaml
|
|
|
|
# rm -f traefik-turn-service.yaml
|
|
|
|
|
|
|
|
|
|
|
|
# echo "Don't forget to create TCP and UDP ingress routes for the TURN server with:"
|
|
# echo "kubectl apply -f k8s-manifests/galene/ingressroute-tcp.yaml"
|
|
# echo "kubectl apply -f k8s-manifests/galene/ingressroute-udp.yaml"
|
|
# echo ""
|
|
echo "To access the dashboard:"
|
|
echo "kubectl port-forward -n kube-system \$(kubectl get pods -n kube-system -l \"app.kubernetes.io/name=traefik\" -o name) 9000:9000"
|
|
echo "Then visit http://localhost:9000/dashboard/ in your browser" |