feat: Expose Grafana, Prometheus, and Flux UI via Tailscale LoadBalancer services
Replace Ansible port-forwarding + tailscale serve with direct Tailscale LB services matching the existing Rancher pattern. Each service gets its own tailnet hostname (grafana/prometheus/flux.silverside-gopher.ts.net).
This commit is contained in:
@@ -109,18 +109,6 @@
|
|||||||
- role: observability-content
|
- role: observability-content
|
||||||
when: not (observability_gitops_enabled | default(true) | bool)
|
when: not (observability_gitops_enabled | default(true) | bool)
|
||||||
|
|
||||||
- name: Configure private tailnet access
|
|
||||||
hosts: control_plane[0]
|
|
||||||
become: true
|
|
||||||
vars:
|
|
||||||
private_access_grafana_port: 30080
|
|
||||||
private_access_prometheus_port: 30990
|
|
||||||
private_access_flux_port: 30901
|
|
||||||
private_access_rancher_port: 9442
|
|
||||||
|
|
||||||
roles:
|
|
||||||
- private-access
|
|
||||||
|
|
||||||
- name: Bootstrap Doppler access for External Secrets
|
- name: Bootstrap Doppler access for External Secrets
|
||||||
hosts: control_plane[0]
|
hosts: control_plane[0]
|
||||||
become: true
|
become: true
|
||||||
|
|||||||
18
infrastructure/addons/flux-ui/flux-tailscale-service.yaml
Normal file
18
infrastructure/addons/flux-ui/flux-tailscale-service.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: flux-tailscale
|
||||||
|
namespace: flux-system
|
||||||
|
annotations:
|
||||||
|
tailscale.com/hostname: flux
|
||||||
|
tailscale.com/proxy-class: infra-stable
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
loadBalancerClass: tailscale
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: weave-gitops
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 9001
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9001
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: flux-ui
|
|
||||||
namespace: flux-system
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: flux
|
|
||||||
spec:
|
|
||||||
ingressClassName: traefik
|
|
||||||
rules:
|
|
||||||
- http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: flux-system-weave-gitops
|
|
||||||
port:
|
|
||||||
number: 9001
|
|
||||||
@@ -4,4 +4,4 @@ resources:
|
|||||||
- cluster-user-auth-externalsecret.yaml
|
- cluster-user-auth-externalsecret.yaml
|
||||||
- gitrepository-weave-gitops.yaml
|
- gitrepository-weave-gitops.yaml
|
||||||
- helmrelease-weave-gitops.yaml
|
- helmrelease-weave-gitops.yaml
|
||||||
- ingress-flux-ui.yaml
|
- flux-tailscale-service.yaml
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ spec:
|
|||||||
path: ./infrastructure/addons/flux-ui
|
path: ./infrastructure/addons/flux-ui
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: addon-external-secrets
|
- name: addon-external-secrets
|
||||||
|
- name: addon-tailscale-operator
|
||||||
|
- name: addon-tailscale-proxyclass
|
||||||
wait: true
|
wait: true
|
||||||
timeout: 5m
|
timeout: 5m
|
||||||
suspend: false
|
suspend: false
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ spec:
|
|||||||
path: ./infrastructure/addons/observability
|
path: ./infrastructure/addons/observability
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- name: addon-external-secrets
|
- name: addon-external-secrets
|
||||||
|
- name: addon-tailscale-operator
|
||||||
|
- name: addon-tailscale-proxyclass
|
||||||
wait: true
|
wait: true
|
||||||
timeout: 5m
|
timeout: 5m
|
||||||
suspend: false
|
suspend: false
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: grafana-tailscale
|
||||||
|
namespace: observability
|
||||||
|
annotations:
|
||||||
|
tailscale.com/hostname: grafana
|
||||||
|
tailscale.com/proxy-class: infra-stable
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
loadBalancerClass: tailscale
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: grafana
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 3000
|
||||||
@@ -29,8 +29,8 @@ spec:
|
|||||||
password: admin123
|
password: admin123
|
||||||
grafana.ini:
|
grafana.ini:
|
||||||
server:
|
server:
|
||||||
root_url: http://observability/grafana/
|
root_url: http://grafana.silverside-gopher.ts.net/
|
||||||
serve_from_sub_path: true
|
serve_from_sub_path: false
|
||||||
persistence:
|
persistence:
|
||||||
enabled: true
|
enabled: true
|
||||||
storageClassName: local-path
|
storageClassName: local-path
|
||||||
@@ -50,8 +50,8 @@ spec:
|
|||||||
service:
|
service:
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
prometheusSpec:
|
prometheusSpec:
|
||||||
externalUrl: http://observability/prometheus/
|
externalUrl: http://prometheus.silverside-gopher.ts.net/
|
||||||
routePrefix: /prometheus/
|
routePrefix: /
|
||||||
retention: 7d
|
retention: 7d
|
||||||
storageSpec:
|
storageSpec:
|
||||||
volumeClaimTemplate:
|
volumeClaimTemplate:
|
||||||
|
|||||||
@@ -2,12 +2,10 @@ apiVersion: kustomize.config.k8s.io/v1beta1
|
|||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
- namespace.yaml
|
- namespace.yaml
|
||||||
# - grafana-admin-externalsecret.yaml # Using static password for stable baseline
|
|
||||||
# - traefik-tailscale-service.yaml # Deferred - complex dependency on tailscale operator
|
|
||||||
# - grafana-ingress.yaml # Deferred - requires tailscale service
|
|
||||||
# - prometheus-ingress.yaml # Deferred - requires tailscale service
|
|
||||||
- helmrepository-prometheus-community.yaml
|
- helmrepository-prometheus-community.yaml
|
||||||
- helmrepository-grafana.yaml
|
- helmrepository-grafana.yaml
|
||||||
- helmrelease-kube-prometheus-stack.yaml
|
- helmrelease-kube-prometheus-stack.yaml
|
||||||
- helmrelease-loki.yaml
|
- helmrelease-loki.yaml
|
||||||
- helmrelease-promtail.yaml
|
- helmrelease-promtail.yaml
|
||||||
|
- grafana-tailscale-service.yaml
|
||||||
|
- prometheus-tailscale-service.yaml
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: prometheus-tailscale
|
||||||
|
namespace: observability
|
||||||
|
annotations:
|
||||||
|
tailscale.com/hostname: prometheus
|
||||||
|
tailscale.com/proxy-class: infra-stable
|
||||||
|
spec:
|
||||||
|
type: LoadBalancer
|
||||||
|
loadBalancerClass: tailscale
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: prometheus
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 9090
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9090
|
||||||
Reference in New Issue
Block a user