This is an automated email from the ASF dual-hosted git repository. hanahmily pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/skywalking-showcase.git
The following commit(s) were added to refs/heads/main by this push: new e06e4a6 Update BanyanDB image tag and enhance Kubernetes deployment configurations e06e4a6 is described below commit e06e4a64813889e9ebaa4da886d61de25ecb0b37 Author: Gao Hongtao <hanahm...@gmail.com> AuthorDate: Thu Aug 14 06:36:01 2025 +0000 Update BanyanDB image tag and enhance Kubernetes deployment configurations --- .gitignore | 7 ++ Makefile.in | 6 +- deploy/platform/kubernetes/Chart.yaml | 4 +- deploy/platform/kubernetes/Makefile | 52 +++-------- deploy/platform/kubernetes/values.yaml | 162 +++++++++++++++++++++------------ 5 files changed, 131 insertions(+), 100 deletions(-) diff --git a/.gitignore b/.gitignore index ddfd936..640aee6 100644 --- a/.gitignore +++ b/.gitignore @@ -66,3 +66,10 @@ deploy/platform/kubernetes/charts/ deploy/platform/kubernetes/tmpcharts/ deploy/platform/kubernetes/generated + +### Cursor ### +.cursor + +### Claude Code ### +Claude.md +.claude diff --git a/Makefile.in b/Makefile.in index 6abc156..23e177e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -26,17 +26,17 @@ HUB ?= ghcr.io/apache/skywalking-showcase TAG ?= $(shell git rev-parse --short HEAD) BANYANDB_IMAGE ?= ghcr.io/apache/skywalking-banyandb -BANYANDB_IMAGE_TAG ?= 164b4917dcb0ade9527a5c5bbd1896f9a56a094a +BANYANDB_IMAGE_TAG ?= 7e5b2d0404e8ad6d5835eee6fe589a2544d0decb STORAGE_CLASS ?= "" ES_IMAGE ?= docker.elastic.co/elasticsearch/elasticsearch-oss ES_IMAGE_TAG ?= 7.10.2 SW_OAP_IMAGE ?= ghcr.io/apache/skywalking/oap -SW_OAP_IMAGE_TAG ?= 6fe1fd8bea21d9c365c74d60584da109202ee297 +SW_OAP_IMAGE_TAG ?= bf04afdb2a841c60d5e27f5a9fc62d0879a5600c SW_UI_IMAGE ?= ghcr.io/apache/skywalking/ui -SW_UI_IMAGE_TAG ?= 6fe1fd8bea21d9c365c74d60584da109202ee297 +SW_UI_IMAGE_TAG ?= bf04afdb2a841c60d5e27f5a9fc62d0879a5600c SW_CLI_IMAGE ?= ghcr.io/apache/skywalking-cli/skywalking-cli:bce7faaabbd57ed1f40156af8a8eb6c3eccea4ae SW_EVENT_EXPORTER_IMAGE ?= ghcr.io/apache/skywalking-kubernetes-event-exporter/skywalking-kubernetes-event-exporter:8a012a3f968cb139f817189afb9b3748841bba22 diff --git a/deploy/platform/kubernetes/Chart.yaml b/deploy/platform/kubernetes/Chart.yaml index dc961dc..057fdf0 100644 --- a/deploy/platform/kubernetes/Chart.yaml +++ b/deploy/platform/kubernetes/Chart.yaml @@ -24,13 +24,13 @@ sources: dependencies: - name: skywalking-helm alias: skywalking - version: 0.0.0-ea789a5633ad02ab704ddabb92aa067ee7705b09 + version: 0.0.0-133cfc420dd7c278445d714490898eb5cd5a90f0 repository: oci://ghcr.io/apache/skywalking-helm # @feature: java-agent-injector; the java agent injector is a component of the swck operator, so we need to deploy the swck operator firstly - name: skywalking-helm-swck-operator alias: swck - version: 0.0.0-ea789a5633ad02ab704ddabb92aa067ee7705b09 + version: 0.0.0-133cfc420dd7c278445d714490898eb5cd5a90f0 repository: oci://ghcr.io/apache/skywalking-helm condition: features.javaAgentInjector.enabled diff --git a/deploy/platform/kubernetes/Makefile b/deploy/platform/kubernetes/Makefile index c173c5b..2e87215 100644 --- a/deploy/platform/kubernetes/Makefile +++ b/deploy/platform/kubernetes/Makefile @@ -26,44 +26,20 @@ include check.mak HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.fullnameOverride=$(RELEASE) HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.image.repository=$(BANYANDB_IMAGE) --set skywalking.banyandb.image.tag=$(BANYANDB_IMAGE_TAG) -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.etcd.persistence.storageClass=$(STORAGE_CLASS) -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[0].mountTargets[0]=stream -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[0].nodeRole=hot -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[0].claimName=hot-stream-data -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[0].size=10Gi -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[0].accessModes[0]=ReadWriteOnce -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[0].storageClass=$(STORAGE_CLASS) -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[0].volumeMode=Filesystem -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[1].mountTargets[0]=measure -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[1].nodeRole=hot -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[1].claimName=hot-measure-data -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[1].size=10Gi -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[1].accessModes[0]=ReadWriteOnce -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[1].storageClass=$(STORAGE_CLASS) -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[1].volumeMode=Filesystem -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[2].mountTargets[0]=property -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[2].nodeRole=hot -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[2].claimName=hot-property-data -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[2].size=2Gi -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[2].accessModes[0]=ReadWriteOnce -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[2].storageClass=$(STORAGE_CLASS) -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[2].volumeMode=Filesystem -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].mountTargets[0]=stream -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].mountTargets[1]=measure -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].nodeRole=warm -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].claimName=warm-data -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].size=50Gi -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].accessModes[0]=ReadWriteOnce -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].storageClass=$(STORAGE_CLASS) -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[3].volumeMode=Filesystem -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].mountTargets[0]=stream -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].mountTargets[1]=measure -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].nodeRole=cold -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].claimName=cold-data -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].size=100Gi -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].accessModes[0]=ReadWriteOnce -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].storageClass=$(STORAGE_CLASS) -HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.storage.persistentVolumeClaims[4].volumeMode=Filesystem +# Sanitize STORAGE_CLASS (remove quotes and whitespace), then conditionally include storageClass fields +STORAGE_CLASS_SANITIZED := $(strip $(subst ",,$(subst ',,$(STORAGE_CLASS)))) +ifeq ($(STORAGE_CLASS_SANITIZED),) +PVC_STORAGE_CLASS_FIELD := +else +PVC_STORAGE_CLASS_FIELD := ,"storageClass":"$(STORAGE_CLASS_SANITIZED)" +HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.banyandb.etcd.persistence.storageClass=$(STORAGE_CLASS_SANITIZED) +endif +HELM_OPTIONS := $(HELM_OPTIONS) --set-json 'skywalking.banyandb.storage.liaison.persistentVolumeClaims[0]={"mountTargets":["measure","stream"],"claimName":"liaison-data","size":"10Gi","accessModes":["ReadWriteOnce"]$(PVC_STORAGE_CLASS_FIELD),"volumeMode":"Filesystem"}' +HELM_OPTIONS := $(HELM_OPTIONS) --set-json 'skywalking.banyandb.storage.data.persistentVolumeClaims[0]={"mountTargets":["stream"],"nodeRole":"hot","claimName":"hot-stream-data","size":"10Gi","accessModes":["ReadWriteOnce"]$(PVC_STORAGE_CLASS_FIELD),"volumeMode":"Filesystem"}' +HELM_OPTIONS := $(HELM_OPTIONS) --set-json 'skywalking.banyandb.storage.data.persistentVolumeClaims[1]={"mountTargets":["measure"],"nodeRole":"hot","claimName":"hot-measure-data","size":"10Gi","accessModes":["ReadWriteOnce"]$(PVC_STORAGE_CLASS_FIELD),"volumeMode":"Filesystem"}' +HELM_OPTIONS := $(HELM_OPTIONS) --set-json 'skywalking.banyandb.storage.data.persistentVolumeClaims[2]={"mountTargets":["property"],"nodeRole":"hot","claimName":"hot-property-data","size":"2Gi","accessModes":["ReadWriteOnce"]$(PVC_STORAGE_CLASS_FIELD),"volumeMode":"Filesystem"}' +HELM_OPTIONS := $(HELM_OPTIONS) --set-json 'skywalking.banyandb.storage.data.persistentVolumeClaims[3]={"mountTargets":["stream","measure","property"],"nodeRole":"warm","claimName":"warm-data","size":"50Gi","accessModes":["ReadWriteOnce"]$(PVC_STORAGE_CLASS_FIELD),"volumeMode":"Filesystem"}' +HELM_OPTIONS := $(HELM_OPTIONS) --set-json 'skywalking.banyandb.storage.data.persistentVolumeClaims[4]={"mountTargets":["stream","measure","property"],"nodeRole":"cold","claimName":"cold-data","size":"100Gi","accessModes":["ReadWriteOnce"]$(PVC_STORAGE_CLASS_FIELD),"volumeMode":"Filesystem"}' HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.oap.image.repository=$(SW_OAP_IMAGE) --set skywalking.oap.image.tag=$(SW_OAP_IMAGE_TAG) HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.ui.image.repository=$(SW_UI_IMAGE) --set skywalking.ui.image.tag=$(SW_UI_IMAGE_TAG) HELM_OPTIONS := $(HELM_OPTIONS) --set skywalking.ui.env.SW_ZIPKIN_ADDRESS=http://$(RELEASE)-oap.$(NAMESPACE).svc:9412 diff --git a/deploy/platform/kubernetes/values.yaml b/deploy/platform/kubernetes/values.yaml index ae08a06..8c73163 100644 --- a/deploy/platform/kubernetes/values.yaml +++ b/deploy/platform/kubernetes/values.yaml @@ -161,31 +161,72 @@ skywalking: liaison: replicas: 2 env: + - name: GOMEMLIMIT + value: "3GiB" - name: BYDB_DATA_NODE_SELECTOR value: "type=hot" httpSvc: type: ClusterIP + resources: + requests: + - key: cpu + value: 100m + - key: memory + value: 1Gi + limits: + - key: cpu + value: 4 + - key: memory + value: 4Gi + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + containerSecurityContext: + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: [ "ALL" ] + volumePermissions: + enabled: true + chownUser: 1000 + chownGroup: 1000 + image: busybox:1.36 data: nodeTemplate: replicas: 2 resources: requests: - - key: cpu - value: 100m - - key: memory - value: 1Gi + - key: cpu + value: 100m + - key: memory + value: 1Gi limits: - - key: cpu - value: 4 - - key: memory - value: 4Gi + - key: cpu + value: 4 + - key: memory + value: 4Gi + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + containerSecurityContext: + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + runAsNonRoot: true + capabilities: + drop: [ "ALL" ] + volumePermissions: + enabled: true + chownUser: 1000 + chownGroup: 1000 + image: busybox:1.36 roles: hot: env: - name: GOMEMLIMIT value: "3GiB" - - name: BYDB_NODE_LABELS - value: "type=hot" lifecycleSidecar: schedule: "@daily" enabled: true @@ -193,64 +234,71 @@ skywalking: env: - name: GOMEMLIMIT value: "3GiB" - - name: BYDB_NODE_LABELS - value: "type=warm" lifecycleSidecar: schedule: "@daily" enabled: true cold: replicas: 1 env: - - name: BYDB_NODE_LABELS - value: "type=cold" - name: GOMEMLIMIT value: "6GiB" resources: requests: - - key: cpu - value: 100m - - key: memory - value: 1Gi + - key: cpu + value: 100m + - key: memory + value: 1Gi limits: - - key: cpu - value: 8 - - key: memory - value: 8Gi + - key: cpu + value: 8 + - key: memory + value: 8Gi storage: - enabled: true - persistentVolumeClaims: - - mountTargets: ["stream"] + liaison: + enabled: true + persistentVolumeClaims: + - mountTargets: [ "measure", "stream" ] + claimName: liaison-data + size: 10Gi + accessModes: + - ReadWriteOnce + storageClass: ~ + volumeMode: Filesystem + data: + enabled: true + persistentVolumeClaims: + - mountTargets: [ "stream" ] nodeRole: hot claimName: hot-stream-data size: 10Gi accessModes: - - ReadWriteOnce + - ReadWriteOnce storageClass: ~ volumeMode: Filesystem - - mountTargets: ["measure"] + - mountTargets: [ "measure" ] nodeRole: hot claimName: hot-measure-data size: 10Gi accessModes: - - ReadWriteOnce + - ReadWriteOnce storageClass: ~ volumeMode: Filesystem - - mountTargets: ["property"] + - mountTargets: [ "property" ] nodeRole: hot claimName: hot-property-data size: 5Gi accessModes: - - ReadWriteOnce + - ReadWriteOnce storageClass: ~ volumeMode: Filesystem - - mountTargets: [ "measure", "stream" ] + - mountTargets: [ "measure", "stream", "property" ] nodeRole: warm claimName: warm-data size: 100Gi accessModes: - ReadWriteOnce storageClass: ~ - - mountTargets: [ "measure", "stream" ] + - mountTargets: [ "measure", "stream", "property" ] nodeRole: cold claimName: cold-data size: 500Gi @@ -390,14 +438,14 @@ istiod: address: "" proxyStatsMatcher: inclusionRegexps: - - ".*membership_healthy.*" - - ".*upstream_cx_active.*" - - ".*upstream_cx_total.*" - - ".*upstream_rq_active.*" - - ".*upstream_rq_total.*" - - ".*upstream_rq_pending_active.*" - - ".*lb_healthy_panic.*" - - ".*upstream_cx_none_healthy.*" + - ".*membership_healthy.*" + - ".*upstream_cx_active.*" + - ".*upstream_cx_total.*" + - ".*upstream_rq_active.*" + - ".*upstream_rq_total.*" + - ".*upstream_rq_pending_active.*" + - ".*lb_healthy_panic.*" + - ".*upstream_cx_none_healthy.*" # @feature: kubernetes-monitor; extra resources to install for kubernetes monitoring, standard kube-state-metrics kube-state-metrics: @@ -448,16 +496,16 @@ opentelemetry-collector: clusterRole: create: true rules: - - apiGroups: [""] - resources: - # @feature: kubernetes-monitor; permissions to read resources - - "endpoints" - - "pods" - - "services" - - "nodes" - - "nodes/metrics" - - "nodes/proxy" - verbs: ["get", "watch", "list"] + - apiGroups: [ "" ] + resources: + # @feature: kubernetes-monitor; permissions to read resources + - "endpoints" + - "pods" + - "services" + - "nodes" + - "nodes/metrics" + - "nodes/proxy" + verbs: [ "get", "watch", "list" ] resources: limits: cpu: 1024m @@ -471,16 +519,16 @@ opentelemetry-collector: command: name: otelcol - extraArgs: ["--config=/conf/config.yaml"] + extraArgs: [ "--config=/conf/config.yaml" ] extraVolumes: - - name: otelcol-configmap - configMap: - name: otel-collector-config - defaultMode: 420 + - name: otelcol-configmap + configMap: + name: otel-collector-config + defaultMode: 420 extraVolumeMounts: - - name: otelcol-configmap - mountPath: /conf + - name: otelcol-configmap + mountPath: /conf features: kubernetesMonitor: