Compare commits

..

1 Commits

258 changed files with 5854 additions and 2582 deletions

View File

@ -1,17 +0,0 @@
---
extends: default
ignore: |
.yamllint
rules:
truthy:
allowed-values: ['true', 'false']
check-keys: False
level: error
line-length: disable
document-start: disable
comments:
min-spaces-from-content: 1
braces:
max-spaces-inside: 2

56
admin/hooks-1.31.sh Normal file
View File

@ -0,0 +1,56 @@
### v1.31
# All things BEFORE the first controller / control plane upgrade
pre_control_plane_upgrade_cluster() {
# add kubezero version label to existing controller nodes for aws-iam migration
for n in $(kubectl get nodes -l "node-role.kubernetes.io/control-plane=" | grep v1.30 | awk {'print $1}'); do
kubectl label node $n 'node.kubernetes.io/kubezero.version=v1.30.6' || true
done
# patch aws-iam-authenticator DS to NOT run pods on 1.31 controllers
kubectl patch ds aws-iam-authenticator -n kube-system -p '{"spec": {"template": {"spec": {"nodeSelector": {"node.kubernetes.io/kubezero.version": "v1.30.6"}}}}}' || true
}
# All things after the first controller / control plane upgrade
post_control_plane_upgrade_cluster() {
# delete previous root app controlled by kubezero module
kubectl delete application kubezero-git-sync -n argocd || true
# only patch appproject to keep SyncWindow in place
kubectl patch appproject kubezero -n argocd --type json -p='[{"op": "remove", "path": "/metadata/labels"}]' || true
kubectl patch appproject kubezero -n argocd --type json -p='[{"op": "remove", "path": "/metadata/annotations"}]' || true
}
# All things AFTER all contollers are on the new version
pre_cluster_upgrade_final() {
set +e
if [ "$PLATFORM" == "aws" ];then
# cleanup aws-iam-authenticator
kubectl delete clusterrolebinding aws-iam-authenticator
kubectl delete clusterrole aws-iam-authenticator
kubectl delete serviceaccount aws-iam-authenticator -n kube-system
kubectl delete cm aws-iam-authenticator -n kube-system
kubectl delete ds aws-iam-authenticator -n kube-system
kubectl delete IAMIdentityMapping kubezero-worker-nodes
kubectl delete IAMIdentityMapping kubernetes-admin
kubectl delete crd iamidentitymappings.iamauthenticator.k8s.aws
kubectl delete secret aws-iam-certs -n kube-system
fi
# Remove any helm hook related resources
kubectl delete rolebinding argo-argocd-redis-secret-init -n argocd
kubectl delete sa argo-argocd-redis-secret-init -n argocd
kubectl delete role argo-argocd-redis-secret-init -n argocd
kubectl delete job argo-argocd-redis-secret-init -n argocd
set -e
}
# Last call
post_cluster_upgrade_final() {
echo
}

View File

@ -2,13 +2,7 @@
# All things BEFORE the first controller / control plane upgrade
pre_control_plane_upgrade_cluster() {
if [ "$PLATFORM" != "gke" ];then
# patch multus DS to ONLY run pods on 1.31 controllers
kubectl patch ds kube-multus-ds -n kube-system -p '{"spec": {"template": {"spec": {"nodeSelector": {"node.kubernetes.io/kubezero.version": "v1.31.6"}}}}}' || true
# patch kube-proxy DS to ONLY run pods on 1.31 controllers
kubectl patch ds kube-proxy -n kube-system -p '{"spec": {"template": {"spec": {"nodeSelector": {"node.kubernetes.io/kubezero.version": "v1.31.6"}}}}}' || true
fi
echo
}
@ -22,20 +16,7 @@ post_control_plane_upgrade_cluster() {
pre_cluster_upgrade_final() {
set +e
if [ "$PLATFORM" != "gke" ];then
# cleanup multus
kubectl delete clusterrolebinding multus
kubectl delete clusterrole multus
kubectl delete serviceaccount multus -n kube-system
kubectl delete cm multus-cni-config -n kube-system
kubectl delete ds kube-multus-ds -n kube-system
kubectl delete NetworkAttachmentDefinition cilium
kubectl delete crd network-attachment-definitions.k8s.cni.cncf.io
# remove kube-proxy
kubectl -n kube-system delete ds kube-proxy
kubectl -n kube-system delete cm kube-proxy
fi
echo
set -e
}

View File

@ -63,7 +63,7 @@ render_kubeadm() {
# Assemble kubeadm config
cat /dev/null > ${HOSTFS}/etc/kubernetes/kubeadm.yaml
for f in Cluster Kubelet; do
for f in Cluster KubeProxy Kubelet; do
# echo "---" >> /etc/kubernetes/kubeadm.yaml
cat ${WORKDIR}/kubeadm/templates/${f}Configuration.yaml >> ${HOSTFS}/etc/kubernetes/kubeadm.yaml
done
@ -169,7 +169,7 @@ kubeadm_upgrade() {
else
pre_cluster_upgrade_final
_kubeadm upgrade apply phase addon coredns $KUBE_VERSION
_kubeadm upgrade apply phase addon all $KUBE_VERSION
post_cluster_upgrade_final
@ -239,7 +239,7 @@ control_plane_node() {
if [[ "$CMD" =~ ^(join)$ ]]; then
# Delete any former self in case forseti did not delete yet
kubectl delete node ${NODENAME} --wait=true || true
# Wait for all pods to be deleted otherwise we end up with stale pods
# Wait for all pods to be deleted otherwise we end up with stale pods eg. kube-proxy and all goes to ....
kubectl delete pods -n kube-system --field-selector spec.nodeName=${NODENAME}
# get current running etcd pods for etcdctl commands
@ -251,7 +251,7 @@ control_plane_node() {
done
# see if we are a former member and remove our former self if so
MY_ID=$(etcdctl member list --endpoints=$etcd_endpoints | grep $ETCD_NODENAME | awk '{print $1}' | sed -e 's/,$//' || true)
MY_ID=$(etcdctl member list --endpoints=$etcd_endpoints | grep $ETCD_NODENAME | awk '{print $1}' | sed -e 's/,$//')
[ -n "$MY_ID" ] && retry 12 5 5 etcdctl member remove $MY_ID --endpoints=$etcd_endpoints
# flush etcd data directory as joining with previous storage seems flaky, especially during etcd version upgrades
@ -309,9 +309,8 @@ control_plane_node() {
_kubeadm init phase mark-control-plane
_kubeadm init phase kubelet-finalize all
# we skip kube-proxy
if [[ "$CMD" =~ ^(bootstrap|restore)$ ]]; then
_kubeadm init phase addon coredns
_kubeadm init phase addon all
fi
post_kubeadm
@ -334,11 +333,10 @@ apply_module() {
done
for t in $MODULES; do
# apply/replace app of apps directly, if fails eg. new module added try server-side apply
# apply/replace app of apps directly
if [ $t == "kubezero" ]; then
[ -f $CHARTS/kubezero/hooks.d/pre-install.sh ] && . $CHARTS/kubezero/hooks.d/pre-install.sh
kubectl replace -f $WORKDIR/kubezero/templates $(field_manager $ARGOCD) || \
kubectl apply -f $WORKDIR/kubezero/templates --server-side --force-conflicts $(field_manager $ARGOCD)
kubectl replace -f $WORKDIR/kubezero/templates $(field_manager $ARGOCD)
else
_helm apply $t
fi

View File

@ -3,7 +3,6 @@
# Simulate well-known CRDs being available
API_VERSIONS="-a monitoring.coreos.com/v1 -a snapshot.storage.k8s.io/v1 -a policy/v1/PodDisruptionBudget -a apiregistration.k8s.io/v1"
LOCAL_DEV=${LOCAL_DEV:-""}
ENV_VALUES=""
export HELM_SECRETS_BACKEND="vals"
@ -81,19 +80,15 @@ function get_kubezero_secret() {
get_secret_val kubezero kubezero-secrets "$1"
}
function ensure_kubezero_secret_key() {
local ns=$1
local secret=$2
local secret="$(kubectl get secret -n kubezero kubezero-secrets -o yaml)"
local key=""
local val=""
local secret="$(kubectl get secret -n $ns $secret -o yaml)"
local key
local val
for key in $1; do
val=$(echo $secret | yq ".data.\"$key\"")
for key in $@; do
val=$(echo "$secret" | yq ".data.\"$key\"")
if [ "$val" == "null" ]; then
set_kubezero_secret $key ""
kubectl patch secret -n kubezero kubezero-secrets --patch="{\"data\": { \"$key\": \"\" }}"
fi
done
}
@ -215,7 +210,7 @@ for manifest in yaml.safe_load_all(sys.stdin):
# helm template | kubectl apply -f -
# confine to one namespace if possible
function render() {
helm secrets --evaluate-templates template $(chart_location $chart) -n $namespace --name-template $module $targetRevision --skip-tests --skip-crds -f $WORKDIR/values.yaml $API_VERSIONS --kube-version $KUBE_VERSION $ENV_VALUES \
helm secrets --evaluate-templates template $(chart_location $chart) -n $namespace --name-template $module $targetRevision --skip-tests --skip-crds -f $WORKDIR/values.yaml $API_VERSIONS --kube-version $KUBE_VERSION $@ \
| python3 -c '
#!/usr/bin/python3
import yaml
@ -267,11 +262,6 @@ function _helm() {
crds
elif [ $action == "dryrun" ]; then
cat $WORKDIR/values.yaml
render
cat $WORKDIR/helm.yaml
elif [ $action == "apply" -o $action == "replace" ]; then
echo "using values to $action of module $module: "
cat $WORKDIR/values.yaml

View File

@ -8,24 +8,18 @@ import yaml
def migrate(values):
"""Actual changes here"""
# 1.32
values["network"]["enabled"] = True
values["addons"]["enabled"] = True
# migrate kubezero root app of apps to Argo chart
try:
values["policy"] = {"enabled": True}
except KeyError:
pass
if values["kubezero"]:
try:
values["kubezero"].pop("syncPolicy")
except KeyError:
pass
values["kubezero"]["gitSync"]["repoUrl"] = values["kubezero"]["gitSync"].pop("repoURL")
try:
values["istio-ingress"]["gateway"]["service"]["extraPorts"] = values["istio-ingress"]["gateway"]["service"]["ports"]
values["istio-ingress"]["gateway"]["service"].pop("ports")
except KeyError:
pass
values["argo"]["argo-cd"]["kubezero"] = values["kubezero"]["gitSync"]
try:
values["istio-private-ingress"]["gateway"]["service"]["extraPorts"] = values["istio-private-ingress"]["gateway"]["service"]["ports"]
values["istio-private-ingress"]["gateway"]["service"].pop("ports")
values.pop("kubezero")
except KeyError:
pass

View File

@ -2,7 +2,7 @@
set -eE
set -o pipefail
KUBE_VERSION=v1.32
KUBE_VERSION=v1.31
ARGO_APP=${1:-/tmp/new-kubezero-argoapp.yaml}
@ -29,14 +29,17 @@ admin_job "upgrade_control_plane, upgrade_kubezero"
#read -r
# upgrade modules
admin_job "apply_kubezero, apply_network"
admin_job "apply_kubezero, apply_network, apply_addons, apply_storage, apply_operators"
echo "Checking that all pods in kube-system are running ..."
waitSystemPodsRunning
echo "Applying remaining KubeZero modules..."
admin_job "apply_policy, apply_addons, apply_storage, apply_operators, apply_cert-manager, apply_istio, apply_istio-ingress, apply_istio-private-ingress, apply_logging, apply_metrics, apply_telemetry, apply_argo"
admin_job "apply_cert-manager, apply_istio, apply_istio-ingress, apply_istio-private-ingress, apply_logging, apply_metrics, apply_telemetry, apply_argo"
# we replace the project during v1.31 so disable again
[ "$ARGOCD" == "true" ] && disable_argo
# Final step is to commit the new argocd kubezero app
kubectl get app kubezero -n argocd -o yaml | yq 'del(.status) | del(.metadata) | del(.operation) | .metadata.name="kubezero" | .metadata.namespace="argocd"' | yq 'sort_keys(..)' > $ARGO_APP

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubeadm
description: KubeZero Kubeadm cluster config
type: application
version: 1.32.5
version: 1.32.3
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:

View File

@ -47,6 +47,7 @@ Kubernetes: `>= 1.32.0-0`
- https://pkg.go.dev/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3
- https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubelet/config/v1beta1/types.go
- https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/
- https://godoc.org/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration
- https://github.com/awslabs/amazon-eks-ami

View File

@ -22,6 +22,7 @@
- https://pkg.go.dev/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta3
- https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubelet/config/v1beta1/types.go
- https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/
- https://godoc.org/k8s.io/kube-proxy/config/v1alpha1#KubeProxyConfiguration
- https://github.com/awslabs/amazon-eks-ami

View File

@ -29,6 +29,12 @@ kind: Policy
rules:
# The following requests were manually identified as high-volume and low-risk,
# so drop them.
- level: None
users: ["system:kube-proxy"]
verbs: ["watch"]
resources:
- group: "" # core
resources: ["endpoints", "services", "services/status"]
- level: None
# Ingress controller reads 'configmaps/ingress-uid' through the unsecured port.
# TODO(#46983): Change this to the ingress controller service account.

View File

@ -6,8 +6,6 @@ featureGates:
ControlPlaneKubeletLocalMode: true
NodeLocalCRISocket: true
controlPlaneEndpoint: {{ .Values.api.endpoint }}
proxy:
disabled: true
networking:
podSubnet: 10.244.0.0/16
etcd:

View File

@ -7,8 +7,6 @@ localAPIEndpoint:
patches:
directory: {{ . }}
{{- end }}
skipPhases:
- addon/kube-proxy
nodeRegistration:
criSocket: "unix:///run/containerd/containerd.sock"
ignorePreflightErrors:

View File

@ -0,0 +1,10 @@
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
# kube-proxy doesnt really support setting dynamic bind-address via config, replaced by cilium long-term anyways
metricsBindAddress: "0.0.0.0:10249"
mode: "iptables"
logging:
format: json
iptables:
localhostNodePorts: false
#nodePortAddresses: primary

View File

@ -3,6 +3,12 @@ kind: Policy
rules:
# The following requests were manually identified as high-volume and low-risk,
# so drop them.
- level: None
users: ["system:kube-proxy"]
verbs: ["watch"]
resources:
- group: "" # core
resources: ["endpoints", "services", "services/status"]
- level: None
# Ingress controller reads 'configmaps/ingress-uid' through the unsecured port.
# TODO(#46983): Change this to the ingress controller service account.
@ -108,7 +114,7 @@ rules:
# Get responses can be large; skip them.
- level: Request
verbs: ["get", "list", "watch"]
resources:
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apiextensions.k8s.io"
@ -131,7 +137,7 @@ rules:
- "RequestReceived"
# Default level for known APIs
- level: RequestResponse
resources:
resources:
- group: "" # core
- group: "admissionregistration.k8s.io"
- group: "apiextensions.k8s.io"

View File

@ -5,8 +5,8 @@ spec:
- name: coredns
resources:
requests:
cpu: 50m
memory: 48Mi
cpu: 100m
memory: 32Mi
limits:
memory: 128Mi
nodeSelector:

View File

@ -4,5 +4,5 @@ spec:
- name: kube-apiserver
resources:
requests:
cpu: 200m
memory: 1536Mi
cpu: 250m
memory: 1268Mi

View File

@ -3,5 +3,5 @@ spec:
- name: kube-controller-manager
resources:
requests:
cpu: 30m
memory: 128Mi
cpu: 50m
memory: 192Mi

View File

@ -3,5 +3,5 @@ spec:
- name: kube-scheduler
resources:
requests:
cpu: 30m
memory: 64Mi
cpu: 50m
memory: 96Mi

View File

@ -2,8 +2,8 @@ apiVersion: v2
name: kubezero-addons
description: KubeZero umbrella chart for various optional cluster addons
type: application
version: 0.8.15
appVersion: v1.32
version: 0.8.14
appVersion: v1.31
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -34,7 +34,7 @@ dependencies:
repository: https://nvidia.github.io/k8s-device-plugin
condition: nvidia-device-plugin.enabled
- name: neuron-helm-chart
version: 1.1.2
version: 1.1.1
# https://github.com/aws-neuron/neuron-helm-charts/tree/main/charts/neuron-helm-chart
repository: oci://public.ecr.aws/neuron #/neuron-helm-chart
condition: neuron-helm-chart.enabled
@ -43,7 +43,7 @@ dependencies:
repository: https://bitnami-labs.github.io/sealed-secrets
condition: sealed-secrets.enabled
- name: aws-node-termination-handler
version: 0.27.1
version: 0.27.0
repository: "oci://public.ecr.aws/aws-ec2/helm"
condition: aws-node-termination-handler.enabled
- name: aws-eks-asg-rolling-update-handler
@ -54,4 +54,4 @@ dependencies:
version: 0.3.2
repository: https://caas-team.github.io/helm-charts/
condition: py-kube-downscaler.enabled
kubeVersion: ">= 1.31.0-0"
kubeVersion: ">= 1.30.0-0"

View File

@ -1,6 +1,6 @@
# kubezero-addons
![Version: 0.8.15](https://img.shields.io/badge/Version-0.8.15-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.32](https://img.shields.io/badge/AppVersion-v1.32-informational?style=flat-square)
![Version: 0.8.14](https://img.shields.io/badge/Version-0.8.14-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.31](https://img.shields.io/badge/AppVersion-v1.31-informational?style=flat-square)
KubeZero umbrella chart for various optional cluster addons
@ -14,7 +14,7 @@ KubeZero umbrella chart for various optional cluster addons
## Requirements
Kubernetes: `>= 1.31.0-0`
Kubernetes: `>= 1.30.0-0`
| Repository | Name | Version |
|------------|------|---------|
@ -24,8 +24,8 @@ Kubernetes: `>= 1.31.0-0`
| https://kubernetes.github.io/autoscaler | cluster-autoscaler | 9.46.6 |
| https://nvidia.github.io/k8s-device-plugin | nvidia-device-plugin | 0.17.1 |
| https://twin.github.io/helm-charts | aws-eks-asg-rolling-update-handler | 1.5.0 |
| oci://public.ecr.aws/aws-ec2/helm | aws-node-termination-handler | 0.27.1 |
| oci://public.ecr.aws/neuron | neuron-helm-chart | 1.1.2 |
| oci://public.ecr.aws/aws-ec2/helm | aws-node-termination-handler | 0.27.0 |
| oci://public.ecr.aws/neuron | neuron-helm-chart | 1.1.1 |
# MetalLB

View File

@ -1,5 +1,5 @@
apiVersion: v2
appVersion: 1.25.1
appVersion: 1.25.0
description: A Helm chart for the AWS Node Termination Handler.
home: https://github.com/aws/aws-node-termination-handler/
icon: https://raw.githubusercontent.com/aws/eks-charts/master/docs/logo/aws.png
@ -21,4 +21,4 @@ name: aws-node-termination-handler
sources:
- https://github.com/aws/aws-node-termination-handler/
type: application
version: 0.27.1
version: 0.27.0

View File

@ -1,7 +1,7 @@
apiVersion: v2
description: KubeZero Argo - Events, Workflow, CD
name: kubezero-argo
version: 0.4.1
version: 0.3.3
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -22,11 +22,11 @@ dependencies:
repository: https://argoproj.github.io/argo-helm
condition: argo-events.enabled
- name: argo-cd
version: 8.0.14
version: 7.9.0
repository: https://argoproj.github.io/argo-helm
condition: argo-cd.enabled
- name: argocd-image-updater
version: 0.12.2
version: 0.12.1
repository: https://argoproj.github.io/argo-helm
condition: argocd-image-updater.enabled
kubeVersion: ">= 1.30.0-0"

View File

@ -1,6 +1,6 @@
# kubezero-argo
![Version: 0.4.1](https://img.shields.io/badge/Version-0.4.1-informational?style=flat-square)
![Version: 0.3.3](https://img.shields.io/badge/Version-0.3.3-informational?style=flat-square)
KubeZero Argo - Events, Workflow, CD
@ -18,9 +18,9 @@ Kubernetes: `>= 1.30.0-0`
| Repository | Name | Version |
|------------|------|---------|
| https://argoproj.github.io/argo-helm | argo-cd | 8.0.14 |
| https://argoproj.github.io/argo-helm | argo-cd | 7.9.0 |
| https://argoproj.github.io/argo-helm | argo-events | 2.4.15 |
| https://argoproj.github.io/argo-helm | argocd-image-updater | 0.12.2 |
| https://argoproj.github.io/argo-helm | argocd-image-updater | 0.12.1 |
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
## Values
@ -28,16 +28,17 @@ Kubernetes: `>= 1.30.0-0`
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| argo-cd.configs.cm."application.instanceLabelKey" | string | `nil` | |
| argo-cd.configs.cm."application.resourceTrackingMethod" | string | `"annotation"` | |
| argo-cd.configs.cm."resource.customizations" | string | `"argoproj.io/Application:\n health.lua: |\n hs = {}\n hs.status = \"Progressing\"\n hs.message = \"\"\n if obj.status ~= nil then\n if obj.status.health ~= nil then\n hs.status = obj.status.health.status\n if obj.status.health.message ~= nil then\n hs.message = obj.status.health.message\n end\n end\n end\n return hs\n"` | |
| argo-cd.configs.cm."server.rbac.log.enforce.enable" | string | `nil` | |
| argo-cd.configs.cm."timeout.reconciliation" | string | `"300s"` | |
| argo-cd.configs.cm."ui.bannercontent" | string | `"KubeZero v1.32 - Release notes"` | |
| argo-cd.configs.cm."ui.bannercontent" | string | `"KubeZero v1.31 - Release notes"` | |
| argo-cd.configs.cm."ui.bannerpermanent" | string | `"true"` | |
| argo-cd.configs.cm."ui.bannerposition" | string | `"bottom"` | |
| argo-cd.configs.cm."ui.bannerurl" | string | `"https://kubezero.com/releases/v1.32"` | |
| argo-cd.configs.cm."ui.bannerurl" | string | `"https://kubezero.com/releases/v1.31"` | |
| argo-cd.configs.cm.installationID | string | `"KubeZero-ArgoCD"` | |
| argo-cd.configs.cm.url | string | `"https://argocd.example.com"` | |
| argo-cd.configs.params."controller.diff.server.side" | string | `"true"` | |
| argo-cd.configs.params."controller.resource.health.persist" | string | `"false"` | |
| argo-cd.configs.params."controller.sync.timeout.seconds" | int | `1800` | |
| argo-cd.configs.params."server.enable.gzip" | bool | `true` | |
| argo-cd.configs.params."server.insecure" | bool | `true` | |
@ -53,7 +54,7 @@ Kubernetes: `>= 1.30.0-0`
| argo-cd.dex.enabled | bool | `false` | |
| argo-cd.enabled | bool | `false` | |
| argo-cd.global.image.repository | string | `"public.ecr.aws/zero-downtime/zdt-argocd"` | |
| argo-cd.global.image.tag | string | `"v3.0.5"` | |
| argo-cd.global.image.tag | string | `"v2.14.9-1"` | |
| argo-cd.global.logging.format | string | `"json"` | |
| argo-cd.global.networkPolicy.create | bool | `true` | |
| argo-cd.istio.enabled | bool | `false` | |
@ -83,8 +84,8 @@ Kubernetes: `>= 1.30.0-0`
| argo-events.configs.jetstream.streamConfig.maxMsgs | int | `1000000` | Maximum number of messages before expiring oldest message |
| argo-events.configs.jetstream.streamConfig.replicas | int | `1` | Number of replicas, defaults to 3 and requires minimal 3 |
| argo-events.configs.jetstream.versions[0].configReloaderImage | string | `"natsio/nats-server-config-reloader:0.14.1"` | |
| argo-events.configs.jetstream.versions[0].metricsExporterImage | string | `"natsio/prometheus-nats-exporter:0.17.3"` | |
| argo-events.configs.jetstream.versions[0].natsImage | string | `"nats:2.11.4-scratch"` | |
| argo-events.configs.jetstream.versions[0].metricsExporterImage | string | `"natsio/prometheus-nats-exporter:0.17.2"` | |
| argo-events.configs.jetstream.versions[0].natsImage | string | `"nats:2.11.1-scratch"` | |
| argo-events.configs.jetstream.versions[0].startCommand | string | `"/nats-server"` | |
| argo-events.configs.jetstream.versions[0].version | string | `"2.10.11"` | |
| argo-events.enabled | bool | `false` | |

View File

@ -4,6 +4,6 @@ condition: 'index .Values "argo-cd" "controller" "metrics" "enabled"'
folder: KubeZero
dashboards:
- name: ArgoCD
url: https://raw.githubusercontent.com/argoproj/argo-cd/refs/heads/master/examples/dashboard.json
url: https://grafana.com/api/dashboards/14584/revisions/1/download
tags:
- ArgoCD

File diff suppressed because one or more lines are too long

View File

@ -25,9 +25,9 @@ spec:
automated:
prune: true
syncOptions:
- ApplyOutOfSyncOnly=true
- ServerSideApply=true
- ApplyOutOfSyncOnly=true
info:
- name: "Source:"
value: "https://git.zero-downtime.net/ZeroDownTime/KubeZero/src/branch/release/v1.32/"
value: "https://git.zero-downtime.net/ZeroDownTime/KubeZero/src/branch/release/v1.31/"
{{- end }}

View File

@ -25,9 +25,9 @@ argo-events:
# do NOT use -alpine tag as the entrypoint differs
versions:
- version: 2.10.11
natsImage: nats:2.11.4-scratch
metricsExporterImage: natsio/prometheus-nats-exporter:0.17.3
configReloaderImage: natsio/nats-server-config-reloader:0.18.0
natsImage: nats:2.11.1-scratch
metricsExporterImage: natsio/prometheus-nats-exporter:0.17.2
configReloaderImage: natsio/nats-server-config-reloader:0.14.1
startCommand: /nats-server
argo-cd:
@ -38,7 +38,7 @@ argo-cd:
format: json
image:
repository: public.ecr.aws/zero-downtime/zdt-argocd
tag: v3.0.5
tag: v2.14.9-1
networkPolicy:
create: true
@ -49,8 +49,8 @@ argo-cd:
.sidebar { background: linear-gradient(to bottom, #6A4D79, #493558, #2D1B30, #0D0711); }
cm:
ui.bannercontent: "KubeZero v1.32 - Release notes"
ui.bannerurl: "https://kubezero.com/releases/v1.32"
ui.bannercontent: "KubeZero v1.31 - Release notes"
ui.bannerurl: "https://kubezero.com/releases/v1.31"
ui.bannerpermanent: "true"
ui.bannerposition: "bottom"
@ -59,13 +59,9 @@ argo-cd:
timeout.reconciliation: 300s
application.resourceTrackingMethod: annotation
installationID: "KubeZero-ArgoCD"
application.instanceLabelKey: Null
server.rbac.log.enforce.enable: Null
resource.compareoptions: |
# disables status field diffing in specified resource types
ignoreAggregatedRoles: true
resource.customizations: |
argoproj.io/Application:
@ -93,6 +89,7 @@ argo-cd:
extraHosts: "git.zero-downtime.net ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7UgK7Z4dDcuIW1uMOsuwhrqdkJCvYG/ZjHtLM7WaKFxVRnzNnNkQJNncWIGNDUQ1xxrbsoSNRZDtk0NlOjNtx2aApSWl4iWghkpXELvsZtOZ7I9FSC/E6ImLC3KWfK7P0mhZaF6kHPfpu8Y6pjUyLBTpV1AaVwr0I8onyqGazJOVotTFaBFEi/sT0O2FUk7agwZYfj61w3JGOy3c+fmBcK3lXf/QM90tosOpJNuJ7n5Vk5FDDLkl9rO4XR/+mXHFvITiWb8F5C50YAwjYcy36yWSSryUAAHAuqpgotwh65vSG6fZvFhmEwO2BrCkOV5+k8iRfhy/yZODJzZ5V/5cbMbdZrY6lm/p5/S1wv8BEyPekBGdseqQjEO0IQiQHcMrfgTrrQ7ndbZzVZRByZI+wbGFkBCzNSJcNsoiHjs2EblxYyuW0qUvvrBxLnySvaxyPm4BOukSAZAOEaUrajpQlnHdnY1CGcgbwxw0LNv3euKQ3tDJSUlKO0Wd8d85PRv1THW4Ui9Lhsmv+BPA2vJZDOkx/n0oyPFAB0oyd5JNM38eFxLCmPC2OE63gDP+WmzVO61YCVTnvhpQjEOLawEWVFsk0y25R5z5BboDqJaOFnZF6i517O96cn17z3Ls4hxw3+0rlKczYRoyfUHs7KQENa4mY8YlJweNTBgld//RMUQ=="
params:
controller.resource.health.persist: "false"
controller.diff.server.side: "true"
controller.sync.timeout.seconds: 1800

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-auth
description: KubeZero umbrella chart for all things Authentication and Identity management
type: application
version: 0.6.3
version: 0.6.2
appVersion: 26.0.5
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
@ -18,6 +18,6 @@ dependencies:
repository: https://cdn.zero-downtime.net/charts/
- name: keycloak
repository: "oci://registry-1.docker.io/bitnamicharts"
version: 24.7.1
version: 24.6.1
condition: keycloak.enabled
kubeVersion: ">= 1.30.0-0"

View File

@ -1,6 +1,6 @@
# kubezero-auth
![Version: 0.6.3](https://img.shields.io/badge/Version-0.6.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 26.0.5](https://img.shields.io/badge/AppVersion-26.0.5-informational?style=flat-square)
![Version: 0.6.2](https://img.shields.io/badge/Version-0.6.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 26.0.5](https://img.shields.io/badge/AppVersion-26.0.5-informational?style=flat-square)
KubeZero umbrella chart for all things Authentication and Identity management
@ -19,7 +19,7 @@ Kubernetes: `>= 1.30.0-0`
| Repository | Name | Version |
|------------|------|---------|
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
| oci://registry-1.docker.io/bitnamicharts | keycloak | 24.7.1 |
| oci://registry-1.docker.io/bitnamicharts | keycloak | 24.6.1 |
# Keycloak

View File

@ -22,7 +22,7 @@ keycloak:
memory: 1024Mi
requests:
cpu: 100m
memory: 640Mi
memory: 512Mi
metrics:
enabled: false

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-ci
description: KubeZero umbrella chart for all things CI
type: application
version: 0.8.23
version: 0.8.21
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -18,19 +18,19 @@ dependencies:
version: 0.2.1
repository: https://cdn.zero-downtime.net/charts/
- name: gitea
version: 12.0.0
version: 11.0.0
repository: https://dl.gitea.io/charts/
condition: gitea.enabled
- name: jenkins
version: 5.8.48
version: 5.8.18
repository: https://charts.jenkins.io
condition: jenkins.enabled
- name: trivy
version: 0.14.1
version: 0.12.0
repository: https://aquasecurity.github.io/helm-charts/
condition: trivy.enabled
- name: renovate
version: 40.22.1
version: 39.200.0
repository: https://docs.renovatebot.com/helm-charts
condition: renovate.enabled
kubeVersion: ">= 1.25.0"

View File

@ -1,6 +1,6 @@
# kubezero-ci
![Version: 0.8.23](https://img.shields.io/badge/Version-0.8.23-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
![Version: 0.8.21](https://img.shields.io/badge/Version-0.8.21-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
KubeZero umbrella chart for all things CI
@ -18,11 +18,11 @@ Kubernetes: `>= 1.25.0`
| Repository | Name | Version |
|------------|------|---------|
| https://aquasecurity.github.io/helm-charts/ | trivy | 0.14.1 |
| https://aquasecurity.github.io/helm-charts/ | trivy | 0.12.0 |
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
| https://charts.jenkins.io | jenkins | 5.8.48 |
| https://dl.gitea.io/charts/ | gitea | 12.0.0 |
| https://docs.renovatebot.com/helm-charts | renovate | 40.22.1 |
| https://charts.jenkins.io | jenkins | 5.8.18 |
| https://dl.gitea.io/charts/ | gitea | 11.0.0 |
| https://docs.renovatebot.com/helm-charts | renovate | 39.200.0 |
# Jenkins
- default build retention 10 builds, 32days
@ -68,6 +68,7 @@ Kubernetes: `>= 1.25.0`
| gitea.gitea.metrics.enabled | bool | `false` | |
| gitea.gitea.metrics.serviceMonitor.enabled | bool | `true` | |
| gitea.image.rootless | bool | `true` | |
| gitea.image.tag | string | `"1.23.5"` | |
| gitea.istio.blockApi | bool | `false` | |
| gitea.istio.enabled | bool | `false` | |
| gitea.istio.gateway | string | `"istio-ingress/private-ingressgateway"` | |

View File

@ -5,133 +5,13 @@ The release numbering uses [semantic versioning](http://semver.org).
Use the following links to reference issues, PRs, and commits prior to v2.6.0.
- Issue: `https://github.com/helm/charts/issues/[issue#]`
- PR: `https://github.com/helm/charts/pull/[pr#]`
- Commit: `https://github.com/helm/charts/commit/[commit]/stable/jenkins`
* Issue: `https://github.com/helm/charts/issues/[issue#]`
* PR: `https://github.com/helm/charts/pull/[pr#]`
* Commit: `https://github.com/helm/charts/commit/[commit]/stable/jenkins`
The changelog until v1.5.7 was auto-generated based on git commits.
Those entries include a reference to the git commit to be able to get more details.
## 5.8.48
Update `docker.io/bats/bats` to version `1.12.0`
## 5.8.47
Fix code styling for super-linter 7 upgrade
## 5.8.46
Update `kubernetes` to version `4340.v345364d31a_2a_`
## 5.8.45
Update `jenkins/inbound-agent` to version `3309.v27b_9314fd1a_4-2`
## 5.8.44
Fix the default value for `controller.sidecars.configAutoReload.env` (change from `{}` to `[]`) to address `coalesce.go:286: warning: cannot overwrite table with non table`.
## 5.8.43
Update `configuration-as-code` to version `1967.va_968e15fd05b_`
## 5.8.42
Update `kubernetes` to version `4336.v55d9a_494db_38`
## 5.8.41
Update `jenkins/inbound-agent` to version `3309.v27b_9314fd1a_4-1`
## 5.8.40
Update `kubernetes` to version `4334.v32b_f157682d6`
## 5.8.39
Update `configuration-as-code` to version `1963.v24e046127a_3f`
## 5.8.38
Update `jenkins/jenkins` to version `2.504.1-jdk21`
## 5.8.37
Update `jenkins/inbound-agent` to version `3307.v632ed11b_3a_c7-2`
## 5.8.36
Update `configuration-as-code` to version `1958.vddc0d369b_e16`
## 5.8.35
Support .Values.agent.garbageCollection also in secondary clouds
## 5.8.34
Added .Values.agent.instanceCap to limit number of agents of each type.
## 5.8.33
Update `configuration-as-code` to version `1953.v148f87d74b_1e`
## 5.8.32
Update `jenkins/jenkins` to version `2.492.3-jdk21`
## 5.8.31
Update `jenkins/jenkins` to version `2.492.3-jdk17`
## 5.8.30
Update `jenkins/inbound-agent` to version `3301.v4363ddcca_4e7-3`
## 5.8.29
Update `docker.io/kiwigrid/k8s-sidecar` to version `1.30.3`
## 5.8.28
Update `jenkins/inbound-agent` to version `3301.v4363ddcca_4e7-2`
## 5.8.27
Update `jenkins/inbound-agent` to version `3301.v4363ddcca_4e7-1`
## 5.8.26
Update `jenkins/inbound-agent` to version `3299.v0d0d06908537-2`
## 5.8.25
Fix indentation in `values.yaml`
## 5.8.24
Update `workflow-aggregator` to version `608.v67378e9d3db_1`
## 5.8.23
Update `configuration-as-code` to version `1947.v7d33fe23569c`
## 5.8.22
Update `jenkins/inbound-agent` to version `3299.v0d0d06908537-1`
## 5.8.21
Update `kubernetes` to version `4324.vfec199a_33512`
## 5.8.20
Update `jenkins/inbound-agent` to version `3291.vb_131b_dc231fa_-1`
## 5.8.19
Update `docker.io/kiwigrid/k8s-sidecar` to version `1.30.2`
## 5.8.18
Update `jenkins/jenkins` to version `2.492.2-jdk17`
@ -254,7 +134,7 @@ Update `docker.io/bats/bats` to version `1.11.1`
## 5.7.16
Add tpl support for persistence.storageClassName in home-pvc.yaml and tpl support in controller.ingress parameters(ingressClassName, annotations, hostname) in jenkins-controller-ingress.yaml
Add tpl support for persistence.storageClassName in home-pvc.yaml and tpl support in controller.ingress parameters(ingressClassName, annotations, hostname) in jenkins-controller-ingress.yaml
## 5.7.15
@ -409,6 +289,7 @@ Update `kubernetes` to version `4265.v78b_d4a_1c864a_`
Introduce capability of set skipTlsVerify and usageRestricted flags in additionalClouds
## 5.4.4
Update CHANGELOG.md, README.md, and UPGRADING.md for linting
@ -440,7 +321,6 @@ Update `kubernetes` to version `4253.v7700d91739e5`
## 5.3.4
Update `jenkins/jenkins` to version `2.452.3-jdk17`
## 5.3.3
Update `jenkins/inbound-agent` to version `3256.v88a_f6e922152-1`
@ -621,6 +501,7 @@ Enable support for deleting plugin configuration files at startup.
Fixed changelog entries for previous version bumps
## 5.0.14
Update `jenkins/jenkins` to version `2.440.1-jdk17`
@ -635,8 +516,8 @@ Fix controller.sidecars.additionalSidecarContainers renaming and add tests
## 5.0.11
- Add controller.sidecars.configAutoReload.scheme to specify protocol scheme when connecting Jenkins configuration-as-code reload endpoint
- Add controller.sidecars.configAutoReload.skipTlsVerify to force the k8s-sidecar container to skip TLS verification when connecting to an HTTPS Jenkins configuration-as-code reload endpoint
* Add controller.sidecars.configAutoReload.scheme to specify protocol scheme when connecting Jenkins configuration-as-code reload endpoint
* Add controller.sidecars.configAutoReload.skipTlsVerify to force the k8s-sidecar container to skip TLS verification when connecting to an HTTPS Jenkins configuration-as-code reload endpoint
## 5.0.10
@ -676,8 +557,8 @@ Update `docker.io/bats/bats` to version `v1.10.0`
## 5.0.0
> [!CAUTION]
> Several fields have been renamed or removed. See [UPGRADING.md](./UPGRADING.md#to-500)
> [!CAUTION]
> Several fields have been renamed or removed. See [UPGRADING.md](./UPGRADING.md#to-500)
The Helm Chart is now updated automatically via [Renovate](https://docs.renovatebot.com/)
@ -690,7 +571,7 @@ Update Jenkins image and appVersion to jenkins lts release version 2.426.3
Add support for [generic ephemeral storage](https://github.com/jenkinsci/kubernetes-plugin/pull/1489) in `agent.volumes` and `agents.workspaceVolume`.
| plugin | old version | new version |
| ---------- | ------------------- | ------------------ |
|------------|---------------------|--------------------|
| kubernetes | 4029.v5712230ccb_f8 | 4174.v4230d0ccd951 |
## 4.11.2
@ -713,8 +594,8 @@ Bumped Jenkins inbound agent from 3107.v665000b_51092-15 to 3192.v713e3b_039fb_e
Update Jenkins image and appVersion to jenkins lts release version 2.426.2
Notes about [Artifact Hub](https://artifacthub.io/packages/helm/jenkinsci/jenkins?modal=changelog) changelog processing:
Notes about [Artifact Hub](https://artifacthub.io/packages/helm/jenkinsci/jenkins?modal=changelog) changelog processing:
- Remove empty lines
- Keep only ASCII characters (no emojis)
- One change per line
@ -810,6 +691,7 @@ Added `.Values.controller.httpsKeyStore.jenkinsHttpsJksPasswordSecretKey` to all
Update Jenkins image and appVersion to jenkins lts release version 2.414.1
## 4.5.0
Added `.Values.persistence.dataSource` to allow cloning home PVC from existing dataSource.
@ -818,6 +700,7 @@ Added `.Values.persistence.dataSource` to allow cloning home PVC from existing d
Update Jenkins image and appVersion to jenkins lts release version 2.401.3
## 4.4.1
Added `.Values.agent.jnlpregistry` to allow agents to be configured with private registry.
@ -826,6 +709,7 @@ Added `.Values.agent.jnlpregistry` to allow agents to be configured with private
Add config keys for liveness probes on agent containers.
## 4.3.30
Update Jenkins version in controller test matching LTS version
@ -834,6 +718,7 @@ Update Jenkins version in controller test matching LTS version
Update Jenkins image and appVersion to jenkins lts release version 2.401.2
## 4.3.28
Allow the kubernetes API server URL to be configurable.
@ -849,8 +734,8 @@ Fix various typos in the chart documentation.
## 4.3.25
| plugin | old version | new version |
| --------------------- | -------------------- | --------------------- |
| kubernetes | 3900.va_dce992317b_4 | 3937.vd7b*82db_e347b* |
|-----------------------|----------------------|-----------------------|
| kubernetes | 3900.va_dce992317b_4 | 3937.vd7b_82db_e347b_ |
| configuration-as-code | 1625.v27444588cc3d | 1647.ve39ca_b_829b_42 |
| git | 5.0.0 | 5.1.0 |
| ldap | 671.v2a_9192a_7419d | 682.v7b_544c9d1512 |
@ -859,38 +744,46 @@ Fix various typos in the chart documentation.
Update Jenkins image and appVersion to jenkins lts release version 2.401.1
## 4.3.23
Update Jenkins image and appVersion to jenkins lts release version 2.387.3
## 4.3.22
Bump chart version.
## 4.3.21
Document building charts for weekly releases.
## 4.3.20
Enhance repository appearance and miscellaneous cleanup.
## 4.3.19
Comply with superlinter rules and address ShellCheck issues.
## 4.3.18
Bump kiwigrid/k8s-sidecar from 1.15.0 to 1.23.1.
## 4.3.17
Bump jenkins/inbound-agent from 4.11.2-4 to 3107.v665000b_51092-5.
## 4.3.16
Update bundled plugins:
Update bundled plugins:
- [ldap](https://plugins.jenkins.io/ldap/): From 2.5 to 671.v2a_9192a_7419d
- [kubernetes](https://plugins.jenkins.io/kubernetes/): From 3734.v562b_b_a_627ea_c to 3900.va_dce992317b_4
- [workflow-aggregator](https://plugins.jenkins.io/workflow-aggregator/): From 590.v6a_d052e5a_a_b_5 to 590.v6a_d052e5a_a_b_5
@ -898,24 +791,29 @@ Update bundled plugins:
## 4.3.15
Update bats from 1.2.1 to 1.9.0.
## 4.3.14
Update various GH actions, typo fixes, and miscellaneous chores.
## 4.3.13
Bump helm-unittest from 0.2.8 to 0.2.11.
## 4.3.12
Update wording in values.yml.
## 4.3.11
Update Jenkins image and appVersion to jenkins lts release version 2.387.2
## 4.3.10
Correct incorrect env var definition
@ -947,6 +845,7 @@ Added `.Values.helmtest.bats.image` and `.Values.helmtest.bats.image` to allow u
Update Jenkins image and appVersion to jenkins lts release version 2.375.3
## 4.3.3
Removed hardcoding of chart version in tests to make maintenance easier
@ -956,6 +855,7 @@ Removed hardcoding of chart version in tests to make maintenance easier
Added `.Values.serviceAccount.extraLabels` on Service Account
Added `.Values.serviceAccountAgent.extraLabels` on Agent's Service Account
## 4.3.0
Moved use of `.Values.containerEnv` within `jenkins` Container to top of `env` block to allow for subsequent Environment Variables to reference these additional ones.
@ -964,6 +864,7 @@ Moved use of `.Values.containerEnv` within `jenkins` Container to top of `env` b
Update Jenkins image and appVersion to jenkins lts release version 2.375.2
## 4.2.20
Fixed the `controller.prometheus.metricRelabelings` being unable to convert the value to the ServiceMonitor.
@ -982,6 +883,7 @@ Added option to set secretEnvVars.
Update Jenkins image and appVersion to jenkins lts release version 2.375.1
## 4.2.16
Fixed chart notes not rendering Jenkins URL with prefix when `controller.jenkinsUriPrefix` is set.
@ -1004,49 +906,43 @@ Adding `tpl` to `controller.additionalExistingSecrets`
Update Jenkins image and appVersion to jenkins lts release version 2.361.3
## 4.2.11
Update default plugin versions
| plugin | old version | new version |
| --------------------- | ------------------- | ---------------------- |
| kubernetes | 3706.vdfb_d599579f3 | 3734.v562b_b_a_627ea_c |
| git | 4.11.5 | 4.13.0 |
| configuration-as-code | 1512.vb_79d418d5fc8 | 1569.vb_72405b_80249 |
| plugin | old version | new version |
|-----------------------|-----------------------|------------------------|
| kubernetes | 3706.vdfb_d599579f3 | 3734.v562b_b_a_627ea_c |
| git | 4.11.5 | 4.13.0 |
| configuration-as-code | 1512.vb_79d418d5fc8 | 1569.vb_72405b_80249 |
## 4.2.10
Fix grammar and typos
## 4.2.9
Update Jenkins image and appVersion to jenkins lts release version 2.361.2
## 4.2.8
Modify the condition to trigger copying jenkins_config files when configAutoReload option is disabled during Jenkins initialization
## 4.2.7
Support for remote URL for configuration
## 4.2.6
Add option to set hostnetwork for agents
## 4.2.5
Add an extra optional argument to extraPorts in order to specify targetPort
## 4.2.4
Remove k8s capibility requirements when setting priority class for controller
## 4.2.3 Update plugin versions
| plugin | old version | new version |
| --------------------- | --------------------- | --------------------- |
| kubernetes | 3600.v144b*cd192ca_a* | 3706.vdfb_d599579f3 |
| kubernetes | 3600.v144b_cd192ca_a_ | 3706.vdfb_d599579f3 |
| workflow-aggregator | 581.v0c46fa_697ffd | 590.v6a_d052e5a_a_b_5 |
| configuration-as-code | 1429.v09b_044a_c93de | 1512.vb_79d418d5fc8 |
| git | 4.11.3 | 4.11.5 |
@ -1070,14 +966,17 @@ Add option to provide additional containers to agents
Update Jenkins image and appVersion to jenkins lts release version 2.361.1
## 4.1.17
Update Jenkins casc default settings to allow `security` configs to be provided
## 4.1.16
Update Jenkins image and appVersion to jenkins lts release version 2.346.3
## 4.1.15
`projectNamingStrategy` is configurable in default config.
@ -1090,6 +989,7 @@ If `installPlugins` is disabled, don't create unused plugins volume.
Update Jenkins image and appVersion to jenkins lts release version 2.346.2
## 4.1.12
If keystore is defined, it is now also made available in the initContainer.
@ -1102,6 +1002,7 @@ JCasC ConfigMaps now generate their name from the `jenkins.casc.configName` help
Update Jenkins image and appVersion to jenkins lts release version 2.346.1
## 4.1.9
Allow setting `imagePullSecret` for backup job via `backup.imagePullSecretName`
@ -1123,15 +1024,12 @@ project adminSecret, additionalSecrets and additionalExistingSecrets instead of
Update readme to fix `JAVA_OPTS` name.
## 4.1.4
Update plugins
## 4.1.3
Update jenkins-controller-statefulset projected volumes definition
## 4.1.1
Added 'controller.prometheus.metricRelabelings' to allow relabling and dropping unused prometheus metrics
## 4.1.0
@ -1164,9 +1062,9 @@ Update Jenkins image and appVersion to jenkins lts release version 2.332.2
## 3.11.9 Bump configuration-as-code plugin version
| plugin | old version | new version |
| --------------------- | ----------- | ------------------ |
| configuration-as-code | 1.51 | 1414.v878271fc496f |
| plugin | old version | new version |
| --------------------- | ----------- | ----------- |
| configuration-as-code | 1.51 | 1414.v878271fc496f |
## 3.11.8
@ -1180,6 +1078,7 @@ Removed Configuration as Code `remotingSecurity` section for Jenkins 2.326 or ne
Update Jenkins image and appVersion to jenkins lts release version 2.332.1
## 3.11.5
Change Backup Role name function call to match the RoleDef function call in the Backup RoleBinding
@ -1188,6 +1087,7 @@ Change Backup Role name function call to match the RoleDef function call in the
Update Jenkins image and appVersion to jenkins lts release version 2.319.3
## 3.11.3
Update kiwigrid/k8s-sidecar:1.15.0
@ -1201,19 +1101,21 @@ Improve example for workspaceVolume. Clarify that this is not a list.
Update configuration-as-code plugin to 1.55.1
## 3.11.0
Update default plugin versions
| plugin | old version | new version |
| ---------- | ----------- | ----------- |
| kubernetes | 1.31.1 | 1.31.3 |
| git | 4.10.1 | 4.10.2 |
| plugin | old version | new version |
| --------------------- | ----------- | ----------- |
| kubernetes | 1.31.1 | 1.31.3 |
| git | 4.10.1 | 4.10.2 |
## 3.10.3
Update Jenkins image and appVersion to jenkins lts release version 2.319.2
## 3.10.2
Fix definition of startupProbe when deploying on a Kubernetes cluster < 1.16
@ -1245,9 +1147,9 @@ Fix config reload request URL when httpsKeystore in use
Update Jenkins image and appVersion to jenkins lts release version 2.319.1
Update following plugins:
- kubernetes:1.30.11
- git:4.10.0
- configuration-as-code:1.54
* kubernetes:1.30.11
* git:4.10.0
* configuration-as-code:1.54
## 3.9.1
@ -1313,39 +1215,33 @@ Fix httpsKeyStore mount when `controller.httpsKeyStore.enable` is `true`
Update Jenkins image and appVersion to jenkins lts release version 2.303.2
## 3.6.0
## 3.6.0
Support custom agent pod labels
## 3.5.20
Disallow ingress on port 50000 when agent listener is disabled
## 3.5.19
Add support for specifying termination-log behaviour for Jenkins controller
## 3.5.18
Add support for creating a Pod Disruption Budget for Jenkins controller
## 3.5.17
Update workdingDir to `/home/jenkins/agent`
## 3.5.16
Update location of icon (wiki.jenkins.io is down)
## 3.5.15
Add support for adding labels to the Jenkins home Persistent Volume Claim (pvc)
## 3.5.14
- Updated versions of default plugins
- Use verbose logging during plugin installation
- download the latest version of all plugin dependencies (Fixes #442)
* Updated versions of default plugins
* Use verbose logging during plugin installation
* download the latest version of all plugin dependencies (Fixes #442)
## 3.5.13
@ -1367,6 +1263,7 @@ Fixed `controller.customJenkinsLabels` not getting templated into the controller
Update Jenkins image and appVersion to jenkins lts release version 2.289.3
## 3.5.8
Add parameter `backup.serviceAccount.create` to disable service account creation for backup service and `backup.serviceAccount.name` to allow change of the SA name.
@ -1397,7 +1294,6 @@ Update Jenkins image and appVersion to jenkins lts release version 2.289.2
Enable setting `controller.installLatestSpecifiedPlugins` to set whether to download the latest dependencies of any plugin that is requested to have the latest version.
## 3.5.1
Fix activeDeadlineSeconds wrong type bug in jenkins-backup-cronjob template
## 3.5.0
@ -1421,56 +1317,43 @@ Make `controller.ingress.resourceRootUrl` compatible with API version networking
Update Jenkins image and appVersion to jenkins lts release version 2.289.1
## 3.3.21
`persistence.mounts` additionally mount to init container to allow custom CA certificate keystore
## 3.3.18
Added `controller.overrideArgs` so any cli argument can be passed to the WAR.
## 3.3.17
Correct docs on disabling plugin installation
## 3.3.16
Support generating `SecretClaim` resources in order to read secrets from HashiCorp Vault into Kubernetes using `kube-vault-controller`.
## 3.3.15
Prevent `controller.httpsKeyStore` from improperly being quoted, leading to an invalid location on disk
## 3.3.14
Correct docs on disabling plugin installation
## 3.3.13
Update plugins
## 3.3.12
Add `controller.additionalExistingSecrets` property
## 3.3.11
Add support for disabling the Agent listener service via `controller.agentListenerEnabled`.
## 3.3.10
Update Jenkins image and appVersion to jenkins lts release version 2.277.4
## 3.3.9
- Change helper template so user defined `agent.jenkinsUrl` value will always be used, if set
- Simplify logic for `jenkinsUrl` and `jenkinsTunnel` generation: always use fully qualified address
* Change helper template so user defined `agent.jenkinsUrl` value will always be used, if set
* Simplify logic for `jenkinsUrl` and `jenkinsTunnel` generation: always use fully qualified address
## 3.3.8
Update Jenkins image and appVersion to jenkins lts release version 2.277.3
## 3.3.7
fix controller-ingress line feed bug
## 3.3.6
@ -1486,6 +1369,7 @@ Use tpl function for environment vars. Fixes [https://github.com/jenkinsci/helm-
Update Jenkins image and appVersion to jenkins lts release version 2.277.2
## 3.3.3
Enable setting `controller.installLatestPlugins` to set whether to download the minimum required version of all dependencies.
@ -1511,7 +1395,6 @@ Add missing `controller.jenkinsUrlProtocol` property
Add additional metadata `artifacthub.io/images` for artifacthub
## 3.2.4
Update Jenkins image and appVersion to jenkins lts release version 2.277.1
Update Git plugin version to v4.6.0
Update kubernetes plugin version to v1.29.2
@ -1594,8 +1477,8 @@ Update Jenkins image and appVersion to jenkins lts release version 2.263.2
## 3.1.0
- Added `.Values.controller.podSecurityContextOverride` and `.Values.backup.podSecurityContextOverride`.
- Added simple default values tests for `jenkins-backup-cronjob.yaml`.
* Added `.Values.controller.podSecurityContextOverride` and `.Values.backup.podSecurityContextOverride`.
* Added simple default values tests for `jenkins-backup-cronjob.yaml`.
## 3.0.14
@ -1623,11 +1506,11 @@ Added support for backing up to Azure Blob Storage.
## 3.0.8
- Typo in documentation
* Typo in documentation
## 3.0.7
- Add support for setting default agent workspaceVolume
* Add support for setting default agent workspaceVolume
## 3.0.6
@ -1635,47 +1518,47 @@ Use 2.263.1 image
## 3.0.5
- Update appVersion to reflect new jenkins lts release version 2.263.1
* Update appVersion to reflect new jenkins lts release version 2.263.1
## 3.0.4
- Fix documentation for additional secret mounts
* Fix documentation for additional secret mounts
## 3.0.3
- Update `README.md` with explanation on how to mount additional secrets
* Update `README.md` with explanation on how to mount additional secrets
## 3.0.2
- Fix `.Values.controller.tolerations` and `.Values.controller.nodeSelector` variable names in templates\jenkins-backup-cronjob.yaml
* Fix `.Values.controller.tolerations` and `.Values.controller.nodeSelector` variable names in templates\jenkins-backup-cronjob.yaml
## 3.0.1
- added 'runAsNonroot' to security context
* added 'runAsNonroot' to security context
## 3.0.0
- Chart uses StatefulSet instead of Deployment
- XML configuration was removed in favor of JCasC
- chart migrated to helm 3.0.0 (apiVersion v2)
- offending terms have been removed
- values have been renamed and re-ordered to make it easier to use
- already deprecated items have been removed
- componentName for the controller is now `jenkins-controller`
- componentName for the agent is now `jenkins-agent`
- container names are now
- `init` for the init container which downloads Jenkins plugins
- `jenkins` for the Jenkins controller
- `config-reload` for the sidecar container which automatically reloads JCasC
- Updated UI tests to use official `bats/bats` image instead of `dduportal/bats`
* Chart uses StatefulSet instead of Deployment
* XML configuration was removed in favor of JCasC
* chart migrated to helm 3.0.0 (apiVersion v2)
* offending terms have been removed
* values have been renamed and re-ordered to make it easier to use
* already deprecated items have been removed
* componentName for the controller is now `jenkins-controller`
* componentName for the agent is now `jenkins-agent`
* container names are now
* `init` for the init container which downloads Jenkins plugins
* `jenkins` for the Jenkins controller
* `config-reload` for the sidecar container which automatically reloads JCasC
* Updated UI tests to use official `bats/bats` image instead of `dduportal/bats`
For migration instructions from previous versions and additional information check README.md.
## 2.19.0
- Use lts version 2.249.3
- Update kubernetes, workflow-aggregator, git and configuration-as-code plugins.
- Fail apply_config.sh script if an error occurs.
* Use lts version 2.249.3
* Update kubernetes, workflow-aggregator, git and configuration-as-code plugins.
* Fail apply_config.sh script if an error occurs.
## 2.18.2
@ -2075,7 +1958,7 @@ Update docs for Helm 3
Make `jenkins-home` attachable to Azure Disks without pvc
```yaml
volumes:
volumes:
- name: jenkins-home
azureDisk:
kind: Managed
@ -2104,7 +1987,6 @@ Scriptapprovals are overwritten when overwriteConfig is enabled
Added documentation for `persistence.storageClass`.
## 1.9.9
Make `master.deploymentAnnotation` configurable.
## 1.9.8
@ -2114,7 +1996,7 @@ Make `agent.slaveConnectTimeout` configurable: by increasing this value Jenkins
## 1.9.7 Update plugin versions
| plugin | old version | new version |
| --------------------- | ----------- | ----------- |
|-----------------------|-------------|-------------|
| kubernetes | 1.18.2 | 1.21.2 |
| workflow-job | 2.33 | 2.36 |
| credentials-binding | 1.19 | 1.20 |
@ -2134,9 +2016,9 @@ Enables jenkins to use keystore inorder to have native ssl support #17790 <https
Google application credentials are kept in a file, which has to be mounted to a pod. You can set `gcpcredentials` in `existingSecret` as follows:
```yaml
existingSecret:
jenkins-service-account:
gcpcredentials: application_default_credentials.json
existingSecret:
jenkins-service-account:
gcpcredentials: application_default_credentials.json
```
Helm template then creates the necessary volume mounts and `GOOGLE_APPLICATION_CREDENTIALS` environmental variable.
@ -2555,7 +2437,7 @@ commit: b02ae3f48
### Breaking changes
- values have been renamed to follow helm chart best practices for naming conventions so
that all variables start with a lowercase letter and words are separated with camelCase
that all variables start with a lowercase letter and words are separated with camelcase
<https://helm.sh/docs/chart_best_practices/#naming-conventions>
- all resources are now using recommended standard labels
<https://helm.sh/docs/chart_best_practices/#standard-labels>

View File

@ -1,14 +1,14 @@
annotations:
artifacthub.io/category: integration-delivery
artifacthub.io/changes: |
- Update `docker.io/bats/bats` to version `1.12.0`
- Update `jenkins/jenkins` to version `2.492.2-jdk17`
artifacthub.io/images: |
- name: jenkins
image: docker.io/jenkins/jenkins:2.504.1-jdk21
image: docker.io/jenkins/jenkins:2.492.2-jdk17
- name: k8s-sidecar
image: docker.io/kiwigrid/k8s-sidecar:1.30.3
image: docker.io/kiwigrid/k8s-sidecar:1.30.1
- name: inbound-agent
image: jenkins/inbound-agent:3309.v27b_9314fd1a_4-2
image: jenkins/inbound-agent:3283.v92c105e0f819-9
artifacthub.io/license: Apache-2.0
artifacthub.io/links: |
- name: Chart Source
@ -18,7 +18,7 @@ annotations:
- name: support
url: https://github.com/jenkinsci/helm-charts/issues
apiVersion: v2
appVersion: 2.504.1
appVersion: 2.492.2
description: 'Jenkins - Build great things at any scale! As the leading open source
automation server, Jenkins provides over 2000 plugins to support building, deploying
and automating any project. '
@ -46,4 +46,4 @@ sources:
- https://github.com/maorfr/kube-tasks
- https://github.com/jenkinsci/configuration-as-code-plugin
type: application
version: 5.8.48
version: 5.8.18

View File

@ -227,8 +227,8 @@ Further JCasC examples can be found [here](https://github.com/jenkinsci/configur
#### Breaking out large Config as Code scripts
Jenkins Config as Code scripts can become quite large, and maintaining all of your scripts within one yaml file can be difficult. The Config as Code plugin itself suggests updating the `CASC_JENKINS_CONFIG` environment variable to be a comma separated list of paths for the plugin to traverse, picking up the yaml files as needed.
However, under the Jenkins helm chart, this `CASC_JENKINS_CONFIG` value is maintained through the templates. A better solution is to split your `controller.JCasC.configScripts` into separate values files, and provide each file during the helm install.
Jenkins Config as Code scripts can become quite large, and maintaining all of your scripts within one yaml file can be difficult. The Config as Code plugin itself suggests updating the `CASC_JENKINS_CONFIG` environment variable to be a comma separated list of paths for the plugin to traverse, picking up the yaml files as needed.
However, under the Jenkins helm chart, this `CASC_JENKINS_CONFIG` value is maintained through the templates. A better solution is to split your `controller.JCasC.configScripts` into separate values files, and provide each file during the helm install.
For example, you can have a values file (e.g values_main.yaml) that defines the values described in the `VALUES_SUMMARY.md` for your Jenkins configuration:
@ -247,7 +247,7 @@ jenkins:
controller:
JCasC:
configScripts:
jenkinsCasc: |
jenkinsCasc: |
jenkins:
disableRememberMe: false
mode: NORMAL
@ -268,7 +268,7 @@ jenkins:
...
```
When installing, you provide all relevant yaml files (e.g `helm install -f values_main.yaml -f values_jenkins_casc.yaml -f values_jenkins_unclassified.yaml ...`). Instead of updating the `CASC_JENKINS_CONFIG` environment variable to include multiple paths, multiple CasC yaml files will be created in the same path `var/jenkins_home/casc_configs`.
When installing, you provide all relevant yaml files (e.g `helm install -f values_main.yaml -f values_jenkins_casc.yaml -f values_jenkins_unclassified.yaml ...`). Instead of updating the `CASC_JENKINS_CONFIG` environment variable to include multiple paths, multiple CasC yaml files will be created in the same path `var/jenkins_home/casc_configs`.
#### Config as Code With or Without Auto-Reload
@ -295,36 +295,27 @@ This option requires installation of the [OWASP Markup Formatter Plugin (antisam
This plugin is **not** installed by default but may be added to `controller.additionalPlugins`.
### Change max connections to Kubernetes API
When using agents with containers other than JNLP, The kubernetes plugin will communicate with those containers using the Kubernetes API. this changes the maximum concurrent connections
```yaml
agent:
maxRequestsPerHostStr: "32"
```
This will change the configuration of the kubernetes "cloud" (as called by jenkins) that is created automatically as part of this helm chart.
### Change container cleanup timeout API
For tasks that use very large images, this timeout can be increased to avoid early termination of the task while the Kubernetes pod is still deploying.
```yaml
agent:
retentionTimeout: "32"
```
This will change the configuration of the kubernetes "cloud" (as called by jenkins) that is created automatically as part of this helm chart.
### Change seconds to wait for pod to be running
This will change how long Jenkins will wait (seconds) for pod to be in running state.
```yaml
agent:
waitForPodSec: "32"
```
This will change the configuration of the kubernetes "cloud" (as called by jenkins) that is created automatically as part of this helm chart.
### Mounting Volumes into Agent Pods
@ -334,9 +325,9 @@ Your Jenkins Agents will run as pods, and it's possible to inject volumes where
```yaml
agent:
volumes:
- type: Secret
secretName: jenkins-mysecrets
mountPath: /var/run/secrets/jenkins-mysecrets
- type: Secret
secretName: jenkins-mysecrets
mountPath: /var/run/secrets/jenkins-mysecrets
```
The supported volume types are: `ConfigMap`, `EmptyDir`, `HostPath`, `Nfs`, `PVC`, `Secret`.
@ -389,11 +380,11 @@ See additional `persistence` values using [configuration commands](#configuratio
2. Create the PersistentVolumeClaim
3. [Install](#install-chart) the chart, setting `persistence.existingClaim` to `PVC_NAME`
#### Long Volume Attach-/Mount Times
#### Long Volume Attach/Mount Times
Certain volume type and filesystem format combinations may experience long
attach/mount times, [10 or more minutes][K8S_VOLUME_TIMEOUT], when using
`fsGroup`. This issue may result in the following entries in the pod's event
`fsGroup`. This issue may result in the following entries in the pod's event
history:
```console
@ -401,7 +392,7 @@ Warning FailedMount 38m kubelet, aks-default-41587790-2 Unable
```
In these cases, experiment with replacing `fsGroup` with
`supplementalGroups` in the pod's `securityContext`. This can be achieved by
`supplementalGroups` in the pod's `securityContext`. This can be achieved by
setting the `controller.podSecurityContextOverride` Helm chart value to
something like:
@ -433,7 +424,6 @@ A common use case might be identity provider credentials if using an external LD
The secret may then be referenced in JCasC configuration (see [JCasC configuration](#configuration-as-code)).
`values.yaml` controller section, referencing mounted secrets:
```yaml
controller:
# the 'name' and 'keyName' are concatenated with a '-' in between, so for example:
@ -443,7 +433,7 @@ controller:
# existingSecret existing secret "secret-credentials" and a key inside it named "github-username" should be used in Jcasc as ${github-username}
# When using existingSecret no need to specify the keyName under additionalExistingSecrets.
existingSecret: secret-credentials
additionalExistingSecrets:
- name: secret-credentials
keyName: github-username
@ -451,7 +441,7 @@ controller:
keyName: github-password
- name: secret-credentials
keyName: token
additionalSecrets:
- name: client_id
value: abc123
@ -491,7 +481,6 @@ It's possible for this chart to generate `SecretClaim` resources in order to aut
These `Secrets` can then be referenced in the same manner as Additional Secrets above.
This can be achieved by defining required Secret Claims within `controller.secretClaims`, as follows:
```yaml
controller:
secretClaims:
@ -585,11 +574,11 @@ The simplest configuration looks like the following:
```yaml
controller:
ingress:
enabled: true
paths: []
apiVersion: "extensions/v1beta1"
hostName: jenkins.example.com
ingress:
enabled: true
paths: []
apiVersion: "extensions/v1beta1"
hostName: jenkins.example.com
```
This snippet configures an ingress rule for exposing jenkins at `jenkins.example.com`
@ -604,20 +593,20 @@ The secondaryingress doesn't expose anything by default and has to be configured
```yaml
controller:
ingress:
enabled: true
apiVersion: "extensions/v1beta1"
hostName: "jenkins.internal.example.com"
annotations:
kubernetes.io/ingress.class: "internal"
secondaryingress:
enabled: true
apiVersion: "extensions/v1beta1"
hostName: "jenkins-scm.example.com"
annotations:
kubernetes.io/ingress.class: "public"
paths:
- /github-webhook
ingress:
enabled: true
apiVersion: "extensions/v1beta1"
hostName: "jenkins.internal.example.com"
annotations:
kubernetes.io/ingress.class: "internal"
secondaryingress:
enabled: true
apiVersion: "extensions/v1beta1"
hostName: "jenkins-scm.example.com"
annotations:
kubernetes.io/ingress.class: "public"
paths:
- /github-webhook
```
## Prometheus Metrics
@ -671,16 +660,15 @@ and `https-jks-password` (or override the key name using `jenkinsHttpsJksPasswor
```yaml
controller:
httpsKeyStore:
enable: true
jenkinsHttpsJksSecretName: ""
httpPort: 8081
path: "/var/jenkins_keystore"
fileName: "keystore.jks"
password: "changeit"
jenkinsKeyStoreBase64Encoded: ""
httpsKeyStore:
enable: true
jenkinsHttpsJksSecretName: ''
httpPort: 8081
path: "/var/jenkins_keystore"
fileName: "keystore.jks"
password: "changeit"
jenkinsKeyStoreBase64Encoded: ''
```
### AWS Security Group Policies
To create SecurityGroupPolicies set `awsSecurityGroupPolicies.enabled` to true and add your policies. Each policy requires a `name`, array of `securityGroupIds` and a `podSelector`. Example:
@ -690,7 +678,7 @@ awsSecurityGroupPolicies:
enabled: true
policies:
- name: "jenkins-controller"
securityGroupIds:
securityGroupIds:
- sg-123456789
podSelector:
matchExpressions:

View File

@ -1,7 +1,6 @@
# Upgrade Notes
## To 5.0.0
- `controller.image`, `controller.tag`, and `controller.tagLabel` have been removed. If you want to overwrite the image you now need to configure any or all of:
- `controller.image.registry`
- `controller.image.repository`
@ -32,40 +31,38 @@
- `backup.*` was unmaintained and has thus been removed. See the following page for alternatives: [Kubernetes Backup and Migrations](https://nubenetes.com/kubernetes-backup-migrations/).
## To 4.0.0
Removes automatic `remotingSecurity` setting when using a container tag older than `2.326` (introduced in [`3.11.7`](./CHANGELOG.md#3117)). If you're using a version older than `2.326`, you should explicitly set `.controller.legacyRemotingSecurityEnabled` to `true`.
## To 3.0.0
- Check `securityRealm` and `authorizationStrategy` and adjust it.
* Check `securityRealm` and `authorizationStrategy` and adjust it.
Otherwise, your configured users and permissions will be overridden.
- You need to use helm version 3 as the `Chart.yaml` uses `apiVersion: v2`.
- All XML configuration options have been removed.
* You need to use helm version 3 as the `Chart.yaml` uses `apiVersion: v2`.
* All XML configuration options have been removed.
In case those are still in use you need to migrate to configuration as code.
Upgrade guide to 2.0.0 contains pointers how to do that.
- Jenkins is now using a `StatefulSet` instead of a `Deployment`
- terminology has been adjusted that's also reflected in values.yaml
* Jenkins is now using a `StatefulSet` instead of a `Deployment`
* terminology has been adjusted that's also reflected in values.yaml
The following values from `values.yaml` have been renamed:
- `master` => `controller`
- `master.useSecurity` => `controller.adminSecret`
- `master.slaveListenerPort` => `controller.agentListenerPort`
- `master.slaveHostPort` => `controller.agentListenerHostPort`
- `master.slaveKubernetesNamespace` => `agent.namespace`
- `master.slaveDefaultsProviderTemplate` => `agent.defaultsProviderTemplate`
- `master.slaveJenkinsUrl` => `agent.jenkinsUrl`
- `master.slaveJenkinsTunnel` => `agent.jenkinsTunnel`
- `master.slaveConnectTimeout` => `agent.kubernetesConnectTimeout`
- `master.slaveReadTimeout` => `agent.kubernetesReadTimeout`
- `master.slaveListenerServiceAnnotations` => `controller.agentListenerServiceAnnotations`
- `master.slaveListenerServiceType` => `controller.agentListenerServiceType`
- `master.slaveListenerLoadBalancerIP` => `controller.agentListenerLoadBalancerIP`
- `agent.slaveConnectTimeout` => `agent.connectTimeout`
* `master` => `controller`
* `master.useSecurity` => `controller.adminSecret`
* `master.slaveListenerPort` => `controller.agentListenerPort`
* `master.slaveHostPort` => `controller.agentListenerHostPort`
* `master.slaveKubernetesNamespace` => `agent.namespace`
* `master.slaveDefaultsProviderTemplate` => `agent.defaultsProviderTemplate`
* `master.slaveJenkinsUrl` => `agent.jenkinsUrl`
* `master.slaveJenkinsTunnel` => `agent.jenkinsTunnel`
* `master.slaveConnectTimeout` => `agent.kubernetesConnectTimeout`
* `master.slaveReadTimeout` => `agent.kubernetesReadTimeout`
* `master.slaveListenerServiceAnnotations` => `controller.agentListenerServiceAnnotations`
* `master.slaveListenerServiceType` => `controller.agentListenerServiceType`
* `master.slaveListenerLoadBalancerIP` => `controller.agentListenerLoadBalancerIP`
* `agent.slaveConnectTimeout` => `agent.connectTimeout`
* Removed values:
- Removed values:
- `master.imageTag`: use `controller.image` and `controller.tag` instead
- `slave.imageTag`: use `agent.image` and `agent.tag` instead
* `master.imageTag`: use `controller.image` and `controller.tag` instead
* `slave.imageTag`: use `agent.image` and `agent.tag` instead
## To 2.0.0
@ -98,14 +95,14 @@ Here we show which values have changed and the previous default values:
```yaml
controller:
runAsUser: 1000 # was unset before
fsGroup: 1000 # was unset before
runAsUser: 1000 # was unset before
fsGroup: 1000 # was unset before
JCasC:
enabled: true # was false
defaultConfig: true # was false
enabled: true # was false
defaultConfig: true # was false
sidecars:
configAutoReload:
enabled: true # was false
enabled: true # was false
```
### Migration steps
@ -138,7 +135,7 @@ So think of the list below more as a general guideline of what should be done.
Breaking changes:
- Values have been renamed to follow [helm recommended naming conventions](https://helm.sh/docs/chart_best_practices/#naming-conventions) so that all variables start with a lowercase letter and words are separated with camelCase
- Values have been renamed to follow [helm recommended naming conventions](https://helm.sh/docs/chart_best_practices/#naming-conventions) so that all variables start with a lowercase letter and words are separated with camelcase
- All resources are now using [helm recommended standard labels](https://helm.sh/docs/chart_best_practices/#standard-labels)
As a result of the label changes also the selectors of the deployment have been updated.

View File

@ -8,315 +8,314 @@ The following tables list the configurable parameters of the Jenkins chart and t
| Key | Type | Description | Default |
|:----|:-----|:---------|:------------|
| [additionalAgents](./values.yaml#L1202) | object | Configure additional | `{}` |
| [additionalClouds](./values.yaml#L1227) | object | | `{}` |
| [agent.TTYEnabled](./values.yaml#L1107) | bool | Allocate pseudo tty to the side container | `false` |
| [agent.additionalContainers](./values.yaml#L1155) | list | Add additional containers to the agents | `[]` |
| [agent.alwaysPullImage](./values.yaml#L1000) | bool | Always pull agent container image before build | `false` |
| [agent.annotations](./values.yaml#L1151) | object | Annotations to apply to the pod | `{}` |
| [agent.args](./values.yaml#L1101) | string | Arguments passed to command to execute | `"${computer.jnlpmac} ${computer.name}"` |
| [agent.command](./values.yaml#L1099) | string | Command to execute when side container starts | `nil` |
| [agent.componentName](./values.yaml#L968) | string | | `"jenkins-agent"` |
| [agent.connectTimeout](./values.yaml#L1149) | int | Timeout in seconds for an agent to be online | `100` |
| [agent.containerCap](./values.yaml#L1109) | int | Max number of agents to launch for a whole cluster. | `10` |
| [agent.customJenkinsLabels](./values.yaml#L965) | list | Append Jenkins labels to the agent | `[]` |
| [agent.defaultsProviderTemplate](./values.yaml#L919) | string | The name of the pod template to use for providing default values | `""` |
| [agent.directConnection](./values.yaml#L971) | bool | | `false` |
| [agent.disableDefaultAgent](./values.yaml#L1173) | bool | Disable the default Jenkins Agent configuration | `false` |
| [agent.enabled](./values.yaml#L917) | bool | Enable Kubernetes plugin jnlp-agent podTemplate | `true` |
| [agent.envVars](./values.yaml#L1082) | list | Environment variables for the agent Pod | `[]` |
| [agent.garbageCollection.enabled](./values.yaml#L1118) | bool | When enabled, Jenkins will periodically check for orphan pods that have not been touched for the given timeout period and delete them. | `false` |
| [agent.garbageCollection.namespaces](./values.yaml#L1120) | string | Namespaces to look at for garbage collection, in addition to the default namespace defined for the cloud. One namespace per line. | `""` |
| [agent.garbageCollection.timeout](./values.yaml#L1125) | int | Timeout value for orphaned pods | `300` |
| [agent.hostNetworking](./values.yaml#L979) | bool | Enables the agent to use the host network | `false` |
| [agent.idleMinutes](./values.yaml#L1128) | int | Allows the Pod to remain active for reuse until the configured number of minutes has passed since the last step was executed on it | `0` |
| [agent.image.repository](./values.yaml#L958) | string | Repository to pull the agent jnlp image from | `"jenkins/inbound-agent"` |
| [agent.image.tag](./values.yaml#L960) | string | Tag of the image to pull | `"3309.v27b_9314fd1a_4-2"` |
| [agent.imagePullSecretName](./values.yaml#L967) | string | Name of the secret to be used to pull the image | `nil` |
| [agent.inheritYamlMergeStrategy](./values.yaml#L1147) | bool | Controls whether the defined yaml merge strategy will be inherited if another defined pod template is configured to inherit from the current one | `false` |
| [agent.instanceCap](./values.yaml#L1111) | int | Max number of agents to launch for this type of agent | `2147483647` |
| [agent.jenkinsTunnel](./values.yaml#L935) | string | Overrides the Kubernetes Jenkins tunnel | `nil` |
| [agent.jenkinsUrl](./values.yaml#L931) | string | Overrides the Kubernetes Jenkins URL | `nil` |
| [agent.jnlpregistry](./values.yaml#L955) | string | Custom registry used to pull the agent jnlp image from | `nil` |
| [agent.kubernetesConnectTimeout](./values.yaml#L941) | int | The connection timeout in seconds for connections to Kubernetes API. The minimum value is 5 | `5` |
| [agent.kubernetesReadTimeout](./values.yaml#L943) | int | The read timeout in seconds for connections to Kubernetes API. The minimum value is 15 | `15` |
| [agent.livenessProbe](./values.yaml#L990) | object | | `{}` |
| [agent.maxRequestsPerHostStr](./values.yaml#L945) | string | The maximum concurrent connections to Kubernetes API | `"32"` |
| [agent.namespace](./values.yaml#L951) | string | Namespace in which the Kubernetes agents should be launched | `nil` |
| [agent.nodeSelector](./values.yaml#L1093) | object | Node labels for pod assignment | `{}` |
| [agent.nodeUsageMode](./values.yaml#L963) | string | | `"NORMAL"` |
| [agent.podLabels](./values.yaml#L953) | object | Custom Pod labels (an object with `label-key: label-value` pairs) | `{}` |
| [agent.podName](./values.yaml#L1113) | string | Agent Pod base name | `"default"` |
| [agent.podRetention](./values.yaml#L1009) | string | | `"Never"` |
| [agent.podTemplates](./values.yaml#L1183) | object | Configures extra pod templates for the default kubernetes cloud | `{}` |
| [agent.privileged](./values.yaml#L973) | bool | Agent privileged container | `false` |
| [agent.resources](./values.yaml#L981) | object | Resources allocation (Requests and Limits) | `{"limits":{"cpu":"512m","memory":"512Mi"},"requests":{"cpu":"512m","memory":"512Mi"}}` |
| [agent.restrictedPssSecurityContext](./values.yaml#L1006) | bool | Set a restricted securityContext on jnlp containers | `false` |
| [agent.retentionTimeout](./values.yaml#L947) | int | Time in minutes after which the Kubernetes cloud plugin will clean up an idle worker that has not already terminated | `5` |
| [agent.runAsGroup](./values.yaml#L977) | string | Configure container group | `nil` |
| [agent.runAsUser](./values.yaml#L975) | string | Configure container user | `nil` |
| [agent.secretEnvVars](./values.yaml#L1086) | list | Mount a secret as environment variable | `[]` |
| [agent.serviceAccount](./values.yaml#L927) | string | Override the default service account | `serviceAccountAgent.name` if `agent.useDefaultServiceAccount` is `true` |
| [agent.showRawYaml](./values.yaml#L1013) | bool | | `true` |
| [agent.sideContainerName](./values.yaml#L1103) | string | Side container name | `"jnlp"` |
| [agent.skipTlsVerify](./values.yaml#L937) | bool | Disables the verification of the controller certificate on remote connection. This flag correspond to the "Disable https certificate check" flag in kubernetes plugin UI | `false` |
| [agent.usageRestricted](./values.yaml#L939) | bool | Enable the possibility to restrict the usage of this agent to specific folder. This flag correspond to the "Restrict pipeline support to authorized folders" flag in kubernetes plugin UI | `false` |
| [agent.useDefaultServiceAccount](./values.yaml#L923) | bool | Use `serviceAccountAgent.name` as the default value for defaults template `serviceAccount` | `true` |
| [agent.volumes](./values.yaml#L1020) | list | Additional volumes | `[]` |
| [agent.waitForPodSec](./values.yaml#L949) | int | Seconds to wait for pod to be running | `600` |
| [agent.websocket](./values.yaml#L970) | bool | Enables agent communication via websockets | `false` |
| [agent.workingDir](./values.yaml#L962) | string | Configure working directory for default agent | `"/home/jenkins/agent"` |
| [agent.workspaceVolume](./values.yaml#L1055) | object | Workspace volume (defaults to EmptyDir) | `{}` |
| [agent.yamlMergeStrategy](./values.yaml#L1145) | string | Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates. Possible values: "merge" or "override" | `"override"` |
| [agent.yamlTemplate](./values.yaml#L1134) | string | The raw yaml of a Pod API Object to merge into the agent spec | `""` |
| [awsSecurityGroupPolicies.enabled](./values.yaml#L1360) | bool | | `false` |
| [awsSecurityGroupPolicies.policies[0].name](./values.yaml#L1362) | string | | `""` |
| [awsSecurityGroupPolicies.policies[0].podSelector](./values.yaml#L1364) | object | | `{}` |
| [awsSecurityGroupPolicies.policies[0].securityGroupIds](./values.yaml#L1363) | list | | `[]` |
| [checkDeprecation](./values.yaml#L1357) | bool | Checks if any deprecated values are used | `true` |
| [additionalAgents](./values.yaml#L1199) | object | Configure additional | `{}` |
| [additionalClouds](./values.yaml#L1224) | object | | `{}` |
| [agent.TTYEnabled](./values.yaml#L1105) | bool | Allocate pseudo tty to the side container | `false` |
| [agent.additionalContainers](./values.yaml#L1152) | list | Add additional containers to the agents | `[]` |
| [agent.alwaysPullImage](./values.yaml#L998) | bool | Always pull agent container image before build | `false` |
| [agent.annotations](./values.yaml#L1148) | object | Annotations to apply to the pod | `{}` |
| [agent.args](./values.yaml#L1099) | string | Arguments passed to command to execute | `"${computer.jnlpmac} ${computer.name}"` |
| [agent.command](./values.yaml#L1097) | string | Command to execute when side container starts | `nil` |
| [agent.componentName](./values.yaml#L966) | string | | `"jenkins-agent"` |
| [agent.connectTimeout](./values.yaml#L1146) | int | Timeout in seconds for an agent to be online | `100` |
| [agent.containerCap](./values.yaml#L1107) | int | Max number of agents to launch | `10` |
| [agent.customJenkinsLabels](./values.yaml#L963) | list | Append Jenkins labels to the agent | `[]` |
| [agent.defaultsProviderTemplate](./values.yaml#L917) | string | The name of the pod template to use for providing default values | `""` |
| [agent.directConnection](./values.yaml#L969) | bool | | `false` |
| [agent.disableDefaultAgent](./values.yaml#L1170) | bool | Disable the default Jenkins Agent configuration | `false` |
| [agent.enabled](./values.yaml#L915) | bool | Enable Kubernetes plugin jnlp-agent podTemplate | `true` |
| [agent.envVars](./values.yaml#L1080) | list | Environment variables for the agent Pod | `[]` |
| [agent.garbageCollection.enabled](./values.yaml#L1114) | bool | When enabled, Jenkins will periodically check for orphan pods that have not been touched for the given timeout period and delete them. | `false` |
| [agent.garbageCollection.namespaces](./values.yaml#L1116) | string | Namespaces to look at for garbage collection, in addition to the default namespace defined for the cloud. One namespace per line. | `""` |
| [agent.garbageCollection.timeout](./values.yaml#L1121) | int | Timeout value for orphaned pods | `300` |
| [agent.hostNetworking](./values.yaml#L977) | bool | Enables the agent to use the host network | `false` |
| [agent.idleMinutes](./values.yaml#L1124) | int | Allows the Pod to remain active for reuse until the configured number of minutes has passed since the last step was executed on it | `0` |
| [agent.image.repository](./values.yaml#L956) | string | Repository to pull the agent jnlp image from | `"jenkins/inbound-agent"` |
| [agent.image.tag](./values.yaml#L958) | string | Tag of the image to pull | `"3283.v92c105e0f819-9"` |
| [agent.imagePullSecretName](./values.yaml#L965) | string | Name of the secret to be used to pull the image | `nil` |
| [agent.inheritYamlMergeStrategy](./values.yaml#L1144) | bool | Controls whether the defined yaml merge strategy will be inherited if another defined pod template is configured to inherit from the current one | `false` |
| [agent.jenkinsTunnel](./values.yaml#L933) | string | Overrides the Kubernetes Jenkins tunnel | `nil` |
| [agent.jenkinsUrl](./values.yaml#L929) | string | Overrides the Kubernetes Jenkins URL | `nil` |
| [agent.jnlpregistry](./values.yaml#L953) | string | Custom registry used to pull the agent jnlp image from | `nil` |
| [agent.kubernetesConnectTimeout](./values.yaml#L939) | int | The connection timeout in seconds for connections to Kubernetes API. The minimum value is 5 | `5` |
| [agent.kubernetesReadTimeout](./values.yaml#L941) | int | The read timeout in seconds for connections to Kubernetes API. The minimum value is 15 | `15` |
| [agent.livenessProbe](./values.yaml#L988) | object | | `{}` |
| [agent.maxRequestsPerHostStr](./values.yaml#L943) | string | The maximum concurrent connections to Kubernetes API | `"32"` |
| [agent.namespace](./values.yaml#L949) | string | Namespace in which the Kubernetes agents should be launched | `nil` |
| [agent.nodeSelector](./values.yaml#L1091) | object | Node labels for pod assignment | `{}` |
| [agent.nodeUsageMode](./values.yaml#L961) | string | | `"NORMAL"` |
| [agent.podLabels](./values.yaml#L951) | object | Custom Pod labels (an object with `label-key: label-value` pairs) | `{}` |
| [agent.podName](./values.yaml#L1109) | string | Agent Pod base name | `"default"` |
| [agent.podRetention](./values.yaml#L1007) | string | | `"Never"` |
| [agent.podTemplates](./values.yaml#L1180) | object | Configures extra pod templates for the default kubernetes cloud | `{}` |
| [agent.privileged](./values.yaml#L971) | bool | Agent privileged container | `false` |
| [agent.resources](./values.yaml#L979) | object | Resources allocation (Requests and Limits) | `{"limits":{"cpu":"512m","memory":"512Mi"},"requests":{"cpu":"512m","memory":"512Mi"}}` |
| [agent.restrictedPssSecurityContext](./values.yaml#L1004) | bool | Set a restricted securityContext on jnlp containers | `false` |
| [agent.retentionTimeout](./values.yaml#L945) | int | Time in minutes after which the Kubernetes cloud plugin will clean up an idle worker that has not already terminated | `5` |
| [agent.runAsGroup](./values.yaml#L975) | string | Configure container group | `nil` |
| [agent.runAsUser](./values.yaml#L973) | string | Configure container user | `nil` |
| [agent.secretEnvVars](./values.yaml#L1084) | list | Mount a secret as environment variable | `[]` |
| [agent.serviceAccount](./values.yaml#L925) | string | Override the default service account | `serviceAccountAgent.name` if `agent.useDefaultServiceAccount` is `true` |
| [agent.showRawYaml](./values.yaml#L1011) | bool | | `true` |
| [agent.sideContainerName](./values.yaml#L1101) | string | Side container name | `"jnlp"` |
| [agent.skipTlsVerify](./values.yaml#L935) | bool | Disables the verification of the controller certificate on remote connection. This flag correspond to the "Disable https certificate check" flag in kubernetes plugin UI | `false` |
| [agent.usageRestricted](./values.yaml#L937) | bool | Enable the possibility to restrict the usage of this agent to specific folder. This flag correspond to the "Restrict pipeline support to authorized folders" flag in kubernetes plugin UI | `false` |
| [agent.useDefaultServiceAccount](./values.yaml#L921) | bool | Use `serviceAccountAgent.name` as the default value for defaults template `serviceAccount` | `true` |
| [agent.volumes](./values.yaml#L1018) | list | Additional volumes | `[]` |
| [agent.waitForPodSec](./values.yaml#L947) | int | Seconds to wait for pod to be running | `600` |
| [agent.websocket](./values.yaml#L968) | bool | Enables agent communication via websockets | `false` |
| [agent.workingDir](./values.yaml#L960) | string | Configure working directory for default agent | `"/home/jenkins/agent"` |
| [agent.workspaceVolume](./values.yaml#L1053) | object | Workspace volume (defaults to EmptyDir) | `{}` |
| [agent.yamlMergeStrategy](./values.yaml#L1142) | string | Defines how the raw yaml field gets merged with yaml definitions from inherited pod templates. Possible values: "merge" or "override" | `"override"` |
| [agent.yamlTemplate](./values.yaml#L1131) | string | The raw yaml of a Pod API Object to merge into the agent spec | `""` |
| [awsSecurityGroupPolicies.enabled](./values.yaml#L1356) | bool | | `false` |
| [awsSecurityGroupPolicies.policies[0].name](./values.yaml#L1358) | string | | `""` |
| [awsSecurityGroupPolicies.policies[0].podSelector](./values.yaml#L1360) | object | | `{}` |
| [awsSecurityGroupPolicies.policies[0].securityGroupIds](./values.yaml#L1359) | list | | `[]` |
| [checkDeprecation](./values.yaml#L1353) | bool | Checks if any deprecated values are used | `true` |
| [clusterZone](./values.yaml#L21) | string | Override the cluster name for FQDN resolving | `"cluster.local"` |
| [controller.JCasC.authorizationStrategy](./values.yaml#L542) | string | Jenkins Config as Code Authorization Strategy-section | `"loggedInUsersCanDoAnything:\n allowAnonymousRead: false"` |
| [controller.JCasC.configMapAnnotations](./values.yaml#L547) | object | Annotations for the JCasC ConfigMap | `{}` |
| [controller.JCasC.configScripts](./values.yaml#L516) | object | List of Jenkins Config as Code scripts | `{}` |
| [controller.JCasC.configUrls](./values.yaml#L513) | list | Remote URLs for configuration files. | `[]` |
| [controller.JCasC.defaultConfig](./values.yaml#L507) | bool | Enables default Jenkins configuration via configuration as code plugin | `true` |
| [controller.JCasC.overwriteConfiguration](./values.yaml#L511) | bool | Whether Jenkins Config as Code should overwrite any existing configuration | `false` |
| [controller.JCasC.security](./values.yaml#L523) | object | Jenkins Config as Code security-section | `{"apiToken":{"creationOfLegacyTokenEnabled":false,"tokenGenerationOnCreationEnabled":false,"usageStatisticsEnabled":true}}` |
| [controller.JCasC.securityRealm](./values.yaml#L531) | string | Jenkins Config as Code Security Realm-section | `"local:\n allowsSignup: false\n enableCaptcha: false\n users:\n - id: \"${chart-admin-username}\"\n name: \"Jenkins Admin\"\n password: \"${chart-admin-password}\""` |
| [controller.additionalExistingSecrets](./values.yaml#L468) | list | List of additional existing secrets to mount | `[]` |
| [controller.additionalPlugins](./values.yaml#L418) | list | List of plugins to install in addition to those listed in controller.installPlugins | `[]` |
| [controller.additionalSecrets](./values.yaml#L477) | list | List of additional secrets to create and mount | `[]` |
| [controller.admin.createSecret](./values.yaml#L90) | bool | Create secret for admin user | `true` |
| [controller.admin.existingSecret](./values.yaml#L93) | string | The name of an existing secret containing the admin credentials | `""` |
| [controller.admin.password](./values.yaml#L80) | string | Admin password created as a secret if `controller.admin.createSecret` is true | `<random password>` |
| [controller.admin.passwordKey](./values.yaml#L85) | string | The key in the existing admin secret containing the password | `"jenkins-admin-password"` |
| [controller.admin.userKey](./values.yaml#L83) | string | The key in the existing admin secret containing the username | `"jenkins-admin-user"` |
| [controller.admin.username](./values.yaml#L77) | string | Admin username created as a secret if `controller.admin.createSecret` is true | `"admin"` |
| [controller.affinity](./values.yaml#L671) | object | Affinity settings | `{}` |
| [controller.agentListenerEnabled](./values.yaml#L327) | bool | Create Agent listener service | `true` |
| [controller.agentListenerExternalTrafficPolicy](./values.yaml#L337) | string | Traffic Policy of for the agentListener service | `nil` |
| [controller.agentListenerHostPort](./values.yaml#L331) | string | Host port to listen for agents | `nil` |
| [controller.agentListenerLoadBalancerIP](./values.yaml#L367) | string | Static IP for the agentListener LoadBalancer | `nil` |
| [controller.agentListenerLoadBalancerSourceRanges](./values.yaml#L339) | list | Allowed inbound IP for the agentListener service | `["0.0.0.0/0"]` |
| [controller.agentListenerNodePort](./values.yaml#L333) | string | Node port to listen for agents | `nil` |
| [controller.agentListenerPort](./values.yaml#L329) | int | Listening port for agents | `50000` |
| [controller.agentListenerServiceAnnotations](./values.yaml#L362) | object | Annotations for the agentListener service | `{}` |
| [controller.agentListenerServiceType](./values.yaml#L359) | string | Defines how to expose the agentListener service | `"ClusterIP"` |
| [controller.backendconfig.annotations](./values.yaml#L775) | object | backendconfig annotations | `{}` |
| [controller.backendconfig.apiVersion](./values.yaml#L769) | string | backendconfig API version | `"extensions/v1beta1"` |
| [controller.backendconfig.enabled](./values.yaml#L767) | bool | Enables backendconfig | `false` |
| [controller.backendconfig.labels](./values.yaml#L773) | object | backendconfig labels | `{}` |
| [controller.backendconfig.name](./values.yaml#L771) | string | backendconfig name | `nil` |
| [controller.backendconfig.spec](./values.yaml#L777) | object | backendconfig spec | `{}` |
| [controller.cloudName](./values.yaml#L496) | string | Name of default cloud configuration. | `"kubernetes"` |
| [controller.clusterIp](./values.yaml#L222) | string | k8s service clusterIP. Only used if serviceType is ClusterIP | `nil` |
| [controller.JCasC.authorizationStrategy](./values.yaml#L543) | string | Jenkins Config as Code Authorization Strategy-section | `"loggedInUsersCanDoAnything:\n allowAnonymousRead: false"` |
| [controller.JCasC.configMapAnnotations](./values.yaml#L548) | object | Annotations for the JCasC ConfigMap | `{}` |
| [controller.JCasC.configScripts](./values.yaml#L517) | object | List of Jenkins Config as Code scripts | `{}` |
| [controller.JCasC.configUrls](./values.yaml#L514) | list | Remote URLs for configuration files. | `[]` |
| [controller.JCasC.defaultConfig](./values.yaml#L508) | bool | Enables default Jenkins configuration via configuration as code plugin | `true` |
| [controller.JCasC.overwriteConfiguration](./values.yaml#L512) | bool | Whether Jenkins Config as Code should overwrite any existing configuration | `false` |
| [controller.JCasC.security](./values.yaml#L524) | object | Jenkins Config as Code security-section | `{"apiToken":{"creationOfLegacyTokenEnabled":false,"tokenGenerationOnCreationEnabled":false,"usageStatisticsEnabled":true}}` |
| [controller.JCasC.securityRealm](./values.yaml#L532) | string | Jenkins Config as Code Security Realm-section | `"local:\n allowsSignup: false\n enableCaptcha: false\n users:\n - id: \"${chart-admin-username}\"\n name: \"Jenkins Admin\"\n password: \"${chart-admin-password}\""` |
| [controller.additionalExistingSecrets](./values.yaml#L469) | list | List of additional existing secrets to mount | `[]` |
| [controller.additionalPlugins](./values.yaml#L419) | list | List of plugins to install in addition to those listed in controller.installPlugins | `[]` |
| [controller.additionalSecrets](./values.yaml#L478) | list | List of additional secrets to create and mount | `[]` |
| [controller.admin.createSecret](./values.yaml#L91) | bool | Create secret for admin user | `true` |
| [controller.admin.existingSecret](./values.yaml#L94) | string | The name of an existing secret containing the admin credentials | `""` |
| [controller.admin.password](./values.yaml#L81) | string | Admin password created as a secret if `controller.admin.createSecret` is true | `<random password>` |
| [controller.admin.passwordKey](./values.yaml#L86) | string | The key in the existing admin secret containing the password | `"jenkins-admin-password"` |
| [controller.admin.userKey](./values.yaml#L84) | string | The key in the existing admin secret containing the username | `"jenkins-admin-user"` |
| [controller.admin.username](./values.yaml#L78) | string | Admin username created as a secret if `controller.admin.createSecret` is true | `"admin"` |
| [controller.affinity](./values.yaml#L670) | object | Affinity settings | `{}` |
| [controller.agentListenerEnabled](./values.yaml#L328) | bool | Create Agent listener service | `true` |
| [controller.agentListenerExternalTrafficPolicy](./values.yaml#L338) | string | Traffic Policy of for the agentListener service | `nil` |
| [controller.agentListenerHostPort](./values.yaml#L332) | string | Host port to listen for agents | `nil` |
| [controller.agentListenerLoadBalancerIP](./values.yaml#L368) | string | Static IP for the agentListener LoadBalancer | `nil` |
| [controller.agentListenerLoadBalancerSourceRanges](./values.yaml#L340) | list | Allowed inbound IP for the agentListener service | `["0.0.0.0/0"]` |
| [controller.agentListenerNodePort](./values.yaml#L334) | string | Node port to listen for agents | `nil` |
| [controller.agentListenerPort](./values.yaml#L330) | int | Listening port for agents | `50000` |
| [controller.agentListenerServiceAnnotations](./values.yaml#L363) | object | Annotations for the agentListener service | `{}` |
| [controller.agentListenerServiceType](./values.yaml#L360) | string | Defines how to expose the agentListener service | `"ClusterIP"` |
| [controller.backendconfig.annotations](./values.yaml#L773) | object | backendconfig annotations | `{}` |
| [controller.backendconfig.apiVersion](./values.yaml#L767) | string | backendconfig API version | `"extensions/v1beta1"` |
| [controller.backendconfig.enabled](./values.yaml#L765) | bool | Enables backendconfig | `false` |
| [controller.backendconfig.labels](./values.yaml#L771) | object | backendconfig labels | `{}` |
| [controller.backendconfig.name](./values.yaml#L769) | string | backendconfig name | `nil` |
| [controller.backendconfig.spec](./values.yaml#L775) | object | backendconfig spec | `{}` |
| [controller.cloudName](./values.yaml#L497) | string | Name of default cloud configuration. | `"kubernetes"` |
| [controller.clusterIp](./values.yaml#L223) | string | k8s service clusterIP. Only used if serviceType is ClusterIP | `nil` |
| [controller.componentName](./values.yaml#L34) | string | Used for label app.kubernetes.io/component | `"jenkins-controller"` |
| [controller.containerEnv](./values.yaml#L155) | list | Environment variables for Jenkins Container | `[]` |
| [controller.containerEnvFrom](./values.yaml#L152) | list | Environment variable sources for Jenkins Container | `[]` |
| [controller.containerSecurityContext](./values.yaml#L210) | object | Allow controlling the securityContext for the jenkins container | `{"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true,"runAsGroup":1000,"runAsUser":1000}` |
| [controller.csrf.defaultCrumbIssuer.enabled](./values.yaml#L348) | bool | Enable the default CSRF Crumb issuer | `true` |
| [controller.csrf.defaultCrumbIssuer.proxyCompatability](./values.yaml#L350) | bool | Enable proxy compatibility | `true` |
| [controller.customInitContainers](./values.yaml#L550) | list | Custom init-container specification in raw-yaml format | `[]` |
| [controller.containerEnv](./values.yaml#L156) | list | Environment variables for Jenkins Container | `[]` |
| [controller.containerEnvFrom](./values.yaml#L153) | list | Environment variable sources for Jenkins Container | `[]` |
| [controller.containerSecurityContext](./values.yaml#L211) | object | Allow controlling the securityContext for the jenkins container | `{"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true,"runAsGroup":1000,"runAsUser":1000}` |
| [controller.csrf.defaultCrumbIssuer.enabled](./values.yaml#L349) | bool | Enable the default CSRF Crumb issuer | `true` |
| [controller.csrf.defaultCrumbIssuer.proxyCompatability](./values.yaml#L351) | bool | Enable proxy compatibility | `true` |
| [controller.customInitContainers](./values.yaml#L551) | list | Custom init-container specification in raw-yaml format | `[]` |
| [controller.customJenkinsLabels](./values.yaml#L68) | list | Append Jenkins labels to the controller | `[]` |
| [controller.disableRememberMe](./values.yaml#L59) | bool | Disable use of remember me | `false` |
| [controller.disabledAgentProtocols](./values.yaml#L342) | list | Disabled agent protocols | `["JNLP-connect","JNLP2-connect"]` |
| [controller.enableRawHtmlMarkupFormatter](./values.yaml#L438) | bool | Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter) | `false` |
| [controller.enableServiceLinks](./values.yaml#L129) | bool | | `false` |
| [controller.disabledAgentProtocols](./values.yaml#L343) | list | Disabled agent protocols | `["JNLP-connect","JNLP2-connect"]` |
| [controller.enableRawHtmlMarkupFormatter](./values.yaml#L439) | bool | Enable HTML parsing using OWASP Markup Formatter Plugin (antisamy-markup-formatter) | `false` |
| [controller.enableServiceLinks](./values.yaml#L130) | bool | | `false` |
| [controller.executorMode](./values.yaml#L65) | string | Sets the executor mode of the Jenkins node. Possible values are "NORMAL" or "EXCLUSIVE" | `"NORMAL"` |
| [controller.existingSecret](./values.yaml#L465) | string | | `nil` |
| [controller.extraPorts](./values.yaml#L397) | list | Optionally configure other ports to expose in the controller container | `[]` |
| [controller.fsGroup](./values.yaml#L191) | int | Deprecated in favor of `controller.podSecurityContextOverride`. uid that will be used for persistent volume. | `1000` |
| [controller.googlePodMonitor.enabled](./values.yaml#L838) | bool | | `false` |
| [controller.googlePodMonitor.scrapeEndpoint](./values.yaml#L843) | string | | `"/prometheus"` |
| [controller.googlePodMonitor.scrapeInterval](./values.yaml#L841) | string | | `"60s"` |
| [controller.healthProbes](./values.yaml#L257) | bool | Enable Kubernetes Probes configuration configured in `controller.probes` | `true` |
| [controller.hostAliases](./values.yaml#L791) | list | Allows for adding entries to Pod /etc/hosts | `[]` |
| [controller.existingSecret](./values.yaml#L466) | string | | `nil` |
| [controller.extraPorts](./values.yaml#L398) | list | Optionally configure other ports to expose in the controller container | `[]` |
| [controller.fsGroup](./values.yaml#L192) | int | Deprecated in favor of `controller.podSecurityContextOverride`. uid that will be used for persistent volume. | `1000` |
| [controller.googlePodMonitor.enabled](./values.yaml#L836) | bool | | `false` |
| [controller.googlePodMonitor.scrapeEndpoint](./values.yaml#L841) | string | | `"/prometheus"` |
| [controller.googlePodMonitor.scrapeInterval](./values.yaml#L839) | string | | `"60s"` |
| [controller.healthProbes](./values.yaml#L258) | bool | Enable Kubernetes Probes configuration configured in `controller.probes` | `true` |
| [controller.hostAliases](./values.yaml#L789) | list | Allows for adding entries to Pod /etc/hosts | `[]` |
| [controller.hostNetworking](./values.yaml#L70) | bool | | `false` |
| [controller.httpsKeyStore.disableSecretMount](./values.yaml#L859) | bool | | `false` |
| [controller.httpsKeyStore.enable](./values.yaml#L850) | bool | Enables HTTPS keystore on jenkins controller | `false` |
| [controller.httpsKeyStore.fileName](./values.yaml#L867) | string | Jenkins keystore filename which will appear under controller.httpsKeyStore.path | `"keystore.jks"` |
| [controller.httpsKeyStore.httpPort](./values.yaml#L863) | int | HTTP Port that Jenkins should listen to along with HTTPS, it also serves as the liveness and readiness probes port. | `8081` |
| [controller.httpsKeyStore.jenkinsHttpsJksPasswordSecretKey](./values.yaml#L858) | string | Name of the key in the secret that contains the JKS password | `"https-jks-password"` |
| [controller.httpsKeyStore.jenkinsHttpsJksPasswordSecretName](./values.yaml#L856) | string | Name of the secret that contains the JKS password, if it is not in the same secret as the JKS file | `""` |
| [controller.httpsKeyStore.jenkinsHttpsJksSecretKey](./values.yaml#L854) | string | Name of the key in the secret that already has ssl keystore | `"jenkins-jks-file"` |
| [controller.httpsKeyStore.jenkinsHttpsJksSecretName](./values.yaml#L852) | string | Name of the secret that already has ssl keystore | `""` |
| [controller.httpsKeyStore.jenkinsKeyStoreBase64Encoded](./values.yaml#L872) | string | Base64 encoded Keystore content. Keystore must be converted to base64 then being pasted here | `nil` |
| [controller.httpsKeyStore.password](./values.yaml#L869) | string | Jenkins keystore password | `"password"` |
| [controller.httpsKeyStore.path](./values.yaml#L865) | string | Path of HTTPS keystore file | `"/var/jenkins_keystore"` |
| [controller.httpsKeyStore.disableSecretMount](./values.yaml#L857) | bool | | `false` |
| [controller.httpsKeyStore.enable](./values.yaml#L848) | bool | Enables HTTPS keystore on jenkins controller | `false` |
| [controller.httpsKeyStore.fileName](./values.yaml#L865) | string | Jenkins keystore filename which will appear under controller.httpsKeyStore.path | `"keystore.jks"` |
| [controller.httpsKeyStore.httpPort](./values.yaml#L861) | int | HTTP Port that Jenkins should listen to along with HTTPS, it also serves as the liveness and readiness probes port. | `8081` |
| [controller.httpsKeyStore.jenkinsHttpsJksPasswordSecretKey](./values.yaml#L856) | string | Name of the key in the secret that contains the JKS password | `"https-jks-password"` |
| [controller.httpsKeyStore.jenkinsHttpsJksPasswordSecretName](./values.yaml#L854) | string | Name of the secret that contains the JKS password, if it is not in the same secret as the JKS file | `""` |
| [controller.httpsKeyStore.jenkinsHttpsJksSecretKey](./values.yaml#L852) | string | Name of the key in the secret that already has ssl keystore | `"jenkins-jks-file"` |
| [controller.httpsKeyStore.jenkinsHttpsJksSecretName](./values.yaml#L850) | string | Name of the secret that already has ssl keystore | `""` |
| [controller.httpsKeyStore.jenkinsKeyStoreBase64Encoded](./values.yaml#L870) | string | Base64 encoded Keystore content. Keystore must be converted to base64 then being pasted here | `nil` |
| [controller.httpsKeyStore.password](./values.yaml#L867) | string | Jenkins keystore password | `"password"` |
| [controller.httpsKeyStore.path](./values.yaml#L863) | string | Path of HTTPS keystore file | `"/var/jenkins_keystore"` |
| [controller.image.pullPolicy](./values.yaml#L47) | string | Controller image pull policy | `"Always"` |
| [controller.image.registry](./values.yaml#L37) | string | Controller image registry | `"docker.io"` |
| [controller.image.repository](./values.yaml#L39) | string | Controller image repository | `"jenkins/jenkins"` |
| [controller.image.tag](./values.yaml#L42) | string | Controller image tag override; i.e., tag: "2.440.1-jdk21" | `nil` |
| [controller.image.tagLabel](./values.yaml#L45) | string | Controller image tag label | `"jdk21"` |
| [controller.image.tag](./values.yaml#L42) | string | Controller image tag override; i.e., tag: "2.440.1-jdk17" | `nil` |
| [controller.image.tagLabel](./values.yaml#L45) | string | Controller image tag label | `"jdk17"` |
| [controller.imagePullSecretName](./values.yaml#L49) | string | Controller image pull secret | `nil` |
| [controller.ingress.annotations](./values.yaml#L713) | object | Ingress annotations | `{}` |
| [controller.ingress.apiVersion](./values.yaml#L709) | string | Ingress API version | `"extensions/v1beta1"` |
| [controller.ingress.enabled](./values.yaml#L692) | bool | Enables ingress | `false` |
| [controller.ingress.hostName](./values.yaml#L727) | string | Ingress hostname | `nil` |
| [controller.ingress.labels](./values.yaml#L711) | object | Ingress labels | `{}` |
| [controller.ingress.path](./values.yaml#L723) | string | Ingress path | `nil` |
| [controller.ingress.paths](./values.yaml#L696) | list | Override for the default Ingress paths | `[]` |
| [controller.ingress.resourceRootUrl](./values.yaml#L729) | string | Hostname to serve assets from | `nil` |
| [controller.ingress.tls](./values.yaml#L731) | list | Ingress TLS configuration | `[]` |
| [controller.initConfigMap](./values.yaml#L455) | string | Name of the existing ConfigMap that contains init scripts | `nil` |
| [controller.initContainerEnv](./values.yaml#L146) | list | Environment variables for Init Container | `[]` |
| [controller.initContainerEnvFrom](./values.yaml#L142) | list | Environment variable sources for Init Container | `[]` |
| [controller.initContainerResources](./values.yaml#L133) | object | Resources allocation (Requests and Limits) for Init Container | `{}` |
| [controller.initScripts](./values.yaml#L451) | object | Map of groovy init scripts to be executed during Jenkins controller start | `{}` |
| [controller.initializeOnce](./values.yaml#L423) | bool | Initialize only on first installation. Ensures plugins do not get updated inadvertently. Requires `persistence.enabled` to be set to `true` | `false` |
| [controller.installLatestPlugins](./values.yaml#L412) | bool | Download the minimum required version or latest version of all dependencies | `true` |
| [controller.installLatestSpecifiedPlugins](./values.yaml#L415) | bool | Set to true to download the latest version of any plugin that is requested to have the latest version | `false` |
| [controller.installPlugins](./values.yaml#L404) | list | List of Jenkins plugins to install. If you don't want to install plugins, set it to `false` | `["kubernetes:4340.v345364d31a_2a_","workflow-aggregator:608.v67378e9d3db_1","git:5.7.0","configuration-as-code:1967.va_968e15fd05b_"]` |
| [controller.javaOpts](./values.yaml#L161) | string | Append to `JAVA_OPTS` env var | `nil` |
| [controller.jenkinsAdminEmail](./values.yaml#L95) | string | Email address for the administrator of the Jenkins instance | `nil` |
| [controller.jenkinsHome](./values.yaml#L100) | string | Custom Jenkins home path | `"/var/jenkins_home"` |
| [controller.jenkinsOpts](./values.yaml#L163) | string | Append to `JENKINS_OPTS` env var | `nil` |
| [controller.jenkinsRef](./values.yaml#L105) | string | Custom Jenkins reference path | `"/usr/share/jenkins/ref"` |
| [controller.jenkinsUriPrefix](./values.yaml#L178) | string | Root URI Jenkins will be served on | `nil` |
| [controller.jenkinsUrl](./values.yaml#L173) | string | Set Jenkins URL if you are not using the ingress definitions provided by the chart | `nil` |
| [controller.jenkinsUrlProtocol](./values.yaml#L170) | string | Set protocol for Jenkins URL; `https` if `controller.ingress.tls`, `http` otherwise | `nil` |
| [controller.jenkinsWar](./values.yaml#L108) | string | | `"/usr/share/jenkins/jenkins.war"` |
| [controller.jmxPort](./values.yaml#L394) | string | Open a port, for JMX stats | `nil` |
| [controller.legacyRemotingSecurityEnabled](./values.yaml#L370) | bool | Whether legacy remoting security should be enabled | `false` |
| [controller.ingress.annotations](./values.yaml#L712) | object | Ingress annotations | `{}` |
| [controller.ingress.apiVersion](./values.yaml#L708) | string | Ingress API version | `"extensions/v1beta1"` |
| [controller.ingress.enabled](./values.yaml#L691) | bool | Enables ingress | `false` |
| [controller.ingress.hostName](./values.yaml#L725) | string | Ingress hostname | `nil` |
| [controller.ingress.labels](./values.yaml#L710) | object | Ingress labels | `{}` |
| [controller.ingress.path](./values.yaml#L721) | string | Ingress path | `nil` |
| [controller.ingress.paths](./values.yaml#L695) | list | Override for the default Ingress paths | `[]` |
| [controller.ingress.resourceRootUrl](./values.yaml#L727) | string | Hostname to serve assets from | `nil` |
| [controller.ingress.tls](./values.yaml#L729) | list | Ingress TLS configuration | `[]` |
| [controller.initConfigMap](./values.yaml#L456) | string | Name of the existing ConfigMap that contains init scripts | `nil` |
| [controller.initContainerEnv](./values.yaml#L147) | list | Environment variables for Init Container | `[]` |
| [controller.initContainerEnvFrom](./values.yaml#L143) | list | Environment variable sources for Init Container | `[]` |
| [controller.initContainerResources](./values.yaml#L134) | object | Resources allocation (Requests and Limits) for Init Container | `{}` |
| [controller.initScripts](./values.yaml#L452) | object | Map of groovy init scripts to be executed during Jenkins controller start | `{}` |
| [controller.initializeOnce](./values.yaml#L424) | bool | Initialize only on first installation. Ensures plugins do not get updated inadvertently. Requires `persistence.enabled` to be set to `true` | `false` |
| [controller.installLatestPlugins](./values.yaml#L413) | bool | Download the minimum required version or latest version of all dependencies | `true` |
| [controller.installLatestSpecifiedPlugins](./values.yaml#L416) | bool | Set to true to download the latest version of any plugin that is requested to have the latest version | `false` |
| [controller.installPlugins](./values.yaml#L405) | list | List of Jenkins plugins to install. If you don't want to install plugins, set it to `false` | `["kubernetes:4314.v5b_846cf499eb_","workflow-aggregator:600.vb_57cdd26fdd7","git:5.7.0","configuration-as-code:1932.v75cb_b_f1b_698d"]` |
| [controller.javaOpts](./values.yaml#L162) | string | Append to `JAVA_OPTS` env var | `nil` |
| [controller.jenkinsAdminEmail](./values.yaml#L96) | string | Email address for the administrator of the Jenkins instance | `nil` |
| [controller.jenkinsHome](./values.yaml#L101) | string | Custom Jenkins home path | `"/var/jenkins_home"` |
| [controller.jenkinsOpts](./values.yaml#L164) | string | Append to `JENKINS_OPTS` env var | `nil` |
| [controller.jenkinsRef](./values.yaml#L106) | string | Custom Jenkins reference path | `"/usr/share/jenkins/ref"` |
| [controller.jenkinsUriPrefix](./values.yaml#L179) | string | Root URI Jenkins will be served on | `nil` |
| [controller.jenkinsUrl](./values.yaml#L174) | string | Set Jenkins URL if you are not using the ingress definitions provided by the chart | `nil` |
| [controller.jenkinsUrlProtocol](./values.yaml#L171) | string | Set protocol for Jenkins URL; `https` if `controller.ingress.tls`, `http` otherwise | `nil` |
| [controller.jenkinsWar](./values.yaml#L109) | string | | `"/usr/share/jenkins/jenkins.war"` |
| [controller.jmxPort](./values.yaml#L395) | string | Open a port, for JMX stats | `nil` |
| [controller.legacyRemotingSecurityEnabled](./values.yaml#L371) | bool | Whether legacy remoting security should be enabled | `false` |
| [controller.lifecycle](./values.yaml#L51) | object | Lifecycle specification for controller-container | `{}` |
| [controller.loadBalancerIP](./values.yaml#L385) | string | Optionally assign a known public LB IP | `nil` |
| [controller.loadBalancerSourceRanges](./values.yaml#L381) | list | Allowed inbound IP addresses | `["0.0.0.0/0"]` |
| [controller.markupFormatter](./values.yaml#L442) | string | Yaml of the markup formatter to use | `"plainText"` |
| [controller.nodePort](./values.yaml#L228) | string | k8s node port. Only used if serviceType is NodePort | `nil` |
| [controller.nodeSelector](./values.yaml#L658) | object | Node labels for pod assignment | `{}` |
| [controller.loadBalancerIP](./values.yaml#L386) | string | Optionally assign a known public LB IP | `nil` |
| [controller.loadBalancerSourceRanges](./values.yaml#L382) | list | Allowed inbound IP addresses | `["0.0.0.0/0"]` |
| [controller.markupFormatter](./values.yaml#L443) | string | Yaml of the markup formatter to use | `"plainText"` |
| [controller.nodePort](./values.yaml#L229) | string | k8s node port. Only used if serviceType is NodePort | `nil` |
| [controller.nodeSelector](./values.yaml#L657) | object | Node labels for pod assignment | `{}` |
| [controller.numExecutors](./values.yaml#L62) | int | Set Number of executors | `0` |
| [controller.overwritePlugins](./values.yaml#L427) | bool | Overwrite installed plugins on start | `false` |
| [controller.overwritePluginsFromImage](./values.yaml#L431) | bool | Overwrite plugins that are already installed in the controller image | `true` |
| [controller.podAnnotations](./values.yaml#L679) | object | Annotations for controller pod | `{}` |
| [controller.podDisruptionBudget.annotations](./values.yaml#L321) | object | | `{}` |
| [controller.podDisruptionBudget.apiVersion](./values.yaml#L319) | string | Policy API version | `"policy/v1beta1"` |
| [controller.podDisruptionBudget.enabled](./values.yaml#L314) | bool | Enable Kubernetes Pod Disruption Budget configuration | `false` |
| [controller.podDisruptionBudget.labels](./values.yaml#L322) | object | | `{}` |
| [controller.podDisruptionBudget.maxUnavailable](./values.yaml#L324) | string | Number of pods that can be unavailable. Either an absolute number or a percentage | `"0"` |
| [controller.podLabels](./values.yaml#L250) | object | Custom Pod labels (an object with `label-key: label-value` pairs) | `{}` |
| [controller.podSecurityContextOverride](./values.yaml#L207) | string | Completely overwrites the contents of the pod security context, ignoring the values provided for `runAsUser`, `fsGroup`, and `securityContextCapabilities` | `nil` |
| [controller.priorityClassName](./values.yaml#L676) | string | The name of a `priorityClass` to apply to the controller pod | `nil` |
| [controller.probes.livenessProbe.failureThreshold](./values.yaml#L275) | int | Set the failure threshold for the liveness probe | `5` |
| [controller.probes.livenessProbe.httpGet.path](./values.yaml#L278) | string | Set the Pod's HTTP path for the liveness probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` |
| [controller.probes.livenessProbe.httpGet.port](./values.yaml#L280) | string | Set the Pod's HTTP port to use for the liveness probe | `"http"` |
| [controller.probes.livenessProbe.initialDelaySeconds](./values.yaml#L289) | string | Set the initial delay for the liveness probe in seconds | `nil` |
| [controller.probes.livenessProbe.periodSeconds](./values.yaml#L282) | int | Set the time interval between two liveness probes executions in seconds | `10` |
| [controller.probes.livenessProbe.timeoutSeconds](./values.yaml#L284) | int | Set the timeout for the liveness probe in seconds | `5` |
| [controller.probes.readinessProbe.failureThreshold](./values.yaml#L293) | int | Set the failure threshold for the readiness probe | `3` |
| [controller.probes.readinessProbe.httpGet.path](./values.yaml#L296) | string | Set the Pod's HTTP path for the liveness probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` |
| [controller.probes.readinessProbe.httpGet.port](./values.yaml#L298) | string | Set the Pod's HTTP port to use for the readiness probe | `"http"` |
| [controller.probes.readinessProbe.initialDelaySeconds](./values.yaml#L307) | string | Set the initial delay for the readiness probe in seconds | `nil` |
| [controller.probes.readinessProbe.periodSeconds](./values.yaml#L300) | int | Set the time interval between two readiness probes executions in seconds | `10` |
| [controller.probes.readinessProbe.timeoutSeconds](./values.yaml#L302) | int | Set the timeout for the readiness probe in seconds | `5` |
| [controller.probes.startupProbe.failureThreshold](./values.yaml#L262) | int | Set the failure threshold for the startup probe | `12` |
| [controller.probes.startupProbe.httpGet.path](./values.yaml#L265) | string | Set the Pod's HTTP path for the startup probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` |
| [controller.probes.startupProbe.httpGet.port](./values.yaml#L267) | string | Set the Pod's HTTP port to use for the startup probe | `"http"` |
| [controller.probes.startupProbe.periodSeconds](./values.yaml#L269) | int | Set the time interval between two startup probes executions in seconds | `10` |
| [controller.probes.startupProbe.timeoutSeconds](./values.yaml#L271) | int | Set the timeout for the startup probe in seconds | `5` |
| [controller.projectNamingStrategy](./values.yaml#L434) | string | | `"standard"` |
| [controller.prometheus.alertingRulesAdditionalLabels](./values.yaml#L824) | object | Additional labels to add to the PrometheusRule object | `{}` |
| [controller.prometheus.alertingrules](./values.yaml#L822) | list | Array of prometheus alerting rules | `[]` |
| [controller.prometheus.enabled](./values.yaml#L807) | bool | Enables prometheus service monitor | `false` |
| [controller.prometheus.metricRelabelings](./values.yaml#L834) | list | | `[]` |
| [controller.prometheus.prometheusRuleNamespace](./values.yaml#L826) | string | Set a custom namespace where to deploy PrometheusRule resource | `""` |
| [controller.prometheus.relabelings](./values.yaml#L832) | list | | `[]` |
| [controller.prometheus.scrapeEndpoint](./values.yaml#L817) | string | The endpoint prometheus should get metrics from | `"/prometheus"` |
| [controller.prometheus.scrapeInterval](./values.yaml#L813) | string | How often prometheus should scrape metrics | `"60s"` |
| [controller.prometheus.serviceMonitorAdditionalLabels](./values.yaml#L809) | object | Additional labels to add to the service monitor object | `{}` |
| [controller.prometheus.serviceMonitorNamespace](./values.yaml#L811) | string | Set a custom namespace where to deploy ServiceMonitor resource | `nil` |
| [controller.publishNotReadyAddresses](./values.yaml#L236) | string | | `nil` |
| [controller.resources](./values.yaml#L114) | object | Resource allocation (Requests and Limits) | `{"limits":{"cpu":"2000m","memory":"4096Mi"},"requests":{"cpu":"50m","memory":"256Mi"}}` |
| [controller.route.annotations](./values.yaml#L786) | object | Route annotations | `{}` |
| [controller.route.enabled](./values.yaml#L782) | bool | Enables openshift route | `false` |
| [controller.route.labels](./values.yaml#L784) | object | Route labels | `{}` |
| [controller.route.path](./values.yaml#L788) | string | Route path | `nil` |
| [controller.runAsUser](./values.yaml#L188) | int | Deprecated in favor of `controller.podSecurityContextOverride`. uid that jenkins runs with. | `1000` |
| [controller.schedulerName](./values.yaml#L654) | string | Name of the Kubernetes scheduler to use | `""` |
| [controller.scriptApproval](./values.yaml#L446) | list | List of groovy functions to approve | `[]` |
| [controller.secondaryingress.annotations](./values.yaml#L749) | object | | `{}` |
| [controller.secondaryingress.apiVersion](./values.yaml#L747) | string | | `"extensions/v1beta1"` |
| [controller.secondaryingress.enabled](./values.yaml#L741) | bool | | `false` |
| [controller.secondaryingress.hostName](./values.yaml#L756) | string | | `nil` |
| [controller.secondaryingress.labels](./values.yaml#L748) | object | | `{}` |
| [controller.secondaryingress.paths](./values.yaml#L744) | list | | `[]` |
| [controller.secondaryingress.tls](./values.yaml#L757) | string | | `nil` |
| [controller.secretClaims](./values.yaml#L489) | list | List of `SecretClaim` resources to create | `[]` |
| [controller.securityContextCapabilities](./values.yaml#L197) | object | | `{}` |
| [controller.serviceAnnotations](./values.yaml#L239) | object | Jenkins controller service annotations | `{}` |
| [controller.serviceExternalTrafficPolicy](./values.yaml#L232) | string | | `nil` |
| [controller.serviceLabels](./values.yaml#L245) | object | Labels for the Jenkins controller-service | `{}` |
| [controller.servicePort](./values.yaml#L224) | int | k8s service port | `8080` |
| [controller.serviceType](./values.yaml#L219) | string | k8s service type | `"ClusterIP"` |
| [controller.shareProcessNamespace](./values.yaml#L123) | bool | | `false` |
| [controller.sidecars.additionalSidecarContainers](./values.yaml#L636) | list | Configures additional sidecar container(s) for the Jenkins controller | `[]` |
| [controller.overwritePlugins](./values.yaml#L428) | bool | Overwrite installed plugins on start | `false` |
| [controller.overwritePluginsFromImage](./values.yaml#L432) | bool | Overwrite plugins that are already installed in the controller image | `true` |
| [controller.podAnnotations](./values.yaml#L678) | object | Annotations for controller pod | `{}` |
| [controller.podDisruptionBudget.annotations](./values.yaml#L322) | object | | `{}` |
| [controller.podDisruptionBudget.apiVersion](./values.yaml#L320) | string | Policy API version | `"policy/v1beta1"` |
| [controller.podDisruptionBudget.enabled](./values.yaml#L315) | bool | Enable Kubernetes Pod Disruption Budget configuration | `false` |
| [controller.podDisruptionBudget.labels](./values.yaml#L323) | object | | `{}` |
| [controller.podDisruptionBudget.maxUnavailable](./values.yaml#L325) | string | Number of pods that can be unavailable. Either an absolute number or a percentage | `"0"` |
| [controller.podLabels](./values.yaml#L251) | object | Custom Pod labels (an object with `label-key: label-value` pairs) | `{}` |
| [controller.podSecurityContextOverride](./values.yaml#L208) | string | Completely overwrites the contents of the pod security context, ignoring the values provided for `runAsUser`, `fsGroup`, and `securityContextCapabilities` | `nil` |
| [controller.priorityClassName](./values.yaml#L675) | string | The name of a `priorityClass` to apply to the controller pod | `nil` |
| [controller.probes.livenessProbe.failureThreshold](./values.yaml#L276) | int | Set the failure threshold for the liveness probe | `5` |
| [controller.probes.livenessProbe.httpGet.path](./values.yaml#L279) | string | Set the Pod's HTTP path for the liveness probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` |
| [controller.probes.livenessProbe.httpGet.port](./values.yaml#L281) | string | Set the Pod's HTTP port to use for the liveness probe | `"http"` |
| [controller.probes.livenessProbe.initialDelaySeconds](./values.yaml#L290) | string | Set the initial delay for the liveness probe in seconds | `nil` |
| [controller.probes.livenessProbe.periodSeconds](./values.yaml#L283) | int | Set the time interval between two liveness probes executions in seconds | `10` |
| [controller.probes.livenessProbe.timeoutSeconds](./values.yaml#L285) | int | Set the timeout for the liveness probe in seconds | `5` |
| [controller.probes.readinessProbe.failureThreshold](./values.yaml#L294) | int | Set the failure threshold for the readiness probe | `3` |
| [controller.probes.readinessProbe.httpGet.path](./values.yaml#L297) | string | Set the Pod's HTTP path for the liveness probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` |
| [controller.probes.readinessProbe.httpGet.port](./values.yaml#L299) | string | Set the Pod's HTTP port to use for the readiness probe | `"http"` |
| [controller.probes.readinessProbe.initialDelaySeconds](./values.yaml#L308) | string | Set the initial delay for the readiness probe in seconds | `nil` |
| [controller.probes.readinessProbe.periodSeconds](./values.yaml#L301) | int | Set the time interval between two readiness probes executions in seconds | `10` |
| [controller.probes.readinessProbe.timeoutSeconds](./values.yaml#L303) | int | Set the timeout for the readiness probe in seconds | `5` |
| [controller.probes.startupProbe.failureThreshold](./values.yaml#L263) | int | Set the failure threshold for the startup probe | `12` |
| [controller.probes.startupProbe.httpGet.path](./values.yaml#L266) | string | Set the Pod's HTTP path for the startup probe | `"{{ default \"\" .Values.controller.jenkinsUriPrefix }}/login"` |
| [controller.probes.startupProbe.httpGet.port](./values.yaml#L268) | string | Set the Pod's HTTP port to use for the startup probe | `"http"` |
| [controller.probes.startupProbe.periodSeconds](./values.yaml#L270) | int | Set the time interval between two startup probes executions in seconds | `10` |
| [controller.probes.startupProbe.timeoutSeconds](./values.yaml#L272) | int | Set the timeout for the startup probe in seconds | `5` |
| [controller.projectNamingStrategy](./values.yaml#L435) | string | | `"standard"` |
| [controller.prometheus.alertingRulesAdditionalLabels](./values.yaml#L822) | object | Additional labels to add to the PrometheusRule object | `{}` |
| [controller.prometheus.alertingrules](./values.yaml#L820) | list | Array of prometheus alerting rules | `[]` |
| [controller.prometheus.enabled](./values.yaml#L805) | bool | Enables prometheus service monitor | `false` |
| [controller.prometheus.metricRelabelings](./values.yaml#L832) | list | | `[]` |
| [controller.prometheus.prometheusRuleNamespace](./values.yaml#L824) | string | Set a custom namespace where to deploy PrometheusRule resource | `""` |
| [controller.prometheus.relabelings](./values.yaml#L830) | list | | `[]` |
| [controller.prometheus.scrapeEndpoint](./values.yaml#L815) | string | The endpoint prometheus should get metrics from | `"/prometheus"` |
| [controller.prometheus.scrapeInterval](./values.yaml#L811) | string | How often prometheus should scrape metrics | `"60s"` |
| [controller.prometheus.serviceMonitorAdditionalLabels](./values.yaml#L807) | object | Additional labels to add to the service monitor object | `{}` |
| [controller.prometheus.serviceMonitorNamespace](./values.yaml#L809) | string | Set a custom namespace where to deploy ServiceMonitor resource | `nil` |
| [controller.publishNotReadyAddresses](./values.yaml#L237) | string | | `nil` |
| [controller.resources](./values.yaml#L115) | object | Resource allocation (Requests and Limits) | `{"limits":{"cpu":"2000m","memory":"4096Mi"},"requests":{"cpu":"50m","memory":"256Mi"}}` |
| [controller.route.annotations](./values.yaml#L784) | object | Route annotations | `{}` |
| [controller.route.enabled](./values.yaml#L780) | bool | Enables openshift route | `false` |
| [controller.route.labels](./values.yaml#L782) | object | Route labels | `{}` |
| [controller.route.path](./values.yaml#L786) | string | Route path | `nil` |
| [controller.runAsUser](./values.yaml#L189) | int | Deprecated in favor of `controller.podSecurityContextOverride`. uid that jenkins runs with. | `1000` |
| [controller.schedulerName](./values.yaml#L653) | string | Name of the Kubernetes scheduler to use | `""` |
| [controller.scriptApproval](./values.yaml#L447) | list | List of groovy functions to approve | `[]` |
| [controller.secondaryingress.annotations](./values.yaml#L747) | object | | `{}` |
| [controller.secondaryingress.apiVersion](./values.yaml#L745) | string | | `"extensions/v1beta1"` |
| [controller.secondaryingress.enabled](./values.yaml#L739) | bool | | `false` |
| [controller.secondaryingress.hostName](./values.yaml#L754) | string | | `nil` |
| [controller.secondaryingress.labels](./values.yaml#L746) | object | | `{}` |
| [controller.secondaryingress.paths](./values.yaml#L742) | list | | `[]` |
| [controller.secondaryingress.tls](./values.yaml#L755) | string | | `nil` |
| [controller.secretClaims](./values.yaml#L490) | list | List of `SecretClaim` resources to create | `[]` |
| [controller.securityContextCapabilities](./values.yaml#L198) | object | | `{}` |
| [controller.serviceAnnotations](./values.yaml#L240) | object | Jenkins controller service annotations | `{}` |
| [controller.serviceExternalTrafficPolicy](./values.yaml#L233) | string | | `nil` |
| [controller.serviceLabels](./values.yaml#L246) | object | Labels for the Jenkins controller-service | `{}` |
| [controller.servicePort](./values.yaml#L225) | int | k8s service port | `8080` |
| [controller.serviceType](./values.yaml#L220) | string | k8s service type | `"ClusterIP"` |
| [controller.shareProcessNamespace](./values.yaml#L124) | bool | | `false` |
| [controller.sidecars.additionalSidecarContainers](./values.yaml#L635) | list | Configures additional sidecar container(s) for the Jenkins controller | `[]` |
| [controller.sidecars.configAutoReload.additionalVolumeMounts](./values.yaml#L581) | list | Enables additional volume mounts for the config auto-reload container | `[]` |
| [controller.sidecars.configAutoReload.containerSecurityContext](./values.yaml#L631) | object | Enable container security context | `{"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true}` |
| [controller.sidecars.configAutoReload.enabled](./values.yaml#L563) | bool | Enable Jenkins Config as Code auto-reload | `true` |
| [controller.sidecars.configAutoReload.env](./values.yaml#L613) | list | Environment variables for the Jenkins Config as Code auto-reload container | `[]` |
| [controller.sidecars.configAutoReload.envFrom](./values.yaml#L611) | list | Environment variable sources for the Jenkins Config as Code auto-reload container | `[]` |
| [controller.sidecars.configAutoReload.folder](./values.yaml#L624) | string | | `"/var/jenkins_home/casc_configs"` |
| [controller.sidecars.configAutoReload.image.registry](./values.yaml#L566) | string | Registry for the image that triggers the reload | `"docker.io"` |
| [controller.sidecars.configAutoReload.image.repository](./values.yaml#L568) | string | Repository of the image that triggers the reload | `"kiwigrid/k8s-sidecar"` |
| [controller.sidecars.configAutoReload.image.tag](./values.yaml#L570) | string | Tag for the image that triggers the reload | `"1.30.3"` |
| [controller.sidecars.configAutoReload.imagePullPolicy](./values.yaml#L571) | string | | `"IfNotPresent"` |
| [controller.sidecars.configAutoReload.logging](./values.yaml#L588) | object | Config auto-reload logging settings | `{"configuration":{"backupCount":3,"formatter":"JSON","logLevel":"INFO","logToConsole":true,"logToFile":false,"maxBytes":1024,"override":false}}` |
| [controller.sidecars.configAutoReload.logging.configuration.override](./values.yaml#L592) | bool | Enables custom log config utilizing using the settings below. | `false` |
| [controller.sidecars.configAutoReload.reqRetryConnect](./values.yaml#L606) | int | How many connection-related errors to retry on | `10` |
| [controller.sidecars.configAutoReload.resources](./values.yaml#L572) | object | | `{}` |
| [controller.sidecars.configAutoReload.scheme](./values.yaml#L601) | string | The scheme to use when connecting to the Jenkins configuration as code endpoint | `"http"` |
| [controller.sidecars.configAutoReload.skipTlsVerify](./values.yaml#L603) | bool | Skip TLS verification when connecting to the Jenkins configuration as code endpoint | `false` |
| [controller.sidecars.configAutoReload.sleepTime](./values.yaml#L608) | string | How many seconds to wait before updating config-maps/secrets (sets METHOD=SLEEP on the sidecar) | `nil` |
| [controller.sidecars.configAutoReload.sshTcpPort](./values.yaml#L622) | int | | `1044` |
| [controller.statefulSetAnnotations](./values.yaml#L681) | object | Annotations for controller StatefulSet | `{}` |
| [controller.statefulSetLabels](./values.yaml#L241) | object | Jenkins controller custom labels for the StatefulSet | `{}` |
| [controller.targetPort](./values.yaml#L226) | int | k8s target port | `8080` |
| [controller.terminationGracePeriodSeconds](./values.yaml#L664) | string | Set TerminationGracePeriodSeconds | `nil` |
| [controller.terminationMessagePath](./values.yaml#L666) | string | Set the termination message path | `nil` |
| [controller.terminationMessagePolicy](./values.yaml#L668) | string | Set the termination message policy | `nil` |
| [controller.testEnabled](./values.yaml#L846) | bool | Can be used to disable rendering controller test resources when using helm template | `true` |
| [controller.tolerations](./values.yaml#L662) | list | Toleration labels for pod assignment | `[]` |
| [controller.topologySpreadConstraints](./values.yaml#L688) | object | Topology spread constraints | `{}` |
| [controller.updateStrategy](./values.yaml#L685) | object | Update strategy for StatefulSet | `{}` |
| [controller.usePodSecurityContext](./values.yaml#L181) | bool | Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set) | `true` |
| [controller.sidecars.configAutoReload.containerSecurityContext](./values.yaml#L630) | object | Enable container security context | `{"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true}` |
| [controller.sidecars.configAutoReload.enabled](./values.yaml#L564) | bool | Enables Jenkins Config as Code auto-reload | `true` |
| [controller.sidecars.configAutoReload.env](./values.yaml#L612) | object | Environment variables for the Jenkins Config as Code auto-reload container | `{}` |
| [controller.sidecars.configAutoReload.envFrom](./values.yaml#L610) | list | Environment variable sources for the Jenkins Config as Code auto-reload container | `[]` |
| [controller.sidecars.configAutoReload.folder](./values.yaml#L623) | string | | `"/var/jenkins_home/casc_configs"` |
| [controller.sidecars.configAutoReload.image.registry](./values.yaml#L567) | string | Registry for the image that triggers the reload | `"docker.io"` |
| [controller.sidecars.configAutoReload.image.repository](./values.yaml#L569) | string | Repository of the image that triggers the reload | `"kiwigrid/k8s-sidecar"` |
| [controller.sidecars.configAutoReload.image.tag](./values.yaml#L571) | string | Tag for the image that triggers the reload | `"1.30.1"` |
| [controller.sidecars.configAutoReload.imagePullPolicy](./values.yaml#L572) | string | | `"IfNotPresent"` |
| [controller.sidecars.configAutoReload.logging](./values.yaml#L587) | object | Config auto-reload logging settings | `{"configuration":{"backupCount":3,"formatter":"JSON","logLevel":"INFO","logToConsole":true,"logToFile":false,"maxBytes":1024,"override":false}}` |
| [controller.sidecars.configAutoReload.logging.configuration.override](./values.yaml#L591) | bool | Enables custom log config utilizing using the settings below. | `false` |
| [controller.sidecars.configAutoReload.reqRetryConnect](./values.yaml#L605) | int | How many connection-related errors to retry on | `10` |
| [controller.sidecars.configAutoReload.resources](./values.yaml#L573) | object | | `{}` |
| [controller.sidecars.configAutoReload.scheme](./values.yaml#L600) | string | The scheme to use when connecting to the Jenkins configuration as code endpoint | `"http"` |
| [controller.sidecars.configAutoReload.skipTlsVerify](./values.yaml#L602) | bool | Skip TLS verification when connecting to the Jenkins configuration as code endpoint | `false` |
| [controller.sidecars.configAutoReload.sleepTime](./values.yaml#L607) | string | How many seconds to wait before updating config-maps/secrets (sets METHOD=SLEEP on the sidecar) | `nil` |
| [controller.sidecars.configAutoReload.sshTcpPort](./values.yaml#L621) | int | | `1044` |
| [controller.statefulSetAnnotations](./values.yaml#L680) | object | Annotations for controller StatefulSet | `{}` |
| [controller.statefulSetLabels](./values.yaml#L242) | object | Jenkins controller custom labels for the StatefulSet | `{}` |
| [controller.targetPort](./values.yaml#L227) | int | k8s target port | `8080` |
| [controller.terminationGracePeriodSeconds](./values.yaml#L663) | string | Set TerminationGracePeriodSeconds | `nil` |
| [controller.terminationMessagePath](./values.yaml#L665) | string | Set the termination message path | `nil` |
| [controller.terminationMessagePolicy](./values.yaml#L667) | string | Set the termination message policy | `nil` |
| [controller.testEnabled](./values.yaml#L844) | bool | Can be used to disable rendering controller test resources when using helm template | `true` |
| [controller.tolerations](./values.yaml#L661) | list | Toleration labels for pod assignment | `[]` |
| [controller.topologySpreadConstraints](./values.yaml#L687) | object | Topology spread constraints | `{}` |
| [controller.updateStrategy](./values.yaml#L684) | object | Update strategy for StatefulSet | `{}` |
| [controller.usePodSecurityContext](./values.yaml#L182) | bool | Enable pod security context (must be `true` if podSecurityContextOverride, runAsUser or fsGroup are set) | `true` |
| [credentialsId](./values.yaml#L27) | string | The Jenkins credentials to access the Kubernetes API server. For the default cluster it is not needed. | `nil` |
| [fullnameOverride](./values.yaml#L13) | string | Override the full resource names | `jenkins-(release-name)` or `jenkins` if the release-name is `jenkins` |
| [helmtest.bats.image.registry](./values.yaml#L1373) | string | Registry of the image used to test the framework | `"docker.io"` |
| [helmtest.bats.image.repository](./values.yaml#L1375) | string | Repository of the image used to test the framework | `"bats/bats"` |
| [helmtest.bats.image.tag](./values.yaml#L1377) | string | Tag of the image to test the framework | `"1.12.0"` |
| [helmtest.bats.image.registry](./values.yaml#L1369) | string | Registry of the image used to test the framework | `"docker.io"` |
| [helmtest.bats.image.repository](./values.yaml#L1371) | string | Repository of the image used to test the framework | `"bats/bats"` |
| [helmtest.bats.image.tag](./values.yaml#L1373) | string | Tag of the image to test the framework | `"1.11.1"` |
| [kubernetesURL](./values.yaml#L24) | string | The URL of the Kubernetes API server | `"https://kubernetes.default"` |
| [nameOverride](./values.yaml#L10) | string | Override the resource name prefix | `Chart.Name` |
| [namespaceOverride](./values.yaml#L16) | string | Override the deployment namespace | `Release.Namespace` |
| [networkPolicy.apiVersion](./values.yaml#L1296) | string | NetworkPolicy ApiVersion | `"networking.k8s.io/v1"` |
| [networkPolicy.enabled](./values.yaml#L1291) | bool | Enable the creation of NetworkPolicy resources | `false` |
| [networkPolicy.externalAgents.except](./values.yaml#L1311) | list | A list of IP sub-ranges to be excluded from the allowlisted IP range | `[]` |
| [networkPolicy.externalAgents.ipCIDR](./values.yaml#L1309) | string | The IP range from which external agents are allowed to connect to controller, i.e., 172.17.0.0/16 | `nil` |
| [networkPolicy.internalAgents.allowed](./values.yaml#L1300) | bool | Allow internal agents (from the same cluster) to connect to controller. Agent pods will be filtered based on PodLabels | `true` |
| [networkPolicy.internalAgents.namespaceLabels](./values.yaml#L1304) | object | A map of labels (keys/values) that agents namespaces must have to be able to connect to controller | `{}` |
| [networkPolicy.internalAgents.podLabels](./values.yaml#L1302) | object | A map of labels (keys/values) that agent pods must have to be able to connect to controller | `{}` |
| [persistence.accessMode](./values.yaml#L1266) | string | The PVC access mode | `"ReadWriteOnce"` |
| [persistence.annotations](./values.yaml#L1262) | object | Annotations for the PVC | `{}` |
| [persistence.dataSource](./values.yaml#L1272) | object | Existing data source to clone PVC from | `{}` |
| [persistence.enabled](./values.yaml#L1246) | bool | Enable the use of a Jenkins PVC | `true` |
| [persistence.existingClaim](./values.yaml#L1252) | string | Provide the name of a PVC | `nil` |
| [persistence.labels](./values.yaml#L1264) | object | Labels for the PVC | `{}` |
| [persistence.mounts](./values.yaml#L1284) | list | Additional mounts | `[]` |
| [persistence.size](./values.yaml#L1268) | string | The size of the PVC | `"8Gi"` |
| [persistence.storageClass](./values.yaml#L1260) | string | Storage class for the PVC | `nil` |
| [persistence.subPath](./values.yaml#L1277) | string | SubPath for jenkins-home mount | `nil` |
| [persistence.volumes](./values.yaml#L1279) | list | Additional volumes | `[]` |
| [rbac.create](./values.yaml#L1318) | bool | Whether RBAC resources are created | `true` |
| [rbac.readSecrets](./values.yaml#L1320) | bool | Whether the Jenkins service account should be able to read Kubernetes secrets | `false` |
| [rbac.useOpenShiftNonRootSCC](./values.yaml#L1322) | bool | Whether the Jenkins service account should be able to use the OpenShift "nonroot" Security Context Constraints | `false` |
| [networkPolicy.apiVersion](./values.yaml#L1293) | string | NetworkPolicy ApiVersion | `"networking.k8s.io/v1"` |
| [networkPolicy.enabled](./values.yaml#L1288) | bool | Enable the creation of NetworkPolicy resources | `false` |
| [networkPolicy.externalAgents.except](./values.yaml#L1307) | list | A list of IP sub-ranges to be excluded from the allowlisted IP range | `[]` |
| [networkPolicy.externalAgents.ipCIDR](./values.yaml#L1305) | string | The IP range from which external agents are allowed to connect to controller, i.e., 172.17.0.0/16 | `nil` |
| [networkPolicy.internalAgents.allowed](./values.yaml#L1297) | bool | Allow internal agents (from the same cluster) to connect to controller. Agent pods will be filtered based on PodLabels | `true` |
| [networkPolicy.internalAgents.namespaceLabels](./values.yaml#L1301) | object | A map of labels (keys/values) that agents namespaces must have to be able to connect to controller | `{}` |
| [networkPolicy.internalAgents.podLabels](./values.yaml#L1299) | object | A map of labels (keys/values) that agent pods must have to be able to connect to controller | `{}` |
| [persistence.accessMode](./values.yaml#L1263) | string | The PVC access mode | `"ReadWriteOnce"` |
| [persistence.annotations](./values.yaml#L1259) | object | Annotations for the PVC | `{}` |
| [persistence.dataSource](./values.yaml#L1269) | object | Existing data source to clone PVC from | `{}` |
| [persistence.enabled](./values.yaml#L1243) | bool | Enable the use of a Jenkins PVC | `true` |
| [persistence.existingClaim](./values.yaml#L1249) | string | Provide the name of a PVC | `nil` |
| [persistence.labels](./values.yaml#L1261) | object | Labels for the PVC | `{}` |
| [persistence.mounts](./values.yaml#L1281) | list | Additional mounts | `[]` |
| [persistence.size](./values.yaml#L1265) | string | The size of the PVC | `"8Gi"` |
| [persistence.storageClass](./values.yaml#L1257) | string | Storage class for the PVC | `nil` |
| [persistence.subPath](./values.yaml#L1274) | string | SubPath for jenkins-home mount | `nil` |
| [persistence.volumes](./values.yaml#L1276) | list | Additional volumes | `[]` |
| [rbac.create](./values.yaml#L1313) | bool | Whether RBAC resources are created | `true` |
| [rbac.readSecrets](./values.yaml#L1315) | bool | Whether the Jenkins service account should be able to read Kubernetes secrets | `false` |
| [rbac.useOpenShiftNonRootSCC](./values.yaml#L1317) | bool | Whether the Jenkins service account should be able to use the OpenShift "nonroot" Security Context Constraints | `false` |
| [renderHelmLabels](./values.yaml#L30) | bool | Enables rendering of the helm.sh/chart label to the annotations | `true` |
| [serviceAccount.annotations](./values.yaml#L1332) | object | Configures annotations for the ServiceAccount | `{}` |
| [serviceAccount.automountServiceAccountToken](./values.yaml#L1338) | bool | Auto-mount ServiceAccount token | `true` |
| [serviceAccount.create](./values.yaml#L1326) | bool | Configures if a ServiceAccount with this name should be created | `true` |
| [serviceAccount.extraLabels](./values.yaml#L1334) | object | Configures extra labels for the ServiceAccount | `{}` |
| [serviceAccount.imagePullSecretName](./values.yaml#L1336) | string | Controller ServiceAccount image pull secret | `nil` |
| [serviceAccount.name](./values.yaml#L1330) | string | | `nil` |
| [serviceAccountAgent.annotations](./values.yaml#L1348) | object | Configures annotations for the agent ServiceAccount | `{}` |
| [serviceAccountAgent.automountServiceAccountToken](./values.yaml#L1354) | bool | Auto-mount ServiceAccount token | `true` |
| [serviceAccountAgent.create](./values.yaml#L1342) | bool | Configures if an agent ServiceAccount should be created | `false` |
| [serviceAccountAgent.extraLabels](./values.yaml#L1350) | object | Configures extra labels for the agent ServiceAccount | `{}` |
| [serviceAccountAgent.imagePullSecretName](./values.yaml#L1352) | string | Agent ServiceAccount image pull secret | `nil` |
| [serviceAccountAgent.name](./values.yaml#L1346) | string | The name of the agent ServiceAccount to be used by access-controlled resources | `nil` |
| [serviceAccount.annotations](./values.yaml#L1327) | object | Configures annotations for the ServiceAccount | `{}` |
| [serviceAccount.automountServiceAccountToken](./values.yaml#L1333) | bool | Auto-mount ServiceAccount token | `true` |
| [serviceAccount.create](./values.yaml#L1321) | bool | Configures if a ServiceAccount with this name should be created | `true` |
| [serviceAccount.extraLabels](./values.yaml#L1329) | object | Configures extra labels for the ServiceAccount | `{}` |
| [serviceAccount.imagePullSecretName](./values.yaml#L1331) | string | Controller ServiceAccount image pull secret | `nil` |
| [serviceAccount.name](./values.yaml#L1325) | string | | `nil` |
| [serviceAccountAgent.annotations](./values.yaml#L1344) | object | Configures annotations for the agent ServiceAccount | `{}` |
| [serviceAccountAgent.automountServiceAccountToken](./values.yaml#L1350) | bool | Auto-mount ServiceAccount token | `true` |
| [serviceAccountAgent.create](./values.yaml#L1338) | bool | Configures if an agent ServiceAccount should be created | `false` |
| [serviceAccountAgent.extraLabels](./values.yaml#L1346) | object | Configures extra labels for the agent ServiceAccount | `{}` |
| [serviceAccountAgent.imagePullSecretName](./values.yaml#L1348) | string | Agent ServiceAccount image pull secret | `nil` |
| [serviceAccountAgent.name](./values.yaml#L1342) | string | The name of the agent ServiceAccount to be used by access-controlled resources | `nil` |

View File

@ -234,14 +234,6 @@ jenkins:
{{- with $newRoot}}
- kubernetes:
containerCapStr: "{{ .Values.agent.containerCap }}"
{{- if .Values.agent.garbageCollection.enabled }}
garbageCollection:
{{- if .Values.agent.garbageCollection.namespaces }}
namespaces: |-
{{- .Values.agent.garbageCollection.namespaces | nindent 10 }}
{{- end }}
timeout: "{{ .Values.agent.garbageCollection.timeout }}"
{{- end }}
{{- if .Values.agent.jnlpregistry }}
jnlpregistry: "{{ .Values.agent.jnlpregistry }}"
{{- end }}
@ -471,7 +463,7 @@ Returns kubernetes pod template configuration as code
{{- end }}
{{- end }}
idleMinutes: {{ .Values.agent.idleMinutes }}
instanceCap: {{ int .Values.agent.instanceCap }}
instanceCap: 2147483647
{{- if .Values.agent.hostNetworking }}
hostNetwork: {{ .Values.agent.hostNetworking }}
{{- end }}

View File

@ -38,11 +38,11 @@ controller:
# -- Controller image repository
repository: "jenkins/jenkins"
# -- Controller image tag override; i.e., tag: "2.440.1-jdk21"
# -- Controller image tag override; i.e., tag: "2.440.1-jdk17"
tag:
# -- Controller image tag label
tagLabel: jdk21
tagLabel: jdk17
# -- Controller image pull policy
pullPolicy: "Always"
# -- Controller image pull secret
@ -73,6 +73,7 @@ controller:
# If you disable the non-Jenkins identity store and instead use the Jenkins internal one,
# you should revert controller.admin.username to your preferred admin user:
admin:
# -- Admin username created as a secret if `controller.admin.createSecret` is true
username: "admin"
# -- Admin password created as a secret if `controller.admin.createSecret` is true
@ -337,7 +338,7 @@ controller:
agentListenerExternalTrafficPolicy:
# -- Allowed inbound IP for the agentListener service
agentListenerLoadBalancerSourceRanges:
- 0.0.0.0/0
- 0.0.0.0/0
# -- Disabled agent protocols
disabledAgentProtocols:
- JNLP-connect
@ -379,7 +380,7 @@ controller:
# set allowed inbound rules on the security group assigned to the controller load balancer
# -- Allowed inbound IP addresses
loadBalancerSourceRanges:
- 0.0.0.0/0
- 0.0.0.0/0
# -- Optionally assign a known public LB IP
loadBalancerIP:
@ -402,10 +403,10 @@ controller:
# Plugins will be installed during Jenkins controller start
# -- List of Jenkins plugins to install. If you don't want to install plugins, set it to `false`
installPlugins:
- kubernetes:4340.v345364d31a_2a_
- workflow-aggregator:608.v67378e9d3db_1
- kubernetes:4314.v5b_846cf499eb_
- workflow-aggregator:600.vb_57cdd26fdd7
- git:5.7.0
- configuration-as-code:1967.va_968e15fd05b_
- configuration-as-code:1932.v75cb_b_f1b_698d
# If set to false, Jenkins will download the minimum required version of all dependencies.
# -- Download the minimum required version or latest version of all dependencies
@ -559,7 +560,7 @@ controller:
# If false or not-specified, JCasC changes will cause a reboot and will only be applied at the subsequent start-up.
# Auto-reload uses the http://<jenkins_url>/reload-configuration-as-code endpoint to reapply config when changes to
# the configScripts are detected.
# -- Enable Jenkins Config as Code auto-reload
# -- Enables Jenkins Config as Code auto-reload
enabled: true
image:
# -- Registry for the image that triggers the reload
@ -567,10 +568,9 @@ controller:
# -- Repository of the image that triggers the reload
repository: kiwigrid/k8s-sidecar
# -- Tag for the image that triggers the reload
tag: 1.30.3
tag: 1.30.1
imagePullPolicy: IfNotPresent
resources:
{}
resources: {}
# limits:
# cpu: 100m
# memory: 100Mi
@ -578,8 +578,7 @@ controller:
# cpu: 50m
# memory: 50Mi
# -- Enables additional volume mounts for the config auto-reload container
additionalVolumeMounts:
[]
additionalVolumeMounts: []
# - name: auto-reload-config
# mountPath: /var/config/logger
# - name: auto-reload-logs
@ -610,7 +609,7 @@ controller:
# -- Environment variable sources for the Jenkins Config as Code auto-reload container
envFrom: []
# -- Environment variables for the Jenkins Config as Code auto-reload container
env: []
env: {}
# - name: REQ_TIMEOUT
# value: "30"
@ -710,8 +709,7 @@ controller:
# -- Ingress labels
labels: {}
# -- Ingress annotations
annotations:
{}
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
@ -957,7 +955,7 @@ agent:
# -- Repository to pull the agent jnlp image from
repository: "jenkins/inbound-agent"
# -- Tag of the image to pull
tag: "3309.v27b_9314fd1a_4-2"
tag: "3283.v92c105e0f819-9"
# -- Configure working directory for default agent
workingDir: "/home/jenkins/agent"
nodeUsageMode: "NORMAL"
@ -988,12 +986,12 @@ agent:
memory: "512Mi"
# ephemeralStorage:
livenessProbe: {}
# execArgs: "cat /tmp/healthy"
# failureThreshold: 3
# initialDelaySeconds: 0
# periodSeconds: 10
# successThreshold: 1
# timeoutSeconds: 1
# execArgs: "cat /tmp/healthy"
# failureThreshold: 3
# initialDelaySeconds: 0
# periodSeconds: 10
# successThreshold: 1
# timeoutSeconds: 1
# You may want to change this to true while testing a new image
# -- Always pull agent container image before build
@ -1105,10 +1103,8 @@ agent:
# Doesn't allocate pseudo TTY by default
# -- Allocate pseudo tty to the side container
TTYEnabled: false
# -- Max number of agents to launch for a whole cluster.
# -- Max number of agents to launch
containerCap: 10
# -- Max number of agents to launch for this type of agent
instanceCap: 2147483647
# -- Agent Pod base name
podName: "default"
@ -1127,6 +1123,7 @@ agent:
# -- Allows the Pod to remain active for reuse until the configured number of minutes has passed since the last step was executed on it
idleMinutes: 0
# The raw yaml of a Pod API Object, for example, this allows usage of toleration for agent pods.
# https://github.com/jenkinsci/kubernetes-plugin#using-yaml-to-define-pod-templates
# https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
@ -1301,15 +1298,13 @@ networkPolicy:
# -- A map of labels (keys/values) that agent pods must have to be able to connect to controller
podLabels: {}
# -- A map of labels (keys/values) that agents namespaces must have to be able to connect to controller
namespaceLabels:
{}
namespaceLabels: {}
# project: myproject
externalAgents:
# -- The IP range from which external agents are allowed to connect to controller, i.e., 172.17.0.0/16
ipCIDR:
# -- A list of IP sub-ranges to be excluded from the allowlisted IP range
except:
[]
except: []
# - 172.17.1.0/24
## Install Default RBAC roles and bindings
@ -1337,6 +1332,7 @@ serviceAccount:
# -- Auto-mount ServiceAccount token
automountServiceAccountToken: true
serviceAccountAgent:
# -- Configures if an agent ServiceAccount should be created
create: false
@ -1374,4 +1370,4 @@ helmtest:
# -- Repository of the image used to test the framework
repository: "bats/bats"
# -- Tag of the image to test the framework
tag: "1.12.0"
tag: "1.11.1"

View File

@ -2,7 +2,7 @@ gitea:
enabled: false
image:
# tag: 1.23.5
tag: 1.23.5
rootless: true
repliaCount: 1
@ -28,8 +28,8 @@ gitea:
resources:
requests:
cpu: "200m"
memory: "1024Mi"
cpu: "150m"
memory: "320Mi"
limits:
memory: "2048Mi"
@ -76,9 +76,7 @@ gitea:
ssh.minimum_key_sizes:
RSA: 2047
valkey:
enabled: false
valkey-cluster:
redis-cluster:
enabled: false
postgresql-ha:
enabled: false
@ -190,7 +188,7 @@ jenkins:
agent:
image:
repository: public.ecr.aws/zero-downtime/jenkins-podman
tag: v0.7.1
tag: v0.7.0
#alwaysPullImage: true
podRetention: "Default"
showRawYaml: false
@ -289,7 +287,7 @@ trivy:
#tag: 0.57.0
persistence:
enabled: true
size: 2Gi
size: 1Gi
rbac:
create: false

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-falco
description: Falco Container Security and Audit components
type: application
version: 0.1.3
version: 0.1.2
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -16,7 +16,7 @@ dependencies:
version: 0.2.1
repository: https://cdn.zero-downtime.net/charts/
- name: falco
version: 5.0.0
version: 4.2.5
repository: https://falcosecurity.github.io/charts
condition: k8saudit.enabled
alias: k8saudit

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-istio-gateway
description: KubeZero Umbrella Chart for Istio gateways
type: application
version: 0.26.1
version: 0.24.3
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -17,6 +17,6 @@ dependencies:
version: 0.2.1
repository: https://cdn.zero-downtime.net/charts/
- name: gateway
version: 1.26.1
version: 1.24.3
repository: https://istio-release.storage.googleapis.com/charts
kubeVersion: ">= 1.30.0-0"

View File

@ -1,6 +1,6 @@
# kubezero-istio-gateway
![Version: 0.26.1](https://img.shields.io/badge/Version-0.26.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
![Version: 0.24.3](https://img.shields.io/badge/Version-0.24.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
KubeZero Umbrella Chart for Istio gateways
@ -21,7 +21,7 @@ Kubernetes: `>= 1.30.0-0`
| Repository | Name | Version |
|------------|------|---------|
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
| https://istio-release.storage.googleapis.com/charts | gateway | 1.26.1 |
| https://istio-release.storage.googleapis.com/charts | gateway | 1.24.3 |
## Values
@ -44,7 +44,6 @@ Kubernetes: `>= 1.30.0-0`
| hardening.preserveExternalRequestId | bool | `false` | |
| hardening.rejectUnderscoresHeaders | bool | `true` | |
| hardening.unescapeSlashes | bool | `true` | |
| httpFilter.grpcWeb | bool | `false` | |
| proxyProtocol | bool | `true` | |
| telemetry.enabled | bool | `false` | |

View File

@ -1,5 +1,5 @@
apiVersion: v2
appVersion: 1.26.1
appVersion: 1.24.3
description: Helm chart for deploying Istio gateways
icon: https://istio.io/latest/favicons/android-192x192.png
keywords:
@ -9,4 +9,4 @@ name: gateway
sources:
- https://github.com/istio/istio
type: application
version: 1.26.1
version: 1.24.3

View File

@ -0,0 +1,33 @@
# WARNING: DO NOT EDIT, THIS FILE IS A COPY.
# The original version of this file is located at /manifests/helm-profiles directory.
# If you want to make a change in this file, edit the original one and run "make gen".
pilot:
env:
# 1.22 behavioral changes
ENABLE_ENHANCED_RESOURCE_SCOPING: "false"
ENABLE_RESOLUTION_NONE_TARGET_PORT: "false"
# 1.23 behavioral changes
ENABLE_DELIMITED_STATS_TAG_REGEX: "false"
# 1.24 behavioral changes
ENABLE_INBOUND_RETRY_POLICY: "false"
EXCLUDE_UNSAFE_503_FROM_DEFAULT_RETRY: "false"
PREFER_DESTINATIONRULE_TLS_FOR_EXTERNAL_SERVICES: "false"
ENABLE_ENHANCED_DESTINATIONRULE_MERGE: "false"
PILOT_UNIFIED_SIDECAR_SCOPE: "false"
meshConfig:
# 1.22 behavioral changes
defaultConfig:
proxyMetadata:
ISTIO_DELTA_XDS: "false"
# 1.23 behavioral changes
ENABLE_DELIMITED_STATS_TAG_REGEX: "false"
# 1.24 behaviour changes
ENABLE_DEFERRED_STATS_CREATION: "false"
BYPASS_OVERLOAD_MANAGER_FOR_STATIC_LISTENERS: "false"
tracing:
zipkin:
address: zipkin.istio-system:9411

View File

@ -0,0 +1,26 @@
# WARNING: DO NOT EDIT, THIS FILE IS A COPY.
# The original version of this file is located at /manifests/helm-profiles directory.
# If you want to make a change in this file, edit the original one and run "make gen".
pilot:
env:
# 1.23 behavioral changes
ENABLE_DELIMITED_STATS_TAG_REGEX: "false"
# 1.24 behavioral changes
ENABLE_INBOUND_RETRY_POLICY: "false"
EXCLUDE_UNSAFE_503_FROM_DEFAULT_RETRY: "false"
PREFER_DESTINATIONRULE_TLS_FOR_EXTERNAL_SERVICES: "false"
ENABLE_ENHANCED_DESTINATIONRULE_MERGE: "false"
PILOT_UNIFIED_SIDECAR_SCOPE: "false"
meshConfig:
defaultConfig:
proxyMetadata:
# 1.22 behavioral changes
ENABLE_DEFERRED_CLUSTER_CREATION: "false"
# 1.23 behavioral changes
ENABLE_DELIMITED_STATS_TAG_REGEX: "false"
# 1.24 behaviour changes
ENABLE_DEFERRED_STATS_CREATION: "false"
BYPASS_OVERLOAD_MANAGER_FOR_STATIC_LISTENERS: "false"

View File

@ -17,9 +17,3 @@ meshConfig:
# 1.24 behaviour changes
ENABLE_DEFERRED_STATS_CREATION: "false"
BYPASS_OVERLOAD_MANAGER_FOR_STATIC_LISTENERS: "false"
ambient:
# Not present in <1.24, defaults to `true` in 1.25+
reconcileIptablesOnStartup: false
# 1.26 behavioral changes
shareHostNetworkNamespace: true

View File

@ -1,13 +0,0 @@
# WARNING: DO NOT EDIT, THIS FILE IS A COPY.
# The original version of this file is located at /manifests/helm-profiles directory.
# If you want to make a change in this file, edit the original one and run "make gen".
pilot:
env:
# 1.24 behavioral changes
PILOT_ENABLE_IP_AUTOALLOCATE: "false"
ambient:
dnsCapture: false
reconcileIptablesOnStartup: false
# 1.26 behavioral changes
shareHostNetworkNamespace: true

View File

@ -1,7 +0,0 @@
# WARNING: DO NOT EDIT, THIS FILE IS A COPY.
# The original version of this file is located at /manifests/helm-profiles directory.
# If you want to make a change in this file, edit the original one and run "make gen".
ambient:
# 1.26 behavioral changes
shareHostNetworkNamespace: true

View File

@ -21,10 +21,6 @@ meshConfig:
opentelemetry:
port: 4317
service: opentelemetry-collector.observability.svc.cluster.local
- name: jaeger
opentelemetry:
port: 4317
service: jaeger-collector.istio-system.svc.cluster.local
cni:
resources:

View File

@ -1,10 +0,0 @@
# WARNING: DO NOT EDIT, THIS FILE IS A COPY.
# The original version of this file is located at /manifests/helm-profiles directory.
# If you want to make a change in this file, edit the original one and run "make gen".
cni:
cniBinDir: "" # intentionally unset for gke to allow template-based autodetection to work
resourceQuotas:
enabled: true
resourceQuotas:
enabled: true

View File

@ -4,4 +4,4 @@
cni:
cniConfDir: /var/lib/rancher/k3s/agent/etc/cni/net.d
cniBinDir: /var/lib/rancher/k3s/data/cni
cniBinDir: /var/lib/rancher/k3s/data/current/bin/

View File

@ -11,8 +11,8 @@ metadata:
{{- .Values.annotations | toYaml | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
{{- if and (hasKey .Values "replicaCount") (ne .Values.replicaCount nil) }}
replicas: {{ .Values.replicaCount }}
{{- with .Values.replicaCount }}
replicas: {{ . }}
{{- end }}
{{- end }}
{{- with .Values.strategy }}
@ -41,9 +41,6 @@ spec:
{{ $key | quote }}: {{ $val | quote }}
{{- end }}
{{- end }}
{{- with .Values.networkGateway }}
topology.istio.io/network: "{{.}}"
{{- end }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:

View File

@ -21,9 +21,6 @@ spec:
{{- if hasKey .Values.service "allocateLoadBalancerNodePorts" }}
allocateLoadBalancerNodePorts: {{ .Values.service.allocateLoadBalancerNodePorts }}
{{- end }}
{{- if hasKey .Values.service "loadBalancerClass" }}
loadBalancerClass: {{ .Values.service.loadBalancerClass }}
{{- end }}
{{- end }}
{{- if .Values.service.ipFamilyPolicy }}
ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }}

View File

@ -24,11 +24,11 @@ Finally, we can set all of that under .Values so the chart behaves without aware
{{- $defaults := $.Values._internal_defaults_do_not_set }}
{{- $_ := unset $.Values "_internal_defaults_do_not_set" }}
{{- $profile := dict }}
{{- with (coalesce ($.Values).profile ($.Values.global).profile) }}
{{- with .Values.profile }}
{{- with $.Files.Get (printf "files/profile-%s.yaml" .)}}
{{- $profile = (. | fromYaml) }}
{{- else }}
{{ fail (cat "unknown profile" .) }}
{{ fail (cat "unknown profile" $.Values.profile) }}
{{- end }}
{{- end }}
{{- with .Values.compatibilityVersion }}
@ -38,11 +38,11 @@ Finally, we can set all of that under .Values so the chart behaves without aware
{{ fail (cat "unknown compatibility version" $.Values.compatibilityVersion) }}
{{- end }}
{{- end }}
{{- with (coalesce ($.Values).platform ($.Values.global).platform) }}
{{- with $.Files.Get (printf "files/profile-platform-%s.yaml" .) }}
{{- if ($.Values.global).platform }}
{{- with $.Files.Get (printf "files/profile-platform-%s.yaml" ($.Values.global).platform) }}
{{- $ignore := mustMergeOverwrite $profile (. | fromYaml) }}
{{- else }}
{{ fail (cat "unknown platform" .) }}
{{ fail (cat "unknown platform" ($.Values.global).platform) }}
{{- end }}
{{- end }}
{{- if $profile }}
@ -52,7 +52,6 @@ Finally, we can set all of that under .Values so the chart behaves without aware
{{- if true }}
{{- $a := mustMergeOverwrite $defaults ($profile.global) ($.Values.global | default dict) }}
{{- end }}
{{- $x := set $.Values "_original" (deepCopy $.Values) }}
{{- $b := set $ "Values" (mustMergeOverwrite $defaults $.Values) }}
{{/*

View File

@ -64,8 +64,6 @@ _internal_defaults_do_not_set:
ipFamilies: []
## Whether to automatically allocate NodePorts (only for LoadBalancers).
# allocateLoadBalancerNodePorts: false
## Set LoadBalancer class (only for LoadBalancers).
# loadBalancerClass: ""
resources:
requests:
@ -98,9 +96,7 @@ _internal_defaults_do_not_set:
readinessProbe: {}
# Labels to apply to all resources
labels:
# By default, don't enroll gateways into the ambient dataplane
"istio.io/dataplane-mode": none
labels: {}
# Annotations to apply to all resources
annotations: {}

View File

@ -1,30 +0,0 @@
{{- if .Values.httpFilter.grpcWeb }}
# Inserts the grpcWeb filter into the http_connection mangager chain before the CORS filter
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: {{ include "gatewayName" . | trimPrefix "istio-" }}-grpcweb
namespace: {{ .Release.Namespace }}
labels:
{{ include "kubezero-lib.labels" . | nindent 4 }}
spec:
workloadSelector:
labels:
{{- include "gatewaySelectorLabels" . | nindent 6 }}
configPatches:
- applyTo: HTTP_FILTER
match:
context: GATEWAY
listener:
filterChain:
filter:
name: envoy.filters.network.http_connection_manager
subFilter:
name: envoy.filters.http.cors
patch:
operation: INSERT_BEFORE
value:
name: envoy.filters.http.grpc_web
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
{{- end }}

View File

@ -1,7 +1,7 @@
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: {{ include "gatewayName" . | trimPrefix "istio-" }}-listener
name: {{ include "gatewayName" . | trimPrefix "istio-" }}-proxy-protocol
namespace: {{ .Release.Namespace }}
labels:
{{ include "kubezero-lib.labels" . | nindent 4 }}
@ -10,20 +10,24 @@ spec:
labels:
{{- include "gatewaySelectorLabels" . | nindent 6 }}
configPatches:
- applyTo: LISTENER_FILTER
match:
context: GATEWAY
listener:
portNumber: 8443
listenerFilter: "envoy.filters.listener.tls_inspector"
- applyTo: LISTENER
patch:
operation: REPLACE
operation: MERGE
value:
name: envoy.filters.listener.tls_inspector
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector
"initialReadBufferSize": 512
filter_disabled:
destination_port_range:
start: 1025
end: 1026
listener_filters:
{{- if .Values.proxyProtocol }}
- name: envoy.filters.listener.proxy_protocol
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.listener.proxy_protocol.v3.ProxyProtocol
filter_disabled:
destination_port_range:
start: 1025
end: 1026
{{- end }}
- name: envoy.filters.listener.tls_inspector
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.listener.tls_inspector.v3.TlsInspector
filter_disabled:
destination_port_range:
start: 1025
end: 1026

View File

@ -1,27 +0,0 @@
{{- if .Values.proxyProtocol }}
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
name: {{ include "gatewayName" . | trimPrefix "istio-" }}-proxy-protocol
namespace: {{ .Release.Namespace }}
labels:
{{ include "kubezero-lib.labels" . | nindent 4 }}
spec:
workloadSelector:
labels:
{{- include "gatewaySelectorLabels" . | nindent 6 }}
configPatches:
- applyTo: LISTENER_FILTER
match:
context: GATEWAY
patch:
operation: INSERT_FIRST
value:
name: envoy.filters.listener.proxy_protocol
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.listener.proxy_protocol.v3.ProxyProtocol
filter_disabled:
destination_port_range:
start: 1025
end: 1026
{{- end }}

View File

@ -44,6 +44,3 @@ hardening:
rejectUnderscoresHeaders: true
unescapeSlashes: true
preserveExternalRequestId: false
httpFilter:
grpcWeb: false

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-istio
description: KubeZero Umbrella Chart for Istio
type: application
version: 0.26.1
version: 0.24.3
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -20,13 +20,13 @@ dependencies:
repository: https://cdn.zero-downtime.net/charts/
condition: envoy-ratelimit.enabled
- name: base
version: 1.26.1
version: 1.24.3
repository: https://istio-release.storage.googleapis.com/charts
- name: istiod
version: 1.26.1
version: 1.24.3
repository: https://istio-release.storage.googleapis.com/charts
- name: kiali-server
version: "2.11.0"
version: "2.6.0"
repository: https://kiali.org/helm-charts
condition: kiali-server.enabled
kubeVersion: ">= 1.30.0-0"

View File

@ -1,6 +1,6 @@
# kubezero-istio
![Version: 0.24.7](https://img.shields.io/badge/Version-0.24.7-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
![Version: 0.24.3](https://img.shields.io/badge/Version-0.24.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
KubeZero Umbrella Chart for Istio
@ -22,9 +22,9 @@ Kubernetes: `>= 1.30.0-0`
|------------|------|---------|
| https://cdn.zero-downtime.net/charts/ | envoy-ratelimit | 0.1.2 |
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
| https://istio-release.storage.googleapis.com/charts | base | 1.26.1 |
| https://istio-release.storage.googleapis.com/charts | istiod | 1.26.1 |
| https://kiali.org/helm-charts | kiali-server | 2.11.0 |
| https://istio-release.storage.googleapis.com/charts | base | 1.24.3 |
| https://istio-release.storage.googleapis.com/charts | istiod | 1.24.3 |
| https://kiali.org/helm-charts | kiali-server | 2.6.0 |
## Values

View File

@ -5,22 +5,22 @@ folder: Istio
condition: '.Values.istiod.telemetry.enabled'
dashboards:
- name: istio-control-plane
url: https://grafana.com/api/dashboards/7645/revisions/259/download
url: https://grafana.com/api/dashboards/7645/revisions/239/download
tags:
- Istio
- name: istio-mesh
url: https://grafana.com/api/dashboards/7639/revisions/259/download
url: https://grafana.com/api/dashboards/7639/revisions/239/download
tags:
- Istio
- name: istio-service
url: https://grafana.com/api/dashboards/7636/revisions/259/download
url: https://grafana.com/api/dashboards/7636/revisions/239/download
tags:
- Istio
- name: istio-workload
url: https://grafana.com/api/dashboards/7630/revisions/259/download
url: https://grafana.com/api/dashboards/7630/revisions/239/download
tags:
- Istio
- name: istio-performance
url: https://grafana.com/api/dashboards/11829/revisions/259/download
url: https://grafana.com/api/dashboards/11829/revisions/239/download
tags:
- Istio

File diff suppressed because one or more lines are too long

View File

@ -42,3 +42,17 @@ helm.sh/chart: {{ include "kubezero-lib.chart" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/part-of: kubezero
{{- end -}}
{{- /*
kubezero-lib.util.merge will merge two YAML templates and output the result.
This takes an array of three values:
- the top context
- the template name of the overrides (destination)
- the template name of the base (source)
*/ -}}
{{- define "kubezero-lib.util.merge" -}}
{{- $top := first . -}}
{{- $overrides := fromYaml (include (index . 1) $top) | default (dict ) -}}
{{- $tpl := fromYaml (include (index . 2) $top) | default (dict ) -}}
{{- toYaml (merge $overrides $tpl) -}}
{{- end -}}

View File

@ -37,7 +37,7 @@ fluentd:
enabled: false
image:
repository: public.ecr.aws/zero-downtime/fluentd-concenter
tag: v1.16.5
tag: v1.16.3
istio:
enabled: false

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-metrics
description: KubeZero Umbrella Chart for Prometheus, Grafana and Alertmanager as well as all Kubernetes integrations.
type: application
version: 0.12.0
version: 0.11.0
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -19,14 +19,14 @@ dependencies:
version: 0.2.1
repository: https://cdn.zero-downtime.net/charts/
- name: kube-prometheus-stack
version: 75.2.1
version: 69.2.3
repository: https://prometheus-community.github.io/helm-charts
- name: prometheus-adapter
version: 4.14.1
version: 4.11.0
repository: https://prometheus-community.github.io/helm-charts
condition: prometheus-adapter.enabled
- name: prometheus-pushgateway
version: 3.4.0
version: 3.0.0
repository: https://prometheus-community.github.io/helm-charts
condition: prometheus-pushgateway.enabled
kubeVersion: ">= 1.30.0-0"

View File

@ -1,6 +1,6 @@
# kubezero-metrics
![Version: 0.11.1](https://img.shields.io/badge/Version-0.11.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
![Version: 0.10.4](https://img.shields.io/badge/Version-0.10.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
KubeZero Umbrella Chart for Prometheus, Grafana and Alertmanager as well as all Kubernetes integrations.
@ -18,10 +18,10 @@ Kubernetes: `>= 1.30.0-0`
| Repository | Name | Version |
|------------|------|---------|
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
| https://prometheus-community.github.io/helm-charts | kube-prometheus-stack | 75.2.1 |
| https://prometheus-community.github.io/helm-charts | prometheus-adapter | 4.14.1 |
| https://prometheus-community.github.io/helm-charts | prometheus-pushgateway | 3.4.0 |
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | >= 0.1.6 |
| https://prometheus-community.github.io/helm-charts | kube-prometheus-stack | 69.2.3 |
| https://prometheus-community.github.io/helm-charts | prometheus-adapter | 4.11.0 |
| https://prometheus-community.github.io/helm-charts | prometheus-pushgateway | 3.0.0 |
## Values
@ -141,7 +141,7 @@ Kubernetes: `>= 1.30.0-0`
| kube-prometheus-stack.kubeEtcd.enabled | bool | `true` | |
| kube-prometheus-stack.kubeEtcd.service.port | int | `2381` | |
| kube-prometheus-stack.kubeEtcd.service.targetPort | int | `2381` | |
| kube-prometheus-stack.kubeProxy.enabled | bool | `false` | |
| kube-prometheus-stack.kubeProxy.enabled | bool | `true` | |
| kube-prometheus-stack.kubeScheduler.enabled | bool | `true` | |
| kube-prometheus-stack.kubeScheduler.service.port | int | `10259` | |
| kube-prometheus-stack.kubeScheduler.service.targetPort | int | `10259` | |
@ -159,7 +159,7 @@ Kubernetes: `>= 1.30.0-0`
| kube-prometheus-stack.prometheus-node-exporter.prometheus.monitor.relabelings[0].sourceLabels[0] | string | `"__meta_kubernetes_pod_node_name"` | |
| kube-prometheus-stack.prometheus-node-exporter.prometheus.monitor.relabelings[0].targetLabel | string | `"instance"` | |
| kube-prometheus-stack.prometheus-node-exporter.resources.requests.cpu | string | `"20m"` | |
| kube-prometheus-stack.prometheus-node-exporter.resources.requests.memory | string | `"24Mi"` | |
| kube-prometheus-stack.prometheus-node-exporter.resources.requests.memory | string | `"16Mi"` | |
| kube-prometheus-stack.prometheus.enabled | bool | `true` | |
| kube-prometheus-stack.prometheus.prometheusSpec.logFormat | string | `"json"` | |
| kube-prometheus-stack.prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues | bool | `false` | |
@ -174,7 +174,9 @@ Kubernetes: `>= 1.30.0-0`
| kube-prometheus-stack.prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues | bool | `false` | |
| kube-prometheus-stack.prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.accessModes[0] | string | `"ReadWriteOnce"` | |
| kube-prometheus-stack.prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage | string | `"16Gi"` | |
| kube-prometheus-stack.prometheusOperator.admissionWebhooks.certManager.enabled | bool | `true` | |
| kube-prometheus-stack.prometheusOperator.admissionWebhooks.patch.nodeSelector."node-role.kubernetes.io/control-plane" | string | `""` | |
| kube-prometheus-stack.prometheusOperator.admissionWebhooks.patch.tolerations[0].effect | string | `"NoSchedule"` | |
| kube-prometheus-stack.prometheusOperator.admissionWebhooks.patch.tolerations[0].key | string | `"node-role.kubernetes.io/control-plane"` | |
| kube-prometheus-stack.prometheusOperator.enabled | bool | `true` | |
| kube-prometheus-stack.prometheusOperator.logFormat | string | `"json"` | |
| kube-prometheus-stack.prometheusOperator.nodeSelector."node-role.kubernetes.io/control-plane" | string | `""` | |

View File

@ -267,7 +267,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\"}) by (namespace)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\"}) by (namespace)",
"legendFormat": "__auto"
}
],
@ -344,7 +344,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\"}) by (namespace)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\"}) by (namespace)",
"format": "table",
"instant": true
},
@ -362,7 +362,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\"$cluster\"}) by (namespace)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_requests:sum{cluster=\"$cluster\"}) by (namespace)",
"format": "table",
"instant": true
},
@ -380,7 +380,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\"$cluster\"}) by (namespace)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\"}) by (namespace) / sum(namespace_cpu:kube_pod_container_resource_limits:sum{cluster=\"$cluster\"}) by (namespace)",
"format": "table",
"instant": true
}

View File

@ -42,7 +42,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"})",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"})",
"instant": true
}
],
@ -77,7 +77,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"})",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"})",
"instant": true
}
],
@ -249,7 +249,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"legendFormat": "__auto"
},
{
@ -324,7 +324,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"format": "table",
"instant": true
},
@ -342,7 +342,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"format": "table",
"instant": true
},
@ -360,7 +360,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)",
"format": "table",
"instant": true
}

View File

@ -109,7 +109,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"legendFormat": "{{pod}}"
}
],
@ -168,7 +168,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"format": "table",
"instant": true
},
@ -186,7 +186,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"format": "table",
"instant": true
},
@ -204,7 +204,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", node=~\"$node\"}) by (pod)",
"format": "table",
"instant": true
}

View File

@ -109,7 +109,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{namespace=\"$namespace\", pod=\"$pod\", cluster=\"$cluster\", container!=\"\"}) by (container)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace=\"$namespace\", pod=\"$pod\", cluster=\"$cluster\", container!=\"\"}) by (container)",
"legendFormat": "__auto"
},
{
@ -257,7 +257,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)",
"format": "table",
"instant": true
},
@ -275,7 +275,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_requests{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)",
"format": "table",
"instant": true
},
@ -293,7 +293,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)",
"expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container) / sum(cluster:namespace:pod_cpu:active:kube_pod_container_resource_limits{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)",
"format": "table",
"instant": true
}

View File

@ -57,7 +57,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"legendFormat": "__auto"
}
],
@ -116,7 +116,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"format": "table",
"instant": true
},
@ -134,7 +134,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"format": "table",
"instant": true
},
@ -152,7 +152,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=~\"$type\"}\n) by (pod)\n",
"format": "table",
"instant": true
}

View File

@ -109,7 +109,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"legendFormat": "{{workload}} - {{workload_type}}"
},
{
@ -205,7 +205,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"format": "table",
"instant": true
},
@ -223,7 +223,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"format": "table",
"instant": true
},
@ -241,7 +241,7 @@
"type": "prometheus",
"uid": "${datasource}"
},
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=~\"$type\"}\n) by (workload, workload_type)\n",
"format": "table",
"instant": true
}

View File

@ -599,7 +599,7 @@
"hide": 0,
"label": "instance",
"name": "instance",
"query": "label_values(windows_system_boot_time_timestamp_seconds{cluster=\"$cluster\"}, instance)",
"query": "label_values(windows_system_system_up_time{cluster=\"$cluster\"}, instance)",
"refresh": 2,
"type": "query"
}

View File

@ -53,7 +53,6 @@
"y": 0
},
"id": 1,
"interval": "1m",
"pluginVersion": "v11.4.0",
"targets": [
{
@ -107,7 +106,6 @@
"y": 0
},
"id": 2,
"interval": "1m",
"pluginVersion": "v11.4.0",
"targets": [
{

View File

@ -35,7 +35,6 @@
"y": 0
},
"id": 1,
"interval": "1m",
"options": {
"displayMode": "basic",
"showUnfilled": false
@ -75,7 +74,6 @@
"y": 0
},
"id": 2,
"interval": "1m",
"options": {
"displayMode": "basic",
"showUnfilled": false

View File

@ -53,7 +53,6 @@
"y": 0
},
"id": 1,
"interval": "1m",
"pluginVersion": "v11.4.0",
"targets": [
{
@ -107,7 +106,6 @@
"y": 0
},
"id": 2,
"interval": "1m",
"pluginVersion": "v11.4.0",
"targets": [
{

View File

@ -35,7 +35,6 @@
"y": 0
},
"id": 1,
"interval": "1m",
"options": {
"displayMode": "basic",
"showUnfilled": false
@ -75,7 +74,6 @@
"y": 0
},
"id": 2,
"interval": "1m",
"options": {
"displayMode": "basic",
"showUnfilled": false
@ -115,7 +113,6 @@
"y": 9
},
"id": 3,
"interval": "1m",
"options": {
"displayMode": "basic",
"showUnfilled": false
@ -155,7 +152,6 @@
"y": 9
},
"id": 4,
"interval": "1m",
"options": {
"displayMode": "basic",
"showUnfilled": false

View File

@ -18,7 +18,7 @@
"subdir": "contrib/mixin"
}
},
"version": "5dfd6e05a4bd8e09debe31742dee4221ff391d0d",
"version": "f30cbaac111aa01a310fe75360c759cdd4d9cd14",
"sum": "XmXkOCriQIZmXwlIIFhqlJMa0e6qGWdxZD+ZDYaN0Po="
},
{
@ -48,7 +48,7 @@
"subdir": "gen/grafonnet-latest"
}
},
"version": "5a8f3d6aa89b7e7513528371d2d1265aedc844bc",
"version": "d20e609202733790caf5b554c9945d049f243ae3",
"sum": "V9vAj21qJOc2DlMPDgB1eEjSQU4A+sAA4AXuJ6bd4xc="
},
{
@ -58,7 +58,7 @@
"subdir": "gen/grafonnet-v10.0.0"
}
},
"version": "5a8f3d6aa89b7e7513528371d2d1265aedc844bc",
"version": "d20e609202733790caf5b554c9945d049f243ae3",
"sum": "xdcrJPJlpkq4+5LpGwN4tPAuheNNLXZjE6tDcyvFjr0="
},
{
@ -68,7 +68,7 @@
"subdir": "gen/grafonnet-v11.4.0"
}
},
"version": "5a8f3d6aa89b7e7513528371d2d1265aedc844bc",
"version": "d20e609202733790caf5b554c9945d049f243ae3",
"sum": "aVAX09paQYNOoCSKVpuk1exVIyBoMt/C50QJI+Q/3nA="
},
{
@ -78,18 +78,8 @@
"subdir": "grafana-builder"
}
},
"version": "c014522d7d2c9ccba70556ec75a31cdde8907fe1",
"sum": "G7B6E5sqWirDbMWRhifbLRfGgRFbIh9WCYa6X3kMh6g="
},
{
"source": {
"git": {
"remote": "https://github.com/grafana/jsonnet-libs.git",
"subdir": "mixin-utils"
}
},
"version": "c014522d7d2c9ccba70556ec75a31cdde8907fe1",
"sum": "iu4NT+YOgpxQnxElKML76cSxgTA0cwTmFfI0hOfHHmw="
"version": "d6c38bb26f576b128cadca4137d73a037afdd872",
"sum": "yxqWcq/N3E/a/XreeU6EuE6X7kYPnG0AspAQFKOjASo="
},
{
"source": {
@ -108,8 +98,8 @@
"subdir": ""
}
},
"version": "4eee017d21cb63a303925d1dcd9fc5c496809b46",
"sum": "Kh0GbIycNmJPzk6IOMXn1BbtLNyaiiimclYk7+mvsns="
"version": "1199b50e9d2ff53d4bb5fb2304ad1fb69d38e609",
"sum": "LfbgcJbilu4uBdKYZSvmkoOTPwEAzg10L3/VqKAIWtA="
},
{
"source": {
@ -118,8 +108,8 @@
"subdir": ""
}
},
"version": "98e85ddf870783424a921de5efda8d3f827b5580",
"sum": "eMj9kk9Zf4YgAK8/mJ3BnmpfMW3GDkAQlqZQut8Lidc="
"version": "e27267571be06c2bdc3d2fd8dbd70161cd709cb4",
"sum": "je1RPCp2aFNefYs5Q57Q5wDm93p8pL4pdBtA5rC7jLA="
},
{
"source": {
@ -128,7 +118,7 @@
"subdir": "jsonnet/kube-state-metrics"
}
},
"version": "dbf6e9b4e2f9e1ab744a23aad87665214c4d9205",
"version": "2a95d4649b2fea55799032fb9c0b571c4ba7f776",
"sum": "3bioG7CfTfY9zeu5xU4yon6Zt3kYvNkyl492nOhQxnM="
},
{
@ -138,7 +128,7 @@
"subdir": "jsonnet/kube-state-metrics-mixin"
}
},
"version": "dbf6e9b4e2f9e1ab744a23aad87665214c4d9205",
"version": "2a95d4649b2fea55799032fb9c0b571c4ba7f776",
"sum": "qclI7LwucTjBef3PkGBkKxF0mfZPbHnn4rlNWKGtR4c="
},
{
@ -148,8 +138,8 @@
"subdir": "jsonnet/kube-prometheus"
}
},
"version": "03cb9b9319c2057728570875561fe331f7ee61c3",
"sum": "cNj7EBtOA0BlSSoas2dSYnIzvKHLi/gNIIONd77DU+M="
"version": "1eea946a1532f1e8cccfceea98d907bf3a10b1d9",
"sum": "17LhiwefVfoNDsF3DcFZw/UL4PMU7YpNNUaOdaYd1gE="
},
{
"source": {
@ -158,7 +148,7 @@
"subdir": "jsonnet/mixin"
}
},
"version": "71440266018206a8d2cdc840ab10edca12b0cdbe",
"version": "465bcbaf2a727c942e7f923aacfb9dff9af8d4a1",
"sum": "gi+knjdxs2T715iIQIntrimbHRgHnpM8IFBJDD1gYfs=",
"name": "prometheus-operator-mixin"
},
@ -169,8 +159,8 @@
"subdir": "jsonnet/prometheus-operator"
}
},
"version": "71440266018206a8d2cdc840ab10edca12b0cdbe",
"sum": "dtH2oiXvUttHg2fz6uITHKuZflkQ832ddkdnhVu0drY="
"version": "465bcbaf2a727c942e7f923aacfb9dff9af8d4a1",
"sum": "LctDdofQostvviE5y8vpRKWGGO1ZKO3dgJe7P9xifW0="
},
{
"source": {
@ -179,8 +169,8 @@
"subdir": "doc/alertmanager-mixin"
}
},
"version": "0ce3cfb962db3cbb1649d3e816a49a13c4036cd1",
"sum": "j5prvRrJdoCv7n45l5Uy2ghl1IDb9BBUqjwCDs4ZJoQ=",
"version": "b5d1a64ad5bb0ff879705714d1e40cea82efbd5c",
"sum": "Mf4h1BYLle2nrgjf/HXrBbl0Zk8N+xaoEM017o0BC+k=",
"name": "alertmanager"
},
{
@ -190,8 +180,8 @@
"subdir": "docs/node-mixin"
}
},
"version": "2179f0a34d2d7b6212f3a1c647d5aca44ffa33e5",
"sum": "NcpQ0Hz0qciUqmOYoAR0X8GUK5pH/QiUXm1aDNgvua0="
"version": "11365f97bef6cb0e6259d536a7e21c49e3f5c065",
"sum": "xYj6VYFT/eafsbleNlC+Z2VfLy1CndyYrJs9BcTmnX8="
},
{
"source": {
@ -200,8 +190,8 @@
"subdir": "documentation/prometheus-mixin"
}
},
"version": "f69c83f5f1dce5f0b2f90172d5f6f9e2bda91fec",
"sum": "lT5n+8i4q20LuvlmtIs/GXdlX6fQiwwuZkeOtnAPT50=",
"version": "509b978f0d675b4c9b3ccf8c0fc06961b0f03e8f",
"sum": "2c+wttfee9TwuQJZIkNV7Tekem74Qgc7iZ842P28rNw=",
"name": "prometheus"
},
{
@ -211,8 +201,8 @@
"subdir": "jsonnet/controller-gen"
}
},
"version": "a80a1021000b5c19dfd17cd20e62364f6675dceb",
"sum": "O3c9Uurei8MWAY0Ad7DOL1fMqSgdHyHB7MpHsxSITKM=",
"version": "d723f4d1a066dd657e9d09c46a158519dda0faa8",
"sum": "cxAPQovFkM16zNB5/94O+sk/n3SETk6ao6Oas2Sa6RE=",
"name": "pyrra"
},
{
@ -222,7 +212,7 @@
"subdir": "mixin"
}
},
"version": "933f04f55efba2ec599501df0ae58714714384d0",
"version": "346d18bb0f8011c63d7106de494cf3b9253161a1",
"sum": "ieCD4eMgGbOlrI8GmckGPHBGQDcLasE1rULYq56W/bs=",
"name": "thanos-mixin"
}

View File

@ -7,7 +7,7 @@
"app.kubernetes.io/instance": "main",
"app.kubernetes.io/name": "alertmanager",
"app.kubernetes.io/part-of": "kube-prometheus",
"app.kubernetes.io/version": "0.28.1",
"app.kubernetes.io/version": "0.28.0",
"prometheus": "k8s",
"role": "alert-rules"
},
@ -52,7 +52,7 @@
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedtosendalerts",
"summary": "An Alertmanager instance failed to send notifications."
},
"expr": "(\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[15m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[15m])\n)\n> 0.01\n",
"expr": "(\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n)\n> 0.01\n",
"for": "5m",
"labels": {
"severity": "warning"
@ -65,7 +65,7 @@
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts",
"summary": "All Alertmanager instances in a cluster failed to send notifications to a critical integration."
},
"expr": "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[15m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[15m])\n)\n> 0.01\n",
"expr": "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n)\n> 0.01\n",
"for": "5m",
"labels": {
"severity": "critical"
@ -78,7 +78,7 @@
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts",
"summary": "All Alertmanager instances in a cluster failed to send notifications to a non-critical integration."
},
"expr": "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[15m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[15m])\n)\n> 0.01\n",
"expr": "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n)\n> 0.01\n",
"for": "5m",
"labels": {
"severity": "warning"

View File

@ -88,7 +88,7 @@
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetreplicasmismatch",
"summary": "StatefulSet has not matched the expected number of replicas."
},
"expr": "(\n kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_replicas{job=\"kube-state-metrics\"}\n) and (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n ==\n 0\n)\n",
"expr": "(\n kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_status_replicas{job=\"kube-state-metrics\"}\n) and (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n ==\n 0\n)\n",
"for": "15m",
"labels": {
"severity": "warning"
@ -114,7 +114,7 @@
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetupdatenotrolledout",
"summary": "StatefulSet update has not been rolled out."
},
"expr": "(\n max by(namespace, statefulset, job, cluster) (\n kube_statefulset_status_current_revision{job=\"kube-state-metrics\"}\n unless\n kube_statefulset_status_update_revision{job=\"kube-state-metrics\"}\n )\n * on(namespace, statefulset, job, cluster)\n (\n kube_statefulset_replicas{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}\n )\n) and on(namespace, statefulset, job, cluster) (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[5m])\n ==\n 0\n)\n",
"expr": "(\n max by(namespace, statefulset, job, cluster) (\n kube_statefulset_status_current_revision{job=\"kube-state-metrics\"}\n unless\n kube_statefulset_status_update_revision{job=\"kube-state-metrics\"}\n )\n *\n (\n kube_statefulset_replicas{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}\n )\n) and (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[5m])\n ==\n 0\n)\n",
"for": "15m",
"labels": {
"severity": "warning"
@ -222,19 +222,6 @@
"labels": {
"severity": "warning"
}
},
{
"alert": "KubePdbNotEnoughHealthyPods",
"annotations": {
"description": "PDB {{ $labels.cluster }}/{{ $labels.namespace }}/{{ $labels.poddisruptionbudget }} expects {{ $value }} more healthy pods. The desired number of healthy pods has not been met for at least 15m.",
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepdbnotenoughhealthypods",
"summary": "PDB does not have enough healthy pods."
},
"expr": "(\n kube_poddisruptionbudget_status_desired_healthy{job=\"kube-state-metrics\"}\n -\n kube_poddisruptionbudget_status_current_healthy{job=\"kube-state-metrics\"}\n)\n> 0\n",
"for": "15m",
"labels": {
"severity": "warning"
}
}
]
},
@ -257,7 +244,7 @@
{
"alert": "KubeMemoryQuotaOvercommit",
"annotations": {
"description": "Cluster {{ $labels.cluster }} has overcommitted memory resource requests for Namespaces.",
"description": "Cluster {{ $labels.cluster }} has overcommitted memory resource requests for Namespaces.",
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryquotaovercommit",
"summary": "Cluster has overcommitted memory resource requests."
},
@ -313,7 +300,7 @@
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/kubernetes/cputhrottlinghigh",
"summary": "Processes experience elevated CPU throttling."
},
"expr": "sum(increase(container_cpu_cfs_throttled_periods_total{container!=\"\", job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n / on (cluster, namespace, pod, container, instance) group_left\nsum(increase(container_cpu_cfs_periods_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n > ( 25 / 100 )\n",
"expr": "sum(increase(container_cpu_cfs_throttled_periods_total{container!=\"\", job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n /\nsum(increase(container_cpu_cfs_periods_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n > ( 25 / 100 )\n",
"for": "15m",
"labels": {
"severity": "info"
@ -598,19 +585,6 @@
"severity": "warning"
}
},
{
"alert": "KubeNodePressure",
"annotations": {
"description": "{{ $labels.node }} on cluster {{ $labels.cluster }} has active Condition {{ $labels.condition }}. This is caused by resource usage exceeding eviction thresholds.",
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodepressure",
"summary": "Node has as active Condition."
},
"expr": "kube_node_status_condition{job=\"kube-state-metrics\",condition=~\"(MemoryPressure|DiskPressure|PIDPressure)\",status=\"true\"} == 1\nand on (cluster, node)\nkube_node_spec_unschedulable{job=\"kube-state-metrics\"} == 0\n",
"for": "10m",
"labels": {
"severity": "info"
}
},
{
"alert": "KubeNodeUnreachable",
"annotations": {
@ -650,19 +624,6 @@
"severity": "warning"
}
},
{
"alert": "KubeNodeEviction",
"annotations": {
"description": "Node {{ $labels.node }} on {{ $labels.cluster }} is evicting Pods due to {{ $labels.eviction_signal }}. Eviction occurs when eviction thresholds are crossed, typically caused by Pods exceeding RAM/ephemeral-storage limits.",
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeeviction",
"summary": "Node is evicting pods."
},
"expr": "sum(rate(kubelet_evictions{job=\"kubelet\", metrics_path=\"/metrics\"}[15m])) by(cluster, eviction_signal, instance)\n* on (cluster, instance) group_left(node)\nmax by (cluster, instance, node) (\n kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"}\n)\n> 0\n",
"for": "0s",
"labels": {
"severity": "info"
}
},
{
"alert": "KubeletPlegDurationHigh",
"annotations": {
@ -853,21 +814,21 @@
"record": "cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d"
},
{
"expr": "1 - (\n (\n # write too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"} or vector(0))\n ) +\n (\n # read too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"} or vector(0))\n )\n ) +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d)\n",
"expr": "1 - (\n (\n # write too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"})\n ) +\n (\n # read too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n (\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"})\n or\n vector(0)\n )\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"})\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"})\n )\n ) +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d)\n",
"labels": {
"verb": "all"
},
"record": "apiserver_request:availability30d"
},
{
"expr": "1 - (\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n # too slow\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"} or vector(0))\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n",
"expr": "1 - (\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n # too slow\n (\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"})\n or\n vector(0)\n )\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"})\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"})\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n",
"labels": {
"verb": "read"
},
"record": "apiserver_request:availability30d"
},
{
"expr": "1 - (\n (\n # too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"} or vector(0))\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n",
"expr": "1 - (\n (\n # too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"})\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n",
"labels": {
"verb": "write"
},
@ -1032,10 +993,6 @@
{
"name": "k8s.rules.container_cpu_usage_seconds_total",
"rules": [
{
"expr": "sum by (cluster, namespace, pod, container) (\n rate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n)\n",
"record": "node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m"
},
{
"expr": "sum by (cluster, namespace, pod, container) (\n irate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n)\n",
"record": "node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate"
@ -1134,14 +1091,7 @@
"name": "k8s.rules.pod_owner",
"rules": [
{
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n ) * on (cluster, replicaset, namespace) group_left(owner_name) topk by(cluster, replicaset, namespace) (\n 1, max by (cluster, replicaset, namespace, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind=\"\"}\n )\n ),\n \"workload\", \"$1\", \"replicaset\", \"(.*)\"\n )\n)\n",
"labels": {
"workload_type": "replicaset"
},
"record": "namespace_workload_pod:kube_pod_owner:relabel"
},
{
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n ) * on(replicaset, namespace, cluster) group_left(owner_name) topk by(cluster, replicaset, namespace) (\n 1, max by (cluster, replicaset, namespace, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind=\"Deployment\"}\n )\n ),\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n",
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) (\n 1, max by (replicaset, namespace, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\"}\n )\n ),\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n",
"labels": {
"workload_type": "deployment"
},
@ -1155,36 +1105,18 @@
"record": "namespace_workload_pod:kube_pod_owner:relabel"
},
{
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n \"workload\", \"$1\", \"owner_name\", \"(.*)\")\n)\n",
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n",
"labels": {
"workload_type": "statefulset"
},
"record": "namespace_workload_pod:kube_pod_owner:relabel"
},
{
"expr": "group by (cluster, namespace, workload, pod) (\n label_join(\n group by (cluster, namespace, job_name, pod, owner_name) (\n label_join(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"}\n , \"job_name\", \"\", \"owner_name\")\n )\n * on (cluster, namespace, job_name) group_left()\n group by (cluster, namespace, job_name) (\n kube_job_owner{job=\"kube-state-metrics\", owner_kind=~\"Pod|\"}\n )\n , \"workload\", \"\", \"owner_name\")\n)\n",
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"},\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n",
"labels": {
"workload_type": "job"
},
"record": "namespace_workload_pod:kube_pod_owner:relabel"
},
{
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"\", owner_name=\"\"},\n \"workload\", \"$1\", \"pod\", \"(.+)\")\n)\n",
"labels": {
"workload_type": "barepod"
},
"record": "namespace_workload_pod:kube_pod_owner:relabel"
},
{
"expr": "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Node\"},\n \"workload\", \"$1\", \"pod\", \"(.+)\")\n)\n",
"labels": {
"workload_type": "staticpod"
},
"record": "namespace_workload_pod:kube_pod_owner:relabel"
},
{
"expr": "group by (cluster, namespace, workload, workload_type, pod) (\n label_join(\n label_join(\n group by (cluster, namespace, job_name, pod) (\n label_join(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"}\n , \"job_name\", \"\", \"owner_name\")\n )\n * on (cluster, namespace, job_name) group_left(owner_kind, owner_name)\n group by (cluster, namespace, job_name, owner_kind, owner_name) (\n kube_job_owner{job=\"kube-state-metrics\", owner_kind!=\"Pod\", owner_kind!=\"\"}\n )\n , \"workload\", \"\", \"owner_name\")\n , \"workload_type\", \"\", \"owner_kind\")\n \n OR\n\n label_replace(\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"}\n , \"replicaset\", \"$1\", \"owner_name\", \"(.+)\"\n )\n * on(cluster, namespace, replicaset) group_left(owner_kind, owner_name)\n group by (cluster, namespace, replicaset, owner_kind, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind!=\"Deployment\", owner_kind!=\"\"}\n )\n , \"workload\", \"$1\", \"owner_name\", \"(.+)\")\n OR\n label_replace(\n group by (cluster, namespace, pod, owner_name, owner_kind) (\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind!=\"ReplicaSet\", owner_kind!=\"DaemonSet\", owner_kind!=\"StatefulSet\", owner_kind!=\"Job\", owner_kind!=\"Node\", owner_kind!=\"\"}\n )\n , \"workload\", \"$1\", \"owner_name\", \"(.+)\"\n )\n , \"workload_type\", \"$1\", \"owner_kind\", \"(.+)\")\n)\n",
"record": "namespace_workload_pod:kube_pod_owner:relabel"
}
]
},
@ -1306,6 +1238,144 @@
"record": "node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile"
}
]
},
{
"name": "windows.node.rules",
"rules": [
{
"expr": "count by (cluster) (\n windows_system_system_up_time{job=\"kubernetes-windows-exporter\"}\n)\n",
"record": "node:windows_node:sum"
},
{
"expr": "count by (cluster, instance) (sum by (cluster, instance, core) (\n windows_cpu_time_total{job=\"kubernetes-windows-exporter\"}\n))\n",
"record": "node:windows_node_num_cpu:sum"
},
{
"expr": "1 - avg by (cluster) (rate(windows_cpu_time_total{job=\"kubernetes-windows-exporter\",mode=\"idle\"}[1m]))\n",
"record": ":windows_node_cpu_utilisation:avg1m"
},
{
"expr": "1 - avg by (cluster, instance) (\n rate(windows_cpu_time_total{job=\"kubernetes-windows-exporter\",mode=\"idle\"}[1m])\n)\n",
"record": "node:windows_node_cpu_utilisation:avg1m"
},
{
"expr": "1 -\nsum by (cluster) (windows_memory_available_bytes{job=\"kubernetes-windows-exporter\"})\n/\nsum by (cluster) (windows_os_visible_memory_bytes{job=\"kubernetes-windows-exporter\"})\n",
"record": ":windows_node_memory_utilisation:"
},
{
"expr": "sum by (cluster) (windows_memory_available_bytes{job=\"kubernetes-windows-exporter\"} + windows_memory_cache_bytes{job=\"kubernetes-windows-exporter\"})\n",
"record": ":windows_node_memory_MemFreeCached_bytes:sum"
},
{
"expr": "(windows_memory_cache_bytes{job=\"kubernetes-windows-exporter\"} + windows_memory_modified_page_list_bytes{job=\"kubernetes-windows-exporter\"} + windows_memory_standby_cache_core_bytes{job=\"kubernetes-windows-exporter\"} + windows_memory_standby_cache_normal_priority_bytes{job=\"kubernetes-windows-exporter\"} + windows_memory_standby_cache_reserve_bytes{job=\"kubernetes-windows-exporter\"})\n",
"record": "node:windows_node_memory_totalCached_bytes:sum"
},
{
"expr": "sum by (cluster) (windows_os_visible_memory_bytes{job=\"kubernetes-windows-exporter\"})\n",
"record": ":windows_node_memory_MemTotal_bytes:sum"
},
{
"expr": "sum by (cluster, instance) (\n (windows_memory_available_bytes{job=\"kubernetes-windows-exporter\"})\n)\n",
"record": "node:windows_node_memory_bytes_available:sum"
},
{
"expr": "sum by (cluster, instance) (\n windows_os_visible_memory_bytes{job=\"kubernetes-windows-exporter\"}\n)\n",
"record": "node:windows_node_memory_bytes_total:sum"
},
{
"expr": "(node:windows_node_memory_bytes_total:sum - node:windows_node_memory_bytes_available:sum)\n/\nscalar(sum(node:windows_node_memory_bytes_total:sum))\n",
"record": "node:windows_node_memory_utilisation:ratio"
},
{
"expr": "1 - (node:windows_node_memory_bytes_available:sum / node:windows_node_memory_bytes_total:sum)\n",
"record": "node:windows_node_memory_utilisation:"
},
{
"expr": "irate(windows_memory_swap_page_operations_total{job=\"kubernetes-windows-exporter\"}[5m])\n",
"record": "node:windows_node_memory_swap_io_pages:irate"
},
{
"expr": "avg by (cluster) (irate(windows_logical_disk_read_seconds_total{job=\"kubernetes-windows-exporter\"}[1m]) +\n irate(windows_logical_disk_write_seconds_total{job=\"kubernetes-windows-exporter\"}[1m])\n )\n",
"record": ":windows_node_disk_utilisation:avg_irate"
},
{
"expr": "avg by (cluster, instance) (\n (irate(windows_logical_disk_read_seconds_total{job=\"kubernetes-windows-exporter\"}[1m]) +\n irate(windows_logical_disk_write_seconds_total{job=\"kubernetes-windows-exporter\"}[1m]))\n)\n",
"record": "node:windows_node_disk_utilisation:avg_irate"
},
{
"expr": "max by (cluster,instance,volume)(\n (windows_logical_disk_size_bytes{job=\"kubernetes-windows-exporter\"}\n- windows_logical_disk_free_bytes{job=\"kubernetes-windows-exporter\"})\n/ windows_logical_disk_size_bytes{job=\"kubernetes-windows-exporter\"}\n)\n",
"record": "node:windows_node_filesystem_usage:"
},
{
"expr": "max by (cluster, instance, volume) (windows_logical_disk_free_bytes{job=\"kubernetes-windows-exporter\"} / windows_logical_disk_size_bytes{job=\"kubernetes-windows-exporter\"})\n",
"record": "node:windows_node_filesystem_avail:"
},
{
"expr": "sum by (cluster) (irate(windows_net_bytes_total{job=\"kubernetes-windows-exporter\"}[1m]))\n",
"record": ":windows_node_net_utilisation:sum_irate"
},
{
"expr": "sum by (cluster, instance) (\n (irate(windows_net_bytes_total{job=\"kubernetes-windows-exporter\"}[1m]))\n)\n",
"record": "node:windows_node_net_utilisation:sum_irate"
},
{
"expr": "sum by (cluster) (irate(windows_net_packets_received_discarded_total{job=\"kubernetes-windows-exporter\"}[1m])) +\nsum by (cluster) (irate(windows_net_packets_outbound_discarded_total{job=\"kubernetes-windows-exporter\"}[1m]))\n",
"record": ":windows_node_net_saturation:sum_irate"
},
{
"expr": "sum by (cluster, instance) (\n (irate(windows_net_packets_received_discarded_total{job=\"kubernetes-windows-exporter\"}[1m]) +\n irate(windows_net_packets_outbound_discarded_total{job=\"kubernetes-windows-exporter\"}[1m]))\n)\n",
"record": "node:windows_node_net_saturation:sum_irate"
}
]
},
{
"name": "windows.pod.rules",
"rules": [
{
"expr": "windows_container_available{job=\"kubernetes-windows-exporter\", container_id != \"\"} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\", container_id != \"\"}) by(container, container_id, pod, namespace, cluster)\n",
"record": "windows_pod_container_available"
},
{
"expr": "windows_container_cpu_usage_seconds_total{job=\"kubernetes-windows-exporter\", container_id != \"\"} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\", container_id != \"\"}) by(container, container_id, pod, namespace, cluster)\n",
"record": "windows_container_total_runtime"
},
{
"expr": "windows_container_memory_usage_commit_bytes{job=\"kubernetes-windows-exporter\", container_id != \"\"} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\", container_id != \"\"}) by(container, container_id, pod, namespace, cluster)\n",
"record": "windows_container_memory_usage"
},
{
"expr": "windows_container_memory_usage_private_working_set_bytes{job=\"kubernetes-windows-exporter\", container_id != \"\"} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\", container_id != \"\"}) by(container, container_id, pod, namespace, cluster)\n",
"record": "windows_container_private_working_set_usage"
},
{
"expr": "windows_container_network_receive_bytes_total{job=\"kubernetes-windows-exporter\", container_id != \"\"} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\", container_id != \"\"}) by(container, container_id, pod, namespace, cluster)\n",
"record": "windows_container_network_received_bytes_total"
},
{
"expr": "windows_container_network_transmit_bytes_total{job=\"kubernetes-windows-exporter\", container_id != \"\"} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job=\"kube-state-metrics\", container_id != \"\"}) by(container, container_id, pod, namespace, cluster)\n",
"record": "windows_container_network_transmitted_bytes_total"
},
{
"expr": "max by (cluster, namespace, pod, container) (\n kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}\n) * on(container,pod,namespace,cluster) (windows_pod_container_available)\n",
"record": "kube_pod_windows_container_resource_memory_request"
},
{
"expr": "kube_pod_container_resource_limits{resource=\"memory\",job=\"kube-state-metrics\"} * on(container,pod,namespace,cluster) (windows_pod_container_available)\n",
"record": "kube_pod_windows_container_resource_memory_limit"
},
{
"expr": "max by (cluster, namespace, pod, container) (\n kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}\n) * on(container,pod,namespace,cluster) (windows_pod_container_available)\n",
"record": "kube_pod_windows_container_resource_cpu_cores_request"
},
{
"expr": "kube_pod_container_resource_limits{resource=\"cpu\",job=\"kube-state-metrics\"} * on(container,pod,namespace,cluster) (windows_pod_container_available)\n",
"record": "kube_pod_windows_container_resource_cpu_cores_limit"
},
{
"expr": "sum by (cluster, namespace, pod, container) (\n rate(windows_container_total_runtime{}[5m])\n)\n",
"record": "namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate"
}
]
}
]
}

View File

@ -6,7 +6,7 @@
"app.kubernetes.io/component": "exporter",
"app.kubernetes.io/name": "node-exporter",
"app.kubernetes.io/part-of": "kube-prometheus",
"app.kubernetes.io/version": "1.9.1",
"app.kubernetes.io/version": "1.8.2",
"prometheus": "k8s",
"role": "alert-rules"
},
@ -327,19 +327,6 @@
"severity": "warning"
}
},
{
"alert": "NodeSystemdServiceCrashlooping",
"annotations": {
"description": "Systemd service {{ $labels.name }} has being restarted too many times at {{ $labels.instance }} for the last 15 minutes. Please check if service is crash looping.",
"runbook_url": "https://runbooks.prometheus-operator.dev/runbooks/node/nodesystemdservicecrashlooping",
"summary": "Systemd service keeps restaring, possibly crash looping."
},
"expr": "increase(node_systemd_service_restart_total{job=\"node-exporter\"}[5m]) > 2\n",
"for": "15m",
"labels": {
"severity": "warning"
}
},
{
"alert": "NodeBondingDegraded",
"annotations": {

View File

@ -6,7 +6,7 @@
"app.kubernetes.io/component": "controller",
"app.kubernetes.io/name": "prometheus-operator",
"app.kubernetes.io/part-of": "kube-prometheus",
"app.kubernetes.io/version": "0.83.0",
"app.kubernetes.io/version": "0.80.0",
"prometheus": "k8s",
"role": "alert-rules"
},

View File

@ -7,7 +7,7 @@
"app.kubernetes.io/instance": "k8s",
"app.kubernetes.io/name": "prometheus",
"app.kubernetes.io/part-of": "kube-prometheus",
"app.kubernetes.io/version": "3.4.0",
"app.kubernetes.io/version": "3.1.0",
"prometheus": "k8s",
"role": "alert-rules"
},

View File

@ -22,30 +22,30 @@ binaryData:
controller-manager.json.gz:
H4sIAAAAAAAC/+2aXVPbOBSG7/kVHk8vYCYwSUgK2ZlesLDL7Gxps13avWiZjGKfOFpky5VkIJvJ/vY9ku34I4akWQIN9Q1EXyc6R68eHTua7liWDS5VZMjA/skaESahoSsZDa4l1nzGgmVNzV+sJvJM8NDltwG2KRGZzqaFBg6LXPhEhCw3XQOEl9SHcr0iXvYVcc9oCCIABdJOKq9yvYUH6mdGguv8TOM2qsz87d8zA1njJDRtLpHjISfCTYzPdhLzdkgCYBXeukQRySPhmPF9wX1QY4hytkcUmHvKgxH1sMs088SFEYmYkoVarI8CqrSxgAdgzxtmyafZ3LAnqNvnxeH2GItHjax8i+VOrnyH5WauPNHlBdPUxepWbuEUiBvC9KxafuYaDxXlQWkGDmdcXHAXyj5k5kMWeTT4BELicN3tptU66Bw07dJKFpe+EKSlcTe94C4Uul1G/m4UTlF+Ej1588V+lXz8Yjesv/kQa7Su9h0eKMEZA7Hvk4B4usNsr2iTBlKRQCVKXVifq0XFfQwXlYY2VKKxxsYV5aCv3C/VGkOMvQ+JQ5WWQavZKDbLMb/tc1x8aZYSbkDY5S64L95FjMlyOHLLXRA1D+WjaLrdLIm6s5qo2+uJmoEHgVuOK5GXCRXz0IpDTphTlG9sh0j1jisdMjvXclUY61IZMjJJ91BM3kIPbHbAB6NCW1BvrIrteuXeplMuyjQXJsU5UzQse+Un3ytp4LEHCfQs+1gQBbu3XFx/jSCCAXFdOVBcEbbe9m5Y8YZ24M2/ODAt4L7//Gow0F82SJVytbdnDSfWbmI8G9mwAuJDiROxZH7lwidmmabp/GYzazpNh5qCHj2b2auw5C903PpDe26duK71Aee3CBeFJ6kEQdMz8sdCDNoU6nEgs+zkPKqGzGENmZcFGRdCNf7R+HKmna7hUoLL04Cl1akmS6cmyxaTZUxRx54g/uBrhI8QlMFu86DXa1gVyEnAE2E1zm4gAeGCmc4wcq5BPTeKGhaDvafm0VucYOBMaiJt5onqeAmS2q1qJHVrJL2EZEeAVAOHUQzBQADSR6r0uWpdrDQc9FvXtQ8O7oHMwwhp393ZVXH+3v09XNPfwy31t7Omv50t9be7pr/dgr/3H3r6FbV10v/N+hBPvH7M31gm3npdOvaOVzz2XtfH3ovOxCv48UTZeMPC7aGH9t//eflQcq67rZaJ654rJty4a9ScO0nKbfV6aoxZeBypGkTP8kqgfVwNoqMaRDWINgui81+enkPnUGPomzA0nOTuRGz0TcBht5pExzWJtphEoeAOSImMkdTVsPHB52IyMLpakyz3vW9cxonsbeFKrLgwM62BsKnfQY+XPCPdB4ReDYQtBoLJPlIqOGE0Tzb+z22Lb/gF4pEhcdr/aEUSp1Fz4qk4UXi58hAoMj9rUmwhKTw+8LjgkaLB954qnM/nuQIG5rd/BYwwLRqbd/TNeKQtnTH4JIvyoTntijeWS7eVY2MKfBQKziFDhc3wMTC3GvnrtJEQsaIKCySBgaPArRK5gjsTnIQ9xQji1oog31qpwTE1Ystn/owMwezKM9SGlYgj165/1I3vUM+lk2vFBzkxSdLMRS1hgD3QxLDzldmt7LnFstbzpF0u2dStdpVbiVarXKpomvtjxg9MVKW+Y7zsNnHDSqztFf1PBZafm9Rgzl3EzsUk/v7HCUd+lZM7+ieMLSgrC1W656piVdV2b7DWu5CdvbB4zBia/1c7STQNDLL9ORLmsLYDfrvfSi9FIamTOrsw7B996V3f+748tZPKNAeZu2NdxO7EHSJzCtpHbWhCszuEUbfZ60F31Oz0hs3uyHU67R64HXtn9h+WgDjLjzEAAA==
k8s-resources-cluster.json.gz:
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
k8s-resources-namespace.json.gz:
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
k8s-resources-node.json.gz:
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
k8s-resources-pod.json.gz:
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
k8s-resources-workload.json.gz:
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
k8s-resources-workloads-namespace.json.gz:
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
kubelet.json.gz:
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
namespace-by-pod.json.gz:
H4sIAAAAAAAC/+1b7U/bOBj/3r8i50MnuCvQ98Kk6TRg+3J3CE2MLwNVbvI09XDtzHGArur97ec472mS0tvo1C0IQeLHL8/rz/bjeNEwDAQWkXhMAb0yJpi60PQLKWH3rir5qF4MY6H/qmLsXgjuWPyRKZoUnq6sKYSZ1LPgBgs3T7oHcK7JDPLlEtvJEEFNbwyCgQQXhYV3qdrCBnlGMbtPcxrQiNT8o7+SDhLi3NE0C7vTMcfCCjtfNsLukYMZ0AJpLSyxyz1h6vZXgs9ATsFL9T0hQK1zzibEVlUWiSQWTLBHpZsp9cuJ61A8v8RaHWiPqQfXwWqEZrraDD8pcrsV/2SpxFd/tkxOBbhTTq38kIrmSnCymg5+Frl3VdXklItAW+L+0BYALMNZbG0LnvI8hLQHTD1fOOZRmqMum5tyMAdK+WMVC+0KFvqx/r6aEQFWFRedCi6GpVxk3u8aJfwhjxHpM3LmxHGRNI6rIlsQ64pn7Y+m6vU06Q09+ipLcYtyZkRz/32lb2KlVa3EliCUfD5X7VkSDw71bMJuQLiE+z6KHtrto95RC+XCOOuN2QhZF3S6Fjw52jauNzP2b5lfJrCEfZMziQkDMVIo8MjF/UiACeQBRuO5QoWR5BLThYIqFRPi9S3aCx9vUTMOxdf/3qYC8xYtP+6NRn7vo0jsuwN/yN8Nzoz9sIOkedPh1oFhC+45IwoTaewfBAxK7twb43lpk1AOQ+k5elI4UNnCB8yRelScTfhiyl0Zya1k0xip2A+HV//Ub1aNFGxg1jsuZlh72GiEPclXnexuFWrPPSGASeO9UozBJ8aZr1/jfaBtaxV+bezZECJvs8bZGmd/QpzNFFQAbWcXgVYKzNwZkTXSbgVpr0N1y+2BLX8AoXwf8hiXg0EloTkFsYKPkXej8fy90saTsxLoiDtS+bPfPzo+w8x6JJacHqNGBaYgR+1IQEgCz4TegAcd6xVgkgWBjXDkZdRxhc17Fc/fRxnOFpWh5+wqVVxx6yWUEGx5K7TwcYVU1Fs2di8EodTQG+ZmcVVPaHA/to6HuH3SGgxNOO11ca+FodPv9XuDYd9sn04mffM42R4fhthDmH2oQOnPvUUS1q8+eyDmDhZ4tvztAYvDCIP3IjQOihMU3lvEzwFJdakKRyO/0yMNB+6R0voSFYiwXCm7e76nNPKl/2OW7fTW7GZOiyfZ7vedTP3JJj0Z1duXzSfVSTydBhmsDJEwV2Imw6xTowAstmPBel208yaMgtAJ5uDahrschrURf5xAtNRKzwGrtuWPEJC1Mb+dMddnEy4DHowPLrYhtdL1rRIMGe63Sla8wabpEyfsbP7O3yJkGUv2a7kd4Dis7e8qeT7Xh2bc0lxyT6kSFW4Vyhw1YIgLGzPyBZ7JDTzpY8uzKFO8sistOLjM0Ix2JbVTSe1WUnuV1H4ldZD3iKJ9sk6qVouuxWuVy9YuF6xTLlW3XKReuTz9FdKNvzM3fn3jJ3/LiGeKeFJGPM/uJ7PEC300UEZ961PbZdR3uWxvtNPkvpMOKq2iolMZpNwsKaGT1GAwLxpxzgxVqSNuFuUQn9HO1xSKMpDRKY8RJqVQlQrjVqmM5dqGb6uGMy6CmQJVab9q2PIOAgMVpJiKoWgVZsMEbADV2zrtMtXMw2cFB1JT/nilEFq3QAwecphaePoxVoi+rYPm9klxbqa39gCkCNHDJHteO9i9Dr9vyeNldEz4TzjrFEywimzCDPQUiwSxp9lEqVbx39GwZQsqJDmnkjh5zqLZziXMjtylWOV1iurnO/cpB/UEZtTc6IIg0QdTNdZUHLaWgU2/BpvdAZs6m/pCaFOxFvxh4MbZ1rqmMyyGmkENNbu3rqkTxt98ZbNuH1kjzsarmzLIGdaQs4OrmxpzXgpzqrJQNexsutDpDopR56RGnd1d6GxyEPeLKq8hZ7Nlzkr6ucadjZc7ZcBzWgPPDi936k8Atrjs2QCG4quyAib+/Se/UrcVOAByzSnMcOJhXR2D2eu9uau9QWcSZipIpHLh2L0RJa5MeWIqRM3g0DIfCS5QMP1LEAVBKuFJ6yvEvqxS44/bI2ph/E2JDrT0uofiMWhUuVBxYYSBkaKz8NJZKmxSVP11tsbKojhSCrb1RSeULkyuMMc95uM8jfTrwzUSq1MkVujFRSIVkGJ5dPuR1qq77zmLT3ysvNu3OwWp/LtphK0PsvJGDpXmxeVCZr8uiHUQjFchPqb0JjLt0R/psdZ7UOZaecaFfDkO3bnif1biRukaha60gV3S7hberH9D6YqLJzYrut8YW62QWGy3r8mCKQvHI31LGzeiCwLLADVI6rsINBF68YIYfzxsRylrNWuGZSjT7Atnuv8P1+coLAxh8jK+T2EcG5eRFMb+FbfcQBbkBR8YnYyH+GTc7QysIR5M2pNWr9PrtQaD7uDEHAzxBDWW/wFkeP5rV0EAAA==
H4sIAAAAAAAC/+1b7U/cNhj/fn9F5qEJtgPu/aBSNRVov2xDqKJ8KejkS5yci8/OHAe4nm5/+2znPecEbi3X0QYhSPz45Xn92X4cL1uWBZCDBZwSBF5ZLiQBaqtCgultIEs+yhfLWuq/shgGZ5z5DrunkiZ4qCtrCqY2CR10BXlQJt0i5F/iOSqXC+hlQ0Q1wyniFAkUgLjwJlebe0icEEhv85xGNCw0/+CPrIOMuPA1zYHBbMogd+LOV624e+BDiohBWgcKGLCQ27r9BWdzJGYozPXtYkScU0Zd7Mkqy0wSB7kwJCIolKpyHPgELs6hVgfYofIh8KEcoZ2vNocPktztpD9FKlbqL5aJGUfBjBGnPKSkBQL5RU1HP8vSu6xqM8J4pC1+u+9xhGiBs9TaDnoo8xDT7iAJlXA0JKREXbU35WCBCGH3dSx0a1gYpvr7YkY4cuq46NVwMa7kovB+06rgD4QUC8XIiZ/GRdY4rQo8jp0LVrQ/mMnX46w3cK9UluMWlMwIFup9rW/s5FUNfBJ6mF4hHmCmfBHcdbsHg4MOKIVr0euKkfBYcOla6MHXNgjCubV7TVUZhwLt2owKiCniExnt94zfTjiyEb5Dk+lCRv9EMAHJUkKS9H3++hrsxI/XoJ2G3Ot/rnMBeA1WH3cmE9X7BFNZVZrvZk8N+avFqLUbd5A1b/vM2bM8zkJ/QpArrN29iEHB/FtruqhsEsthSX0mTzLea1soYJzIR8mZy5YzFohEbimbxkLJfjy8/Cd/i2okyEPUecf4HGpPmkxgKNi6M92sQ+ppyDmiwnovFWMx1zpR+rXeR9p21mHWg6GHYoRtN3ja4OkPiKeFghpA7f2fAVVwSIM5Fg2ibgVRL2N1i+2BKrtDXPo4KmNZCe6khPYM8TUcTLwYTBfvpTYe/LWABswX0p9V/+DwBFLnHjtidghaNdgBfLnDQFxg9ESIjXjQMV0DGsVg3wgvnkcdF9C+lfH8bZThb1EZem6uU8UFc55DCdEWtkYLH9dIpt6KsXvGMSGW3gC3zVVDTrR9ncMx7B51RmMbHQ/6cNCBqDccDAej8dDuHrvu0D7Mtrv7MfZg6u1LUPp9Z5mF9au/Q8QXPuRwvvrlDvL9BIN3EjSOijMU3lmmzxFJdikLJxPV6YGGg+BAan0FDCKs1spunu4prXLpf5hNe4NHdifH5sm0/20nUzXZ5CejZpuy+aTqptNplJEqEDENBKQiziK1DGCxHQs266IXb8IkCP1oDm5s+JLDsDHi9xOIjlzp+chpbPk9BGRjzK9nzMezCecRD9aHAHoot9JVVomGjPdbFSveaNP0iWF6snintghFxrL9WmkHOI1rq10lK+f0wJw5mksWSlUC41ahylEjhhj3IMWf0RO5QQ/6GPIkyQiv7UoNB5EFmtWtpfZqqf1a6qCWOqyljsoeYdon6+RpvehavE61bN1qwXrVUvWrRRpUyzNcI12pnbn18xuV5K0inkjiURXxtLifLBLP9BFAFfWtonarqO9KWd1kp8mUk45qrSKjUxqk2iw5obPUYDQvWmnODNSpI22W5BCf0E5pCiQZyOQ0x4qTUqBOhWmrXMby0YZv64azzqKZAtRpv27Y6g4iAxlSTGYoWofZOAEbQfW2TrVsOfOwueHgacbuLyRC6xaAorsSphpPOaYS0bd1cNw9MudmBrnvRKLpXHHWnWc6MiF6nGQvawcGl/H3KmW8TI4D/4pnHcMEK8k2miM9xQKOvVkxUapV/GcybNWCCgjGiMB+mbNktgsw9RJ3Mau8SVH9eOc+1aCewYycGwPEcfIBVIM1NYeqVWAzbMDm5YBNk019JrSpWQt+N3Djb2td0xuboWbUQM3LW9c0CeOvvrJ5bB/ZIM7Gq5sqyBk3kPMCVzcN5jwX5tRloRrY2XSh0x+ZUeeoQZ2Xu9DZ5CDuJ1neQM5my5y19HODOxsvd6qA57gBnhe83Gk+AdjismcDGEqvvnLkqntOqlK/EzkACOwZmsPMw/o6BovXdUtXdaPOBJrLIBHShVP3BgQHIueJuRC1o0PLciQEiCBbXYIwBKlAD1pfMfYVlZp+3J5QjfE3wzrQ8useAqdIo8qZjAsrDowcncaXy3Jhk6Pqr7M1VpriSCrY0xeaQL4wu5Kc9liO8zzSPx6uiVg9k1ixF5tEMpBSeXT7idZqsBv6y09sKr1b2Z0gIf27bcWt94ryJg6V5yVgXBS/Lkh1EI1XIz4k5Cox7cFv+bEe96DCNfGCCyk59oOF5H9e4Ub5GkZX2sAueXeLb8q/IWTNxTObme4xplYzEs12+5IsmLRwOtLXtHEruSCwilAD576LAC7XixdA2f1+N0lZy1kzLgOFZp8Z1f1/uDwFcWEMk+fpfQrr0DpPpLB2L5gTRLKAMPrA6Gg6hkfTfm/kjOHI7bqdQW8w6IxG/dGRPRpDF7RW/wKtcW8SJ0EAAA==
namespace-by-workload.json.gz:
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
persistentvolumesusage.json.gz:
H4sIAAAAAAAC/+1ZTW/jNhC951cIRA924d3aSbqJC/TSLPbSNhug2VzqwKClscyGIlWSipMG/u/lhySTkmKnddZN0ACBEc2Qw+HjzJuh9HAQRQgSovCMAvohmmMqYWCElLAbqSW/64coerC/WozlR8HzhC+Z1ilR2MFWQ1hMiwSusJBN1Q1AfkkyaMoVTtdLuJHFDAQDBRKVwmtvtEhB/UQxu/E9dTqirP/o57WBtfI+t7oEy8WMY5GUxlcHpXmUYwa0Y7cJVljyQsR2/oXgGagFFJ7tOQGanHE2J6ke8rDeSQJzXFAlA6mWx4VUPGtIrSFKP+c4JupeK0fDQaiWC7684IRZg4jBLQjUHKJ3cV5QWsHvaVf+UFQwooyV2b2Hs4MjGIxSQZILHm4BLfTjydoeWhp3Tz2B8X/YskUSM86LFgXiFlPjxyhb48lzRThrLEkhBZY0kcTysoxaP6gcyJjGYWQ5O1iqc64MSMjTXAdzEyJziu9/5Yk9dJcZwQitjiEDZkEUJF2oUG/O6pfK5eAkvHNAinOqSN7cVVauKwlL9cIbTienRUrYFQipETNTbkej98fvh6iRMSEQwWJb49uOgrtcGH1vwqJIFlm0JGrBC9UjTCrMYhhETHvdj3qK5ze90SDqmTymoKa3nBYZTPUwJacxdvE9tYH3oOlC6iD4cYK+Kf+doEH0B59pSTnfCBjOQId2DGZg/WA0udm6nseUWyammGRmlHucoFW/3zc+v9vRcXyLCTVxsGfP9V94Ei4RPnGRYRt8XyQk0W/GKuqKsR3O+hWitRmqTwKgBVW7xlR15MqadhOiLxKn0K4nSpc0CYJUJFoi/1WrB6dctItHRRpqIUCzD00kepT9M3xnC8wwlBJDIaHMs/boingmNVIKWsVIQd5m4KhhJtiTLjcArGHIjtB1ogCvqnRubJt1LjBLYZP5053sC0g2GR+3jAfP11urtc6C2NSc56jXH7znu39Qvw+31u+9FyUdzm2iKnlqwmzJqujqpRSluiRtdOy/oFFbcr6bsJeH2LeGsVok7w5ctdqs3Xg9xUUK+6P0l3MhYJzB17kPnHTzydHbfeAV3wd26BGJGSWnhe5f99QfPqGRdk49dye9663JefWKbkv7P9sn3JRs+9864K11ws14uwC8XQD+ZxeARwr28Wu7AGzsZPfNVNt76z2S/bP31Ju50m+q6/fuAuaGYYz+aOjOF8l4ARleB9DR2IqDbwX+dwK3EoolQbVdBZluypRumepUQFTj4cWclyBxIYTr3oIwlBrmWEHS1VAquLM5WdJ0iGCV8bW2s99bEEugHuPqflQfrZn4UWdAVKaApzdH7D5k1Aniaf8sQNxboujKGI11CibVkS9cfxqpLTYT3y9K2xOz2tZh17bKWO7aUoeq3o+dP7Woyie9WW4kymoQleb7ISBV8PnOSi6U/6XCA8k59Dz4dB77eZXCXQixLuW/x+hJFLPyOOaFY3dRM56jozPDeF04OlD2COLjPL16hKifE+qDqrlYOWZ0n2FLTpwL++ZBX/yX70aLikoVL2UomPaXeTtg7kqXZ6gUlgVgjX3kwC+pvLA9AxqPxrPxIT6F0+HxaJZ8/+EEz8eQ4NnoMD49HsboYPU3ucReP4geAAA=
pod-total.json.gz:
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
proxy.json.gz:
H4sIAAAAAAAC/+1b0VLbOBR95ys8nj7AbJpJQoBkZ/rQpbvMzrY0SykvhfEo9o2tRbZcSYZkmey3ryTbsey4kFBCN6xfILpXknWvjo6Olehux7Js8LBAYwL2z9YEEQ4tZSQ4uubS8kUWLOtO/5VmxN8xGnv0NpI+wRJdWXtw5JLEgwvEeNV1DRCf4xCqdoH84hFpzWQMLAIB3M6MV0Zt5oP4haDo2hxp6sNCj9/+o+igcM5i7fMQD8YUMS/rfL6TdW/HKAJSE62HBOI0Ya5uP2I0BBFAYvQ9wUC8YxpNsC+r3BWReDBBCRG8ZJX2JMJCdRbRCOyFY559mi869hn2RrTc3A5k8ahVlG9luW+Up7LcMcozVV7qGnvS3DUmTgC7QUSNqhsWodFYYBpVRuBSQtkH6kE1hqL7mCQ+ji6AcdlcVbvpdtv9dseuzGR56ktJejDvuhZMY6b8PAl3k/hOwo/LSN5c2q+yj5d2y/qLjqVF4ep1zOh0dmnP98rd4IgLFIkMnEtTcrUMss/xMrhkHyKDVWvjIHJleDSsWHVHhHyMkYuFmvlup1V284Dejqicb65nD26A2dUqcimcJoTwajqMGS7hmMb8SWBsDlbjuL8ajnuPwzEBHyKvmlfEzzMiNHkqTTkibhmxaT+Ii1MqVMpsw3NVauthHhM0y5dNSralGtLtQggahTbDfiDKfjVz7/Mhl2FqpElQSgSOq1GF2XM5jnxyL+n8kKXLkIBdtUD1+nT4LHKd9CNLCHDHS2QNOR6Hg0sjjzsuTSKx8nJvWekCd+HNP7JuXpA88OWV46iHOzlyrvYq1JCi5DfKQpTOjKxtr8IQZ2rk1icZinWm2izRhZDbIQeG843u/0UaG6KM7oqcsd9wxhZzRoAljn2GQudrIvdtTGC30x4OW2vzyDhxr+HHEMndXd58Pl+XUN7LJ0XuzBoORWD9maWgYZgNyZLeA/L6qJ5i+g3FvCxZIt8pbym7VoyiuCeUg95KZXKaxmGNijgaibI5iVKlj5LhHv44aPjjBUoU67HEslGpYo1n1m5ep2UReHL1Ukc6jYx5RhkzeEDFdPv1NHTY0NBLkDEMuHBcgmUKHAZfE1nkjqACkXpKWYNRWq6MX9l67fajlEtvOrXr8r0tce8/Mu79LY+7/8i4+1se98Ej4z4oxf3tvVJ9g2W9Hf1unaUBNOp8k6/3h5WNcbDixnjUbIwvWp/XMMn3q/JvUYtcEaru6OOn8/skuqq2mjxXNVeU5nKZiAXVNJr82U4Geg99b9/r1jPPoGGehnme6jygZWXcc/Lr81PPCTTMsxbzjGfGD6M2eh7QG9STz7Ahny0mH8kGLnAuaYVjT/FLCCFlM0fj6rtlzPyJDw0/6ME1HFBRHwFlYiMcMFiRA4owGxLYQhLQIiNnAjdOFprinnOSdVigRkM8MTEcjz5bCUd+ow+ejRtK5yT3kkO3IYctJgefOj5lNBE4+g8qgpPF0FZY+Ysf9zOYSMET6DP3TtrS5m4AISoSu6+FbflCQuUyQtqZgFBiQ46hYAebyHc6YwLMX8snjKUgKs0JBwKuAK8O1wKmOjkZ3ZQzKFdTAqa3FnYB1vgyNT1BY9AL8Z2Eg5XhwfBHKMyuSCzQYnjlKxqbZQJyGT4ywT4okrBNY3HpYtFjFd4muT6M0jysXl1YGTzrQqpxLeLR7R2dVa6uENRcFmhZWQd75ZBzTJnD4Yp+jasVRhrSR96TAUTIRT677Z/MZ62RG3PKs/s4bwlZglmRt3wB1iWuzrdG5haJe/hCRnE8sUKS6zOq/1/tZLnVbFAs0AnTG7Qd0dvX3SB7hGTnzGaXmv2tLrWoSx7nx3ZmzI9K1XBTW6I3O/twvwe9wwMPOr3h4aDv9jvjXtcdHx2OXdSfDPv2zvxfItUZ9WI1AAA=
scheduler.json.gz:
H4sIAAAAAAAC/+1bXW/bNhR9z68QhD4kmBtEtvM1oA9duhXD+pG1aV7aQKCka4kLJaoklcQzvN8+iqIsSlYSO7O9OdNLG/KSFO/h4dERLU12LMuGAAvkEbB/tEaIcOjllQQn11zWfJUFy5qof2U14m8YTQN6m8iYYJlqrCI48UkWwCVivBm6BkgvcAzNeoHC6hJFy8wDloAAbuvKK6M1C0H8RFBybc60iGGh5m//Vg1QBcepigWIRx5FLNCDT3f08HaKEiAt2QZIIE4z5qv+54zGICLIjLFHGEhwRpMRDmWTSZVJACOUEcFrtbI+S7DIB0toAvYsMNV/TWcDhwwH57Te3Y5k8bhXlW9leWiU72T5wCiP8/Lc0DiQ1Y6xcALYDSL5rJy4So2mAtOkMQOfEsre0wCaOVTDpyQLcXIJjMvuebMbx9kf7h/YjZWsL30NpEdxV63gLmV5nGfxbpZOJP24zOTVN/uF/vOb3bP+oJ6syXn1kvsRBBnJ66d79aFwwgVKhCbo3LJczRPtSzpPMDmG0NTqrZ1IvkyRxo1aNRAhH1PkY5GvvnPQq4d5RG/PqVxzrlYQboDZzSZyO3zICOFNOIxVrnGZpnwlVDYnq7g8XIzL/adxmUAISdDEFfELLYamVhWQI+LXWVuMg7j4QEUOmW1Ermp9A8xTgsbl1ikEt9ZChn2IQbHQZjiMRD2er9y7csp1mhowCUqJwGkzq1hfl+MkJA8Kz7+yfRkSsDvbny70wdUlOV83yGRczsbl4NMk4K5Ps0QsteF7VrHFfXj1l2xfFqQSfH3huvnl3ZI7V3t7lje2dvWYVc+GZhT0+YWyGKklm5QTmk6tyaTsJAsyG7ttrVaLmYeT4BmApdPYAGAGwRAJKcMiircdvSona5bTBqC8oSSLn9OWLRKyFzECnyvIP8k5zbsCIZ0vB4ZLT/v/8gZrcgbOgtZg0FmDLbYGEZY8DhmK3e+ZtOeYwO7B/ulpz3qCZ/Ay/xqWVKB/LkA9i8Def8g4LIPovY5iC6Fck61YBs7F/MYWYrsJ07EM0Au4kS1E+WmWhMiJJf7YOj0VkfW7hq7zKOs5vzh55CjuuN2jDDuP8hyOLxhw4foESwhcBt8zWeSuoAKR1Tz29HwJQl7X39+/R3Yelpb+3d3angU3lvzgickPnkPywycmP3wOyR8+MfnDWvL33zXzn46s1+e/Wp+KLLrH+XUe9R817pUni90rD7t75bN+nm9Rk9W493vlxZLbIu9x/vHzxUNuPm+2mIHPW06nC2mO3CtipjfvOq++qfPE/mO/mjvDdv056vSn05+16M/bnzcvP2+hU5+l1McbG68mrfWsoO+0C9BxJ0BbLEApoz5wLqWF4yDXmBhiysau4tWKfh19TB+qM8WFNOK9mmEnBA0bElEm1iIEJwsKwUknBFssBMpslGrgp9nMW6zw5KTNTKxYHM7Ov1gZR2FnFDamD7WTk4cE4rQTiC0WiJC6IWU0EzhZ1hlsyBi8nU1vgc0/e9WewUian0gdyR8UPe188jGqwB0o6tY/D2h8GlAMJiCW/BD5D/vlytpEPuMZi2C+u54xVhCpti4cCPgCgjZuC7hT4GjFqSMod1QGZrSVehFWHDP9PUEeqM34RlLC0pww4gmK9QcLM8YYUfm4xsbaTM5TSAIcQq4TtllZfQIxG7FJcVNfH2dqmVa/LS1N0baUWkKzfFR/V6HK8xf673l1v2fpQfbqaZe8MqfEcxU2PnYwoCgu+wAKiJDLcoX3fzCvtQQ+5rLrL2ReEzJHtQq7chO2gdcWWxK9GXg1KZm2vzF5D6jtCKr/r3Y0lkoBqk05Yuq+bCf09qUT6UtIVdZ1dq3bn/lnJfknFhdntq6sv9ig+WNn6j5n9+HIO0IDb+gFwcgZ9o+9ATo8RMgZOI5/dHhk70z/BtqVarDoNAAA
workload-total.json.gz:
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

View File

@ -38,7 +38,7 @@ spec:
description: Alertmanager {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} failed to send {{`{{`}} $value | humanizePercentage {{`}}`}} of notifications to {{`{{`}} $labels.integration {{`}}`}}.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerfailedtosendalerts
summary: An Alertmanager instance failed to send notifications.
expr: "(\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[15m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[15m])\n)\n> 0.01\n"
expr: "(\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\"}[5m])\n)\n> 0.01\n"
for: 5m
labels:
severity: warning
@ -47,7 +47,7 @@ spec:
description: The minimum notification failure rate to {{`{{`}} $labels.integration {{`}}`}} sent from any instance in the {{`{{`}}$labels.job{{`}}`}} cluster is {{`{{`}} $value | humanizePercentage {{`}}`}}.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts
summary: All Alertmanager instances in a cluster failed to send notifications to a critical integration.
expr: "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[15m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[15m])\n)\n> 0.01\n"
expr: "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration=~`.*`}[5m])\n)\n> 0.01\n"
for: 5m
labels:
severity: critical
@ -56,7 +56,7 @@ spec:
description: The minimum notification failure rate to {{`{{`}} $labels.integration {{`}}`}} sent from any instance in the {{`{{`}}$labels.job{{`}}`}} cluster is {{`{{`}} $value | humanizePercentage {{`}}`}}.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/alertmanager/alertmanagerclusterfailedtosendalerts
summary: All Alertmanager instances in a cluster failed to send notifications to a non-critical integration.
expr: "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[15m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[15m])\n)\n> 0.01\n"
expr: "min by (namespace,service, integration) (\n rate(alertmanager_notifications_failed_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n/\n ignoring (reason) group_left rate(alertmanager_notifications_total{job=\"alertmanager-main\",namespace=\"monitoring\", integration!~`.*`}[5m])\n)\n> 0.01\n"
for: 5m
labels:
severity: warning

View File

@ -65,7 +65,7 @@ spec:
description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes on cluster {{`{{`}} $labels.cluster {{`}}`}}.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetreplicasmismatch
summary: StatefulSet has not matched the expected number of replicas.
expr: "(\n kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_replicas{job=\"kube-state-metrics\"}\n) and (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n ==\n 0\n)\n"
expr: "(\n kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_status_replicas{job=\"kube-state-metrics\"}\n) and (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[10m])\n ==\n 0\n)\n"
for: 15m
labels:
severity: warning
@ -83,7 +83,7 @@ spec:
description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} update has not been rolled out on cluster {{`{{`}} $labels.cluster {{`}}`}}.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubestatefulsetupdatenotrolledout
summary: StatefulSet update has not been rolled out.
expr: "(\n max by(namespace, statefulset, job, cluster) (\n kube_statefulset_status_current_revision{job=\"kube-state-metrics\"}\n unless\n kube_statefulset_status_update_revision{job=\"kube-state-metrics\"}\n )\n * on(namespace, statefulset, job, cluster)\n (\n kube_statefulset_replicas{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}\n )\n) and on(namespace, statefulset, job, cluster) (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[5m])\n ==\n 0\n)\n"
expr: "(\n max by(namespace, statefulset, job, cluster) (\n kube_statefulset_status_current_revision{job=\"kube-state-metrics\"}\n unless\n kube_statefulset_status_update_revision{job=\"kube-state-metrics\"}\n )\n *\n (\n kube_statefulset_replicas{job=\"kube-state-metrics\"}\n !=\n kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}\n )\n) and (\n changes(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\"}[5m])\n ==\n 0\n)\n"
for: 15m
labels:
severity: warning
@ -164,15 +164,6 @@ spec:
for: 15m
labels:
severity: warning
- alert: KubePdbNotEnoughHealthyPods
annotations:
description: PDB {{`{{`}} $labels.cluster {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.poddisruptionbudget {{`}}`}} expects {{`{{`}} $value {{`}}`}} more healthy pods. The desired number of healthy pods has not been met for at least 15m.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubepdbnotenoughhealthypods
summary: PDB does not have enough healthy pods.
expr: "(\n kube_poddisruptionbudget_status_desired_healthy{job=\"kube-state-metrics\"}\n -\n kube_poddisruptionbudget_status_current_healthy{job=\"kube-state-metrics\"}\n)\n> 0\n"
for: 15m
labels:
severity: warning
- name: kubernetes-resources
rules:
- alert: KubeCPUQuotaOvercommit
@ -186,7 +177,7 @@ spec:
severity: warning
- alert: KubeMemoryQuotaOvercommit
annotations:
description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted memory resource requests for Namespaces.
description: Cluster {{`{{`}} $labels.cluster {{`}}`}} has overcommitted memory resource requests for Namespaces.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubememoryquotaovercommit
summary: Cluster has overcommitted memory resource requests.
expr: "sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(memory|requests.memory)\"})) by (cluster)\n /\nsum(kube_node_status_allocatable{resource=\"memory\", job=\"kube-state-metrics\"}) by (cluster)\n > 1.5\n"
@ -225,7 +216,7 @@ spec:
description: '{{`{{`}} $value | humanizePercentage {{`}}`}} throttling of CPU in namespace {{`{{`}} $labels.namespace {{`}}`}} for container {{`{{`}} $labels.container {{`}}`}} in pod {{`{{`}} $labels.pod {{`}}`}} on cluster {{`{{`}} $labels.cluster {{`}}`}}.'
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/cputhrottlinghigh
summary: Processes experience elevated CPU throttling.
expr: "sum(increase(container_cpu_cfs_throttled_periods_total{container!=\"\", job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n / on (cluster, namespace, pod, container, instance) group_left\nsum(increase(container_cpu_cfs_periods_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n > ( 25 / 100 )\n"
expr: "sum(increase(container_cpu_cfs_throttled_periods_total{container!=\"\", job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n /\nsum(increase(container_cpu_cfs_periods_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", }[5m])) without (id, metrics_path, name, image, endpoint, job, node)\n > ( 25 / 100 )\n"
for: 15m
labels:
severity: info
@ -471,21 +462,6 @@ spec:
for: 15m
labels:
severity: warning
- alert: KubeNodePressure
annotations:
description: '{{`{{`}} $labels.node {{`}}`}} on cluster {{`{{`}} $labels.cluster {{`}}`}} has active Condition {{`{{`}} $labels.condition {{`}}`}}. This is caused by resource usage exceeding eviction thresholds.'
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodepressure
summary: Node has as active Condition.
expr: 'kube_node_status_condition{job="kube-state-metrics",condition=~"(MemoryPressure|DiskPressure|PIDPressure)",status="true"} == 1
and on (cluster, node)
kube_node_spec_unschedulable{job="kube-state-metrics"} == 0
'
for: 10m
labels:
severity: info
- alert: KubeNodeUnreachable
annotations:
description: '{{`{{`}} $labels.node {{`}}`}} is unreachable and some workloads may be rescheduled on cluster {{`{{`}} $labels.cluster {{`}}`}}.'
@ -521,15 +497,6 @@ spec:
for: 15m
labels:
severity: warning
- alert: KubeNodeEviction
annotations:
description: Node {{`{{`}} $labels.node {{`}}`}} on {{`{{`}} $labels.cluster {{`}}`}} is evicting Pods due to {{`{{`}} $labels.eviction_signal {{`}}`}}. Eviction occurs when eviction thresholds are crossed, typically caused by Pods exceeding RAM/ephemeral-storage limits.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/kubernetes/kubenodeeviction
summary: Node is evicting pods.
expr: "sum(rate(kubelet_evictions{job=\"kubelet\", metrics_path=\"/metrics\"}[15m])) by(cluster, eviction_signal, instance)\n* on (cluster, instance) group_left(node)\nmax by (cluster, instance, node) (\n kubelet_node_name{job=\"kubelet\", metrics_path=\"/metrics\"}\n)\n> 0\n"
for: 0s
labels:
severity: info
- alert: KubeletPlegDurationHigh
annotations:
description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}} on cluster {{`{{`}} $labels.cluster {{`}}`}}.
@ -686,16 +653,16 @@ spec:
'
record: cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d
- expr: "1 - (\n (\n # write too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"} or vector(0))\n ) +\n (\n # read too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"\
LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"} or vector(0))\n )\n ) +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d)\n"
- expr: "1 - (\n (\n # write too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"})\n ) +\n (\n # read too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n (\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"})\n or\n vector(0)\n )\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"})\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"\
LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"})\n )\n ) +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d)\n"
labels:
verb: all
record: apiserver_request:availability30d
- expr: "1 - (\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n # too slow\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"} or vector(0))\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"} or vector(0))\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n"
- expr: "1 - (\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"LIST|GET\"})\n -\n (\n # too slow\n (\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=~\"resource|\",le=~\"1(\\\\.0)?\"})\n or\n vector(0)\n )\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"namespace\",le=~\"5(\\\\.0)?\"})\n +\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"LIST|GET\",scope=\"cluster\",le=~\"30(\\\\.0)?\"})\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"read\"})\n"
labels:
verb: read
record: apiserver_request:availability30d
- expr: "1 - (\n (\n # too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"} or vector(0))\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n"
- expr: "1 - (\n (\n # too slow\n sum by (cluster) (cluster_verb_scope:apiserver_request_sli_duration_seconds_count:increase30d{verb=~\"POST|PUT|PATCH|DELETE\"})\n -\n sum by (cluster) (cluster_verb_scope_le:apiserver_request_sli_duration_seconds_bucket:increase30d{verb=~\"POST|PUT|PATCH|DELETE\",le=~\"1(\\\\.0)?\"})\n )\n +\n # errors\n sum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\",code=~\"5..\"} or vector(0))\n)\n/\nsum by (cluster) (code:apiserver_request_total:increase30d{verb=\"write\"})\n"
labels:
verb: write
record: apiserver_request:availability30d
@ -810,8 +777,6 @@ spec:
record: cluster_quantile:apiserver_request_sli_duration_seconds:histogram_quantile
- name: k8s.rules.container_cpu_usage_seconds_total
rules:
- expr: "sum by (cluster, namespace, pod, container) (\n rate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n)\n"
record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate5m
- expr: "sum by (cluster, namespace, pod, container) (\n irate(container_cpu_usage_seconds_total{job=\"kubelet\", metrics_path=\"/metrics/cadvisor\", image!=\"\"}[5m])\n) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) (\n 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=\"\"})\n)\n"
record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate
- name: k8s.rules.container_memory_working_set_bytes
@ -856,11 +821,7 @@ spec:
record: namespace_cpu:kube_pod_container_resource_limits:sum
- name: k8s.rules.pod_owner
rules:
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n ) * on (cluster, replicaset, namespace) group_left(owner_name) topk by(cluster, replicaset, namespace) (\n 1, max by (cluster, replicaset, namespace, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind=\"\"}\n )\n ),\n \"workload\", \"$1\", \"replicaset\", \"(.*)\"\n )\n)\n"
labels:
workload_type: replicaset
record: namespace_workload_pod:kube_pod_owner:relabel
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n ) * on(replicaset, namespace, cluster) group_left(owner_name) topk by(cluster, replicaset, namespace) (\n 1, max by (cluster, replicaset, namespace, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind=\"Deployment\"}\n )\n ),\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n"
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"},\n \"replicaset\", \"$1\", \"owner_name\", \"(.*)\"\n ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) (\n 1, max by (replicaset, namespace, owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\"}\n )\n ),\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n"
labels:
workload_type: deployment
record: namespace_workload_pod:kube_pod_owner:relabel
@ -868,25 +829,14 @@ spec:
labels:
workload_type: daemonset
record: namespace_workload_pod:kube_pod_owner:relabel
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n \"workload\", \"$1\", \"owner_name\", \"(.*)\")\n)\n"
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"StatefulSet\"},\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n"
labels:
workload_type: statefulset
record: namespace_workload_pod:kube_pod_owner:relabel
- expr: "group by (cluster, namespace, workload, pod) (\n label_join(\n group by (cluster, namespace, job_name, pod, owner_name) (\n label_join(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"}\n , \"job_name\", \"\", \"owner_name\")\n )\n * on (cluster, namespace, job_name) group_left()\n group by (cluster, namespace, job_name) (\n kube_job_owner{job=\"kube-state-metrics\", owner_kind=~\"Pod|\"}\n )\n , \"workload\", \"\", \"owner_name\")\n)\n"
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"},\n \"workload\", \"$1\", \"owner_name\", \"(.*)\"\n )\n)\n"
labels:
workload_type: job
record: namespace_workload_pod:kube_pod_owner:relabel
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"\", owner_name=\"\"},\n \"workload\", \"$1\", \"pod\", \"(.+)\")\n)\n"
labels:
workload_type: barepod
record: namespace_workload_pod:kube_pod_owner:relabel
- expr: "max by (cluster, namespace, workload, pod) (\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Node\"},\n \"workload\", \"$1\", \"pod\", \"(.+)\")\n)\n"
labels:
workload_type: staticpod
record: namespace_workload_pod:kube_pod_owner:relabel
- expr: "group by (cluster, namespace, workload, workload_type, pod) (\n label_join(\n label_join(\n group by (cluster, namespace, job_name, pod) (\n label_join(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"Job\"}\n , \"job_name\", \"\", \"owner_name\")\n )\n * on (cluster, namespace, job_name) group_left(owner_kind, owner_name)\n group by (cluster, namespace, job_name, owner_kind, owner_name) (\n kube_job_owner{job=\"kube-state-metrics\", owner_kind!=\"Pod\", owner_kind!=\"\"}\n )\n , \"workload\", \"\", \"owner_name\")\n , \"workload_type\", \"\", \"owner_kind\")\n \n OR\n\n label_replace(\n label_replace(\n label_replace(\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind=\"ReplicaSet\"}\n , \"replicaset\", \"$1\", \"owner_name\", \"(.+)\"\n )\n * on(cluster, namespace, replicaset) group_left(owner_kind, owner_name)\n group by (cluster, namespace, replicaset, owner_kind,\
\ owner_name) (\n kube_replicaset_owner{job=\"kube-state-metrics\", owner_kind!=\"Deployment\", owner_kind!=\"\"}\n )\n , \"workload\", \"$1\", \"owner_name\", \"(.+)\")\n OR\n label_replace(\n group by (cluster, namespace, pod, owner_name, owner_kind) (\n kube_pod_owner{job=\"kube-state-metrics\", owner_kind!=\"ReplicaSet\", owner_kind!=\"DaemonSet\", owner_kind!=\"StatefulSet\", owner_kind!=\"Job\", owner_kind!=\"Node\", owner_kind!=\"\"}\n )\n , \"workload\", \"$1\", \"owner_name\", \"(.+)\"\n )\n , \"workload_type\", \"$1\", \"owner_kind\", \"(.+)\")\n)\n"
record: namespace_workload_pod:kube_pod_owner:relabel
- name: kube-scheduler.rules
rules:
- expr: 'histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job="kube-scheduler"}[5m])) without(instance, pod))
@ -975,4 +925,122 @@ spec:
labels:
quantile: '0.5'
record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile
- name: windows.node.rules
rules:
- expr: "count by (cluster) (\n windows_system_system_up_time{job=\"kubernetes-windows-exporter\"}\n)\n"
record: node:windows_node:sum
- expr: "count by (cluster, instance) (sum by (cluster, instance, core) (\n windows_cpu_time_total{job=\"kubernetes-windows-exporter\"}\n))\n"
record: node:windows_node_num_cpu:sum
- expr: '1 - avg by (cluster) (rate(windows_cpu_time_total{job="kubernetes-windows-exporter",mode="idle"}[1m]))
'
record: :windows_node_cpu_utilisation:avg1m
- expr: "1 - avg by (cluster, instance) (\n rate(windows_cpu_time_total{job=\"kubernetes-windows-exporter\",mode=\"idle\"}[1m])\n)\n"
record: node:windows_node_cpu_utilisation:avg1m
- expr: '1 -
sum by (cluster) (windows_memory_available_bytes{job="kubernetes-windows-exporter"})
/
sum by (cluster) (windows_os_visible_memory_bytes{job="kubernetes-windows-exporter"})
'
record: ':windows_node_memory_utilisation:'
- expr: 'sum by (cluster) (windows_memory_available_bytes{job="kubernetes-windows-exporter"} + windows_memory_cache_bytes{job="kubernetes-windows-exporter"})
'
record: :windows_node_memory_MemFreeCached_bytes:sum
- expr: '(windows_memory_cache_bytes{job="kubernetes-windows-exporter"} + windows_memory_modified_page_list_bytes{job="kubernetes-windows-exporter"} + windows_memory_standby_cache_core_bytes{job="kubernetes-windows-exporter"} + windows_memory_standby_cache_normal_priority_bytes{job="kubernetes-windows-exporter"} + windows_memory_standby_cache_reserve_bytes{job="kubernetes-windows-exporter"})
'
record: node:windows_node_memory_totalCached_bytes:sum
- expr: 'sum by (cluster) (windows_os_visible_memory_bytes{job="kubernetes-windows-exporter"})
'
record: :windows_node_memory_MemTotal_bytes:sum
- expr: "sum by (cluster, instance) (\n (windows_memory_available_bytes{job=\"kubernetes-windows-exporter\"})\n)\n"
record: node:windows_node_memory_bytes_available:sum
- expr: "sum by (cluster, instance) (\n windows_os_visible_memory_bytes{job=\"kubernetes-windows-exporter\"}\n)\n"
record: node:windows_node_memory_bytes_total:sum
- expr: '(node:windows_node_memory_bytes_total:sum - node:windows_node_memory_bytes_available:sum)
/
scalar(sum(node:windows_node_memory_bytes_total:sum))
'
record: node:windows_node_memory_utilisation:ratio
- expr: '1 - (node:windows_node_memory_bytes_available:sum / node:windows_node_memory_bytes_total:sum)
'
record: 'node:windows_node_memory_utilisation:'
- expr: 'irate(windows_memory_swap_page_operations_total{job="kubernetes-windows-exporter"}[5m])
'
record: node:windows_node_memory_swap_io_pages:irate
- expr: "avg by (cluster) (irate(windows_logical_disk_read_seconds_total{job=\"kubernetes-windows-exporter\"}[1m]) +\n irate(windows_logical_disk_write_seconds_total{job=\"kubernetes-windows-exporter\"}[1m])\n )\n"
record: :windows_node_disk_utilisation:avg_irate
- expr: "avg by (cluster, instance) (\n (irate(windows_logical_disk_read_seconds_total{job=\"kubernetes-windows-exporter\"}[1m]) +\n irate(windows_logical_disk_write_seconds_total{job=\"kubernetes-windows-exporter\"}[1m]))\n)\n"
record: node:windows_node_disk_utilisation:avg_irate
- expr: "max by (cluster,instance,volume)(\n (windows_logical_disk_size_bytes{job=\"kubernetes-windows-exporter\"}\n- windows_logical_disk_free_bytes{job=\"kubernetes-windows-exporter\"})\n/ windows_logical_disk_size_bytes{job=\"kubernetes-windows-exporter\"}\n)\n"
record: 'node:windows_node_filesystem_usage:'
- expr: 'max by (cluster, instance, volume) (windows_logical_disk_free_bytes{job="kubernetes-windows-exporter"} / windows_logical_disk_size_bytes{job="kubernetes-windows-exporter"})
'
record: 'node:windows_node_filesystem_avail:'
- expr: 'sum by (cluster) (irate(windows_net_bytes_total{job="kubernetes-windows-exporter"}[1m]))
'
record: :windows_node_net_utilisation:sum_irate
- expr: "sum by (cluster, instance) (\n (irate(windows_net_bytes_total{job=\"kubernetes-windows-exporter\"}[1m]))\n)\n"
record: node:windows_node_net_utilisation:sum_irate
- expr: 'sum by (cluster) (irate(windows_net_packets_received_discarded_total{job="kubernetes-windows-exporter"}[1m])) +
sum by (cluster) (irate(windows_net_packets_outbound_discarded_total{job="kubernetes-windows-exporter"}[1m]))
'
record: :windows_node_net_saturation:sum_irate
- expr: "sum by (cluster, instance) (\n (irate(windows_net_packets_received_discarded_total{job=\"kubernetes-windows-exporter\"}[1m]) +\n irate(windows_net_packets_outbound_discarded_total{job=\"kubernetes-windows-exporter\"}[1m]))\n)\n"
record: node:windows_node_net_saturation:sum_irate
- name: windows.pod.rules
rules:
- expr: 'windows_container_available{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster)
'
record: windows_pod_container_available
- expr: 'windows_container_cpu_usage_seconds_total{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster)
'
record: windows_container_total_runtime
- expr: 'windows_container_memory_usage_commit_bytes{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster)
'
record: windows_container_memory_usage
- expr: 'windows_container_memory_usage_private_working_set_bytes{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster)
'
record: windows_container_private_working_set_usage
- expr: 'windows_container_network_receive_bytes_total{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster)
'
record: windows_container_network_received_bytes_total
- expr: 'windows_container_network_transmit_bytes_total{job="kubernetes-windows-exporter", container_id != ""} * on(container_id, cluster) group_left(container, pod, namespace) max(kube_pod_container_info{job="kube-state-metrics", container_id != ""}) by(container, container_id, pod, namespace, cluster)
'
record: windows_container_network_transmitted_bytes_total
- expr: "max by (cluster, namespace, pod, container) (\n kube_pod_container_resource_requests{resource=\"memory\",job=\"kube-state-metrics\"}\n) * on(container,pod,namespace,cluster) (windows_pod_container_available)\n"
record: kube_pod_windows_container_resource_memory_request
- expr: 'kube_pod_container_resource_limits{resource="memory",job="kube-state-metrics"} * on(container,pod,namespace,cluster) (windows_pod_container_available)
'
record: kube_pod_windows_container_resource_memory_limit
- expr: "max by (cluster, namespace, pod, container) (\n kube_pod_container_resource_requests{resource=\"cpu\",job=\"kube-state-metrics\"}\n) * on(container,pod,namespace,cluster) (windows_pod_container_available)\n"
record: kube_pod_windows_container_resource_cpu_cores_request
- expr: 'kube_pod_container_resource_limits{resource="cpu",job="kube-state-metrics"} * on(container,pod,namespace,cluster) (windows_pod_container_available)
'
record: kube_pod_windows_container_resource_cpu_cores_limit
- expr: "sum by (cluster, namespace, pod, container) (\n rate(windows_container_total_runtime{}[5m])\n)\n"
record: namespace_pod_container:windows_container_cpu_usage_seconds_total:sum_rate

View File

@ -270,17 +270,6 @@ spec:
for: 5m
labels:
severity: warning
- alert: NodeSystemdServiceCrashlooping
annotations:
description: Systemd service {{`{{`}} $labels.name {{`}}`}} has being restarted too many times at {{`{{`}} $labels.instance {{`}}`}} for the last 15 minutes. Please check if service is crash looping.
runbook_url: https://runbooks.prometheus-operator.dev/runbooks/node/nodesystemdservicecrashlooping
summary: Systemd service keeps restaring, possibly crash looping.
expr: 'increase(node_systemd_service_restart_total{job="node-exporter"}[5m]) > 2
'
for: 15m
labels:
severity: warning
- alert: NodeBondingDegraded
annotations:
description: Bonding interface {{`{{`}} $labels.master {{`}}`}} on {{`{{`}} $labels.instance {{`}}`}} is in degraded state due to one or more slave failures.

View File

@ -12,7 +12,7 @@ kube-prometheus-stack:
kubeStateMetrics:
enabled: true
kubeProxy:
enabled: false
enabled: true
kubeEtcd:
enabled: true
@ -83,7 +83,7 @@ kube-prometheus-stack:
resources:
requests:
cpu: 20m
memory: 24Mi
memory: 16Mi
prometheus:
enabled: true

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-mq
description: KubeZero umbrella chart for MQ systems like NATS, RabbitMQ
type: application
version: 0.3.12
version: 0.3.11
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -17,7 +17,7 @@ dependencies:
version: 0.2.1
repository: https://cdn.zero-downtime.net/charts/
- name: nats
version: 1.3.7
version: 1.3.3
repository: https://nats-io.github.io/k8s/helm/charts/
condition: nats.enabled
- name: rabbitmq

View File

@ -1,6 +1,6 @@
# kubezero-mq
![Version: 0.3.12](https://img.shields.io/badge/Version-0.3.12-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
![Version: 0.3.11](https://img.shields.io/badge/Version-0.3.11-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
KubeZero umbrella chart for MQ systems like NATS, RabbitMQ
@ -20,7 +20,7 @@ Kubernetes: `>= 1.26.0`
|------------|------|---------|
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
| https://charts.bitnami.com/bitnami | rabbitmq | 14.7.0 |
| https://nats-io.github.io/k8s/helm/charts/ | nats | 1.3.7 |
| https://nats-io.github.io/k8s/helm/charts/ | nats | 1.3.3 |
## Values
@ -32,8 +32,6 @@ Kubernetes: `>= 1.26.0`
| nats.istio.gateway | string | `"istio-ingress/private-ingressgateway"` | |
| nats.mqtt.enabled | bool | `false` | |
| nats.natsBox.enabled | bool | `false` | |
| nats.podTemplate.topologySpreadConstraints."kubernetes.io/hostname".maxSkew | int | `1` | |
| nats.podTemplate.topologySpreadConstraints."kubernetes.io/hostname".whenUnsatisfiable | string | `"DoNotSchedule"` | |
| nats.promExporter.enabled | bool | `false` | |
| nats.promExporter.podMonitor.enabled | bool | `false` | |
| rabbitmq.auth.existingErlangSecret | string | `"rabbitmq"` | |

View File

@ -1,7 +1,7 @@
configmap: grafana-dashboards-nats
condition: '.Values.nats.promExporter.podMonitor.enabled'
condition: '.Values.nats.exporter.serviceMonitor.enabled'
gzip: true
# folder:
# folder:
dashboards:
- name: nats
url: https://grafana.com/api/dashboards/13707/revisions/1/download

View File

@ -3,10 +3,6 @@ nats:
enabled: false
config:
cluster:
routeURLs:
useFQDN: true
jetstream:
enabled: true

View File

@ -2,7 +2,7 @@ apiVersion: v2
name: kubezero-network
description: KubeZero umbrella chart for all things network
type: application
version: 0.5.9
version: 0.5.8
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
@ -10,6 +10,7 @@ keywords:
- multus
- cilium
- aws-cni
- metallb
maintainers:
- name: Stefan Reimer
email: stefan@zero-downtime.net
@ -18,9 +19,13 @@ dependencies:
version: 0.2.1
repository: https://cdn.zero-downtime.net/charts/
- name: cilium
version: 1.17.4
version: 1.17.3
repository: https://helm.cilium.io/
condition: cilium.enabled
- name: metallb
version: 0.14.9
repository: https://metallb.github.io/metallb
condition: metallb.enabled
- name: haproxy
version: 1.24.0
repository: https://haproxytech.github.io/helm-charts

View File

@ -1,6 +1,6 @@
# kubezero-network
![Version: 0.5.9](https://img.shields.io/badge/Version-0.5.9-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
![Version: 0.5.8](https://img.shields.io/badge/Version-0.5.8-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
KubeZero umbrella chart for all things network
@ -20,22 +20,20 @@ Kubernetes: `>= 1.30.0-0`
|------------|------|---------|
| https://cdn.zero-downtime.net/charts/ | kubezero-lib | 0.2.1 |
| https://haproxytech.github.io/helm-charts | haproxy | 1.24.0 |
| https://helm.cilium.io/ | cilium | 1.17.4 |
| https://helm.cilium.io/ | cilium | 1.17.3 |
| https://metallb.github.io/metallb | metallb | 0.14.9 |
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| cilium.bpf.preallocateMaps | bool | `true` | |
| cilium.cgroup.autoMount.enabled | bool | `false` | |
| cilium.cgroup.hostRoot | string | `"/sys/fs/cgroup"` | |
| cilium.cluster.id | int | `240` | |
| cilium.cluster.name | string | `"default"` | |
| cilium.cni.binPath | string | `"/usr/libexec/cni"` | |
| cilium.cni.exclusive | bool | `true` | |
| cilium.cni.iptablesRemoveAWSRules | bool | `false` | |
| cilium.cni.exclusive | bool | `false` | |
| cilium.cni.logFile | string | `"/var/log/cilium-cni.log"` | |
| cilium.dnsProxy.enableTransparentMode | bool | `true` | |
| cilium.enabled | bool | `false` | |
| cilium.envoy.enabled | bool | `false` | |
| cilium.hubble.enabled | bool | `false` | |
@ -47,9 +45,6 @@ Kubernetes: `>= 1.30.0-0`
| cilium.hubble.ui.enabled | bool | `false` | |
| cilium.image.useDigest | bool | `false` | |
| cilium.ipam.operator.clusterPoolIPv4PodCIDRList[0] | string | `"10.240.0.0/16"` | |
| cilium.k8sServiceHost | string | `""` | |
| cilium.k8sServicePort | int | `6443` | |
| cilium.kubeProxyReplacement | bool | `true` | |
| cilium.l7Proxy | bool | `false` | |
| cilium.operator.nodeSelector."node-role.kubernetes.io/control-plane" | string | `""` | |
| cilium.operator.prometheus.enabled | bool | `false` | |
@ -59,13 +54,12 @@ Kubernetes: `>= 1.30.0-0`
| cilium.operator.tolerations[0].key | string | `"node-role.kubernetes.io/control-plane"` | |
| cilium.operator.tolerations[1].effect | string | `"NoSchedule"` | |
| cilium.operator.tolerations[1].key | string | `"node.cilium.io/agent-not-ready"` | |
| cilium.operator.tolerations[2].effect | string | `"NoSchedule"` | |
| cilium.operator.tolerations[2].key | string | `"node.kubernetes.io/not-ready"` | |
| cilium.prometheus.enabled | bool | `false` | |
| cilium.prometheus.port | int | `9091` | |
| cilium.prometheus.serviceMonitor.enabled | bool | `false` | |
| cilium.resources.requests.cpu | string | `"50m"` | |
| cilium.resources.requests.memory | string | `"256Mi"` | |
| cilium.resources.limits.memory | string | `"1Gi"` | |
| cilium.resources.requests.cpu | string | `"10m"` | |
| cilium.resources.requests.memory | string | `"160Mi"` | |
| cilium.routingMode | string | `"tunnel"` | |
| cilium.sysctlfix.enabled | bool | `false` | |
| cilium.tunnelProtocol | string | `"geneve"` | |
@ -113,6 +107,11 @@ Kubernetes: `>= 1.30.0-0`
| haproxy.serviceMonitor.endpoints[0].path | string | `"/metrics"` | |
| haproxy.serviceMonitor.endpoints[0].port | string | `"prometheus"` | |
| haproxy.serviceMonitor.endpoints[0].scheme | string | `"http"` | |
| metallb.controller.nodeSelector."node-role.kubernetes.io/control-plane" | string | `""` | |
| metallb.controller.tolerations[0].effect | string | `"NoSchedule"` | |
| metallb.controller.tolerations[0].key | string | `"node-role.kubernetes.io/control-plane"` | |
| metallb.enabled | bool | `false` | |
| metallb.ipAddressPools | list | `[]` | |
| multus.clusterNetwork | string | `"cilium"` | |
| multus.defaultNetworks | list | `[]` | |
| multus.enabled | bool | `false` | |

View File

@ -0,0 +1,27 @@
{{- if .Values.metallb.enabled }}
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2advertisement1
namespace: kube-system
spec:
ipAddressPools:
{{- range $key, $val := .Values.metallb.ipAddressPools }}
{{- if eq $val.protocol "layer2" }}
- {{ $val.name }}
{{- end }}
{{- end }}
---
{{- range $key, $val := .Values.metallb.ipAddressPools }}
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: {{ $val.name }}
namespace: kube-system
spec:
addresses:
{{- $val.addresses | toYaml | nindent 4 }}
{{- end }}
---
{{- end }}

View File

@ -1,3 +1,19 @@
metallb:
enabled: false
controller:
tolerations:
- key: node-role.kubernetes.io/control-plane
effect: NoSchedule
nodeSelector:
node-role.kubernetes.io/control-plane: ""
ipAddressPools: []
#- name: my-ip-space
# protocol: layer2
# addresses:
# - 192.168.42.0/24
multus:
enabled: false
image:
@ -17,18 +33,17 @@ cilium:
resources:
requests:
cpu: 50m
memory: 384Mi
# limits:
# memory: 1Gi
# cpu: 4000m
cpu: 10m
memory: 160Mi
limits:
memory: 1Gi
# cpu: 4000m
cni:
binPath: "/usr/libexec/cni"
logFile: /var/log/cilium-cni.log
#-- Ensure this is false if multus is enabled
exclusive: true
iptablesRemoveAWSRules: false
exclusive: false
cluster:
# This should match the second octet of clusterPoolIPv4PodCIDRList
@ -48,32 +63,13 @@ cilium:
enabled: false
#rollOutCiliumPods: true
kubeProxyReplacement: true
dnsProxy:
enableTransparentMode: true
# For LB support via L2announcement or BGP - on-prem only
# l2announcements:
# enabled: true
# Not needed normally
# externalIPs:
# enabled: true
k8sServiceHost: ""
k8sServicePort: 6443
# k8s:
# # This has to be set to the DNS name of all API servers
# # For example "https://192.168.0.1:6443 https://192.168.0.2:6443"
# apiServerURLs: ""
cgroup:
autoMount:
enabled: false
hostRoot: "/sys/fs/cgroup"
bpf:
preallocateMaps: true
# we need biDirectional so use helm init-container
#bpf:
# autoMount:
# enabled: false
@ -95,11 +91,9 @@ cilium:
- key: node-role.kubernetes.io/control-plane
effect: NoSchedule
# the operator removes the taints,
# so we need to break chicken egg
# so we need to break chicken egg on single controller
- key: node.cilium.io/agent-not-ready
effect: NoSchedule
- key: node.kubernetes.io/not-ready
effect: NoSchedule
nodeSelector:
node-role.kubernetes.io/control-plane: ""

View File

@ -2,12 +2,13 @@ apiVersion: v2
name: kubezero-operators
description: Various operators supported by KubeZero
type: application
version: 0.2.1
version: 0.2.0
home: https://kubezero.com
icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png
keywords:
- kubezero
- operators
- opensearch
- postgres
- kafka
- rabbitmq
@ -18,20 +19,24 @@ dependencies:
- name: kubezero-lib
version: 0.2.1
repository: https://cdn.zero-downtime.net/charts/
- name: opensearch-operator
version: 2.7.0
repository: https://opensearch-project.github.io/opensearch-k8s-operator/
condition: opensearch-operator.enabled
- name: eck-operator
version: 3.0.0
version: 2.16.1
repository: https://helm.elastic.co
condition: eck-operator.enabled
- name: cloudnative-pg
version: 0.23.2
version: 0.23.0
repository: https://cloudnative-pg.github.io/charts
condition: cloudnative-pg.enabled
- name: strimzi-kafka-operator
version: 0.46.0
version: 0.45.0
repository: "oci://quay.io/strimzi-helm"
condition: strimzi-kafka-operator.enabled
- name: rabbitmq-cluster-operator
version: 4.4.11
version: 4.4.3
repository: https://charts.bitnami.com/bitnami
condition: rabbitmq-cluster-operator.enabled
kubeVersion: ">= 1.30.0-0"

Some files were not shown because too many files have changed in this diff Show More