Ports the rest of the homelab's stack: external-secrets, harbor, jenkins, postgresql, redis, victoria-metrics-single, vmagent, node-exporter and grafana. All nine verified with helm template. Most are the homelab's values with storage moved from local-path to standard-rwo and hostnames rebuilt on the reserved ingress IP. vmagent and node-exporter are unchanged outright — everything in them is addressed by cluster DNS, namespace or container port, none of which differs here. Harbor is the substantial one. The homelab serves it over plain HTTP and makes containerd accept that by hand-editing hosts.toml on the node; GKE nodes are managed and replaced, so that edit cannot survive. Instead the node pool was told at creation to trust a private CA for exactly this hostname, and cert-manager now signs Harbor's certificate from that same CA via an ingress-shim annotation. certSource is "secret" rather than the chart's "auto", which would self-sign a certificate nothing trusts. externalURL moves to https to match, since Harbor hands that URL to docker clients and a mismatch surfaces as registry errors. Jenkins drops secondaryingress, which exists in the homelab only to serve its Tailscale hostname. Its plugin pins are carried over deliberately: each fixes a failure whose symptom points somewhere else, above all the kubernetes/kubernetes-client-api pairing, without which agents never come online and builds hang at "Still waiting to schedule task". Postgres and Redis keep the homelab's deliberately small memory settings. Those were chosen for an 8GB node under pressure, and while this cluster has room, a bigger cache buys nothing for a handful of small tools. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LEsTefWWifp4ikvhHF5s6N
71 lines
2.7 KiB
YAML
71 lines
2.7 KiB
YAML
victoria-metrics-agent:
|
|
# Unchanged from the homelab's, deliberately: everything here is
|
|
# addressed by cluster-internal Service DNS and namespace, none of which
|
|
# differs on GKE.
|
|
#
|
|
# The write path is what wires the two components together; the chart
|
|
# names do not imply it on their own.
|
|
remoteWrite:
|
|
- url: http://victoria-metrics-single-server.monitoring.svc.cluster.local:8428/api/v1/write
|
|
|
|
# config.scrape_configs stays at the chart's default, which already
|
|
# covers kubelet's cAdvisor endpoint and the prometheus.io/scrape
|
|
# annotation convention. extraScrapeConfigs is concatenated onto it
|
|
# rather than replacing it.
|
|
#
|
|
# Both jobs below exist because annotation-based discovery did not reach
|
|
# these targets in the homelab. Contour's Envoy carries no scrape
|
|
# annotation at all, and node-exporter's annotation sits on its Service,
|
|
# where the endpointslice discovery path found nothing. Targeting each by
|
|
# its fixed container port sidesteps both problems and is no less
|
|
# correct. Worth re-checking on this cluster rather than assuming the
|
|
# same gaps: if the defaults do find them here, these jobs are harmless
|
|
# duplicates, not errors.
|
|
extraScrapeConfigs:
|
|
- job_name: contour-envoy
|
|
kubernetes_sd_configs:
|
|
- role: pod
|
|
namespaces:
|
|
names: ["projectcontour"]
|
|
relabel_configs:
|
|
# 8002 is the official Contour chart's fixed metrics port for
|
|
# Envoy. /stats/prometheus is Envoy's own admin endpoint, not
|
|
# anything Contour-specific.
|
|
- action: keep
|
|
source_labels: [__meta_kubernetes_pod_container_port_number]
|
|
regex: "8002"
|
|
- target_label: __metrics_path__
|
|
replacement: /stats/prometheus
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_pod_label_(.+)
|
|
- source_labels: [__meta_kubernetes_pod_name]
|
|
target_label: pod
|
|
- source_labels: [__meta_kubernetes_namespace]
|
|
target_label: namespace
|
|
- source_labels: [__meta_kubernetes_pod_node_name]
|
|
target_label: node
|
|
- job_name: node-exporter
|
|
kubernetes_sd_configs:
|
|
- role: pod
|
|
namespaces:
|
|
names: ["monitoring"]
|
|
relabel_configs:
|
|
- action: keep
|
|
source_labels: [__meta_kubernetes_pod_container_port_number]
|
|
regex: "9100"
|
|
- action: labelmap
|
|
regex: __meta_kubernetes_pod_label_(.+)
|
|
- source_labels: [__meta_kubernetes_pod_name]
|
|
target_label: pod
|
|
- source_labels: [__meta_kubernetes_namespace]
|
|
target_label: namespace
|
|
- source_labels: [__meta_kubernetes_pod_node_name]
|
|
target_label: node
|
|
|
|
resources:
|
|
requests:
|
|
cpu: 25m
|
|
memory: 64Mi
|
|
limits:
|
|
memory: 192Mi
|