Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions bin/y-cluster-converge-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -71,17 +71,9 @@ apply_base 08-buildkitd-grpcroute
k -n ystack get grpcroute buildkitd
echo "# Validated: grpcroute buildkitd exists"

# 7. Monitoring operator + CRDs
apply_base 30-monitoring-operator
echo "# Waiting for prometheus-operator CRDs to register ..."
until k get crd prometheuses.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd alertmanagers.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
until k get crd servicemonitors.monitoring.coreos.com >/dev/null 2>&1; do sleep 2; done
echo "# Validated: prometheus-operator CRDs registered"

# 8. Monitoring CRs (Prometheus, Alertmanager, exporters)
apply_base 31-monitoring
k -n monitoring get prometheus now
# 7. Monitoring (vanilla Prometheus + Alertmanager + exporters)
apply_base 30-monitoring
k -n monitoring rollout status deploy/prometheus-now --timeout=120s
echo "# Validated: monitoring stack exists"

# 6.8 Prometheus HTTPRoute
Expand Down
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-k3d
Original file line numberDiff line numberDiff line change
Expand Up@@ -129,5 +129,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
docker exec k3d-ystack-server-0 sh -cex "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
docker exec k3d-ystack-server-0 sh -cex "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip "${YSTACK_PORTS_IP:-127.0.0.1}"
fi
7 changes: 5 additions & 2 deletions bin/y-cluster-provision-lima
Original file line numberDiff line numberDiff line change
Expand Up@@ -122,5 +122,8 @@ PROD_REGISTRY_IP=$(kubectl --context=$CTX -n ystack get service prod-registry -o
limactl shell ystack sudo sh -c "echo '$BUILDS_REGISTRY_IP builds-registry.ystack.svc.cluster.local' >> /etc/hosts"
limactl shell ystack sudo sh -c "echo '$PROD_REGISTRY_IP prod-registry.ystack.svc.cluster.local' >> /etc/hosts"

echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
echo "# Checking /etc/hosts ..."
if ! y-k8s-ingress-hosts --context=$CTX -check -override-ip 127.0.0.1; then
echo "# Updating /etc/hosts (requires sudo) ..."
y-k8s-ingress-hosts --context=$CTX -write -override-ip 127.0.0.1
fi
8 changes: 4 additions & 4 deletions bin/y-cluster-validate-ystack
Original file line numberDiff line numberDiff line change
Expand Up@@ -82,10 +82,10 @@ k -n ystack get grpcroute buildkitd >/dev/null 2>&1 \
&& report "grpcroute buildkitd" "ok" \
|| report "grpcroute buildkitd" "not found"

# 7.6 Monitoring stack
k -n monitoring get prometheus now >/dev/null 2>&1 \
&& report "prometheusnow" "ok" \
|| report "prometheusnow" "not found"
# 7.6 Monitoring stack (vanilla Prometheus deployment)
ROLLOUT_PROM=$(k -n monitoring rollout status deploy/prometheus-now --timeout=10s 2>&1) \
&& report "prometheus-now rollout" "ok" \
|| report "prometheus-now rollout" "$ROLLOUT_PROM"

# 7.7 Prometheus HTTPRoute
k -n monitoring get httproute prometheus-now >/dev/null 2>&1 \
Expand Down
6 changes: 6 additions & 0 deletions k3s/30-monitoring/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
resources:
- ../../monitoring/namespace
- ../../monitoring/prometheus-now
- ../../monitoring/alertmanager-main
- ../../monitoring/kube-state-metrics-now
- ../../monitoring/node-exporter-now
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,4 +9,5 @@ spec:
protocol: TCP
targetPort: web
selector:
alertmanager: main
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
60 changes: 57 additions & 3 deletions monitoring/alertmanager-main/main-alertmanager.yaml
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,60 @@
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
apiVersion: apps/v1
kind: Deployment
metadata:
name: main
name: alertmanager-main
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
template:
metadata:
labels:
app.kubernetes.io/name: alertmanager
app.kubernetes.io/instance: main
spec:
securityContext:
runAsUser: 65534
runAsGroup: 65534
runAsNonRoot: true
fsGroup: 65534
containers:
- name: alertmanager
image: quay.io/prometheus/alertmanager:v0.28.1
args:
- --config.file=/etc/alertmanager/alertmanager.yaml
- --storage.path=/data
ports:
- name: web
containerPort: 9093
readinessProbe:
httpGet:
path: /-/ready
port: web
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /-/healthy
port: web
initialDelaySeconds: 15
resources:
requests:
cpu: 10m
memory: 32Mi
limits:
memory: 64Mi
volumeMounts:
- name: config
mountPath: /etc/alertmanager
- name: data
mountPath: /data
volumes:
- name: config
secret:
secretName: alertmanager-main
- name: data
emptyDir: {}
35 changes: 35 additions & 0 deletions monitoring/greptimedb/bucket-create.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
name: bucket-create-greptimedb
spec:
template:
spec:
containers:
- name: mc
image: minio/mc:RELEASE.2025-08-13T08-35-41Z
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: minio
key: accesskey
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: minio
key: secretkey
- name: BUCKET_NAME
value: greptimedb
- name: S3_ENDPOINT
value: http://blobs-versitygw.ystack.svc.cluster.local
command:
- sh
- -ce
- |
until mc alias set s3 $S3_ENDPOINT $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY 2>/dev/null; do
sleep 2
done
mc mb --ignore-existing s3/$BUCKET_NAME
restartPolicy: Never
backoffLimit: 10
7 changes: 7 additions & 0 deletions monitoring/greptimedb/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
[storage]
type = "S3"
bucket = "greptimedb"
endpoint = "http://blobs-versitygw.ystack.svc.cluster.local"
access_key_id = "YstackEXAMPLEKEY"
secret_access_key = "github.com/Yolean/ystack-EXAMPLE"
region = "us-east-1"
72 changes: 72 additions & 0 deletions monitoring/greptimedb/greptimedb.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
apiVersion: v1
kind: Service
metadata:
name: greptimedb
spec:
ports:
- name: http
port: 4000
targetPort: http
- name: grpc
port: 4001
targetPort: grpc
selector:
app: greptimedb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: greptimedb
labels:
app: greptimedb
spec:
replicas: 1
selector:
matchLabels:
app: greptimedb
template:
metadata:
labels:
app: greptimedb
spec:
containers:
- name: greptimedb
image: greptime/greptimedb:v0.12.0
args:
- standalone
- start
- --config-file=/etc/greptimedb/config.toml
- --http-addr=0.0.0.0:4000
- --rpc-addr=0.0.0.0:4001
ports:
- name: http
containerPort: 4000
- name: grpc
containerPort: 4001
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
memory: 768Mi
volumeMounts:
- name: data
mountPath: /tmp/greptimedb
- name: config
mountPath: /etc/greptimedb
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: greptimedb-config
22 changes: 22 additions & 0 deletions monitoring/greptimedb/kustomization.yaml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: monitoring

resources:
- greptimedb.yaml
- bucket-create.yaml

generatorOptions:
disableNameSuffixHash: true

secretGenerator:
- name: minio
literals:
- accesskey=YstackEXAMPLEKEY
- secretkey=github.com/Yolean/ystack-EXAMPLE

configMapGenerator:
- name: greptimedb-config
files:
- config.toml
9 changes: 0 additions & 9 deletions monitoring/kube-state-metrics-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,12 +5,3 @@ namespace: monitoring

resources:
- ../kube-state-metrics

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kube-state-metrics
labels:
prometheus: now
1 change: 0 additions & 1 deletion monitoring/kube-state-metrics/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,4 +7,3 @@ resources:
- deployment.yaml
- service-account.yaml
- service.yaml
- kube-state-metrics-servicemonitor.yaml
16 changes: 0 additions & 16 deletions monitoring/node-exporter-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,19 +5,3 @@ namespace: monitoring

resources:
- ../node-exporter

patchesStrategicMerge:
- |-
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: node-exporter
labels:
prometheus: now
- |-
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: node-exporter
labels:
prometheus: now
2 changes: 0 additions & 2 deletions monitoring/node-exporter/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -3,5 +3,3 @@ resources:
- node-exporter-clusterRole.yaml
- node-exporter-clusterRoleBinding.yaml
- node-exporter-daemonset.yaml
- node-exporter-podmonitor.yaml
- example-rules.yaml
11 changes: 11 additions & 0 deletions monitoring/prometheus-now/kustomization.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,3 +7,14 @@ resources:
- ../rbac-prometheus
- now-prometheus-service.yaml
- now-prometheus.yaml

generatorOptions:
disableNameSuffixHash: true

configMapGenerator:
- name: prometheus-now-config
files:
- prometheus.yml
- name: prometheus-now-rules
files:
- rules/node-exporter.yml
2 changes: 1 addition & 1 deletion monitoring/prometheus-now/now-prometheus-service.yaml
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,4 @@ spec:
targetPort: web
selector:
app.kubernetes.io/name: prometheus
prometheus: now
app.kubernetes.io/instance: now
Loading