This is an automated email from the ASF dual-hosted git repository. hanahmily pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb-helm.git
The following commit(s) were added to refs/heads/master by this push: new ccf5282 Add cluster mode (#7) ccf5282 is described below commit ccf528268e0fe18d06b2566bc8649624f5808150 Author: Huang Youliang <52878305+butterbri...@users.noreply.github.com> AuthorDate: Tue Mar 26 07:34:17 2024 +0800 Add cluster mode (#7) * Add cluster mode --- .github/workflows/e2e.ci.yaml | 6 +- README.md | 28 ++ chart/Chart.lock | 6 + chart/Chart.yaml | 7 +- chart/templates/_helpers.tpl | 16 ++ .../{statefulset.yaml => deployment.yaml} | 154 ++++++----- chart/templates/grpc_service.yaml | 34 ++- chart/templates/http_service.yaml | 49 +++- chart/templates/ingress.yaml | 53 +++- chart/templates/pdb.yaml | 87 ++++++- chart/templates/statefulset.yaml | 281 ++++++++++++++++++++- chart/values.yaml | 211 +++++++++++++++- ...e2e-banyandb.yaml => e2e-banyandb-cluster.yaml} | 10 +- ...-banyandb.yaml => e2e-banyandb-standalone.yaml} | 9 +- test/e2e/values.cluster.yaml | 250 ++++++++++++++++++ .../values.yaml => test/e2e/values.standalone.yaml | 11 +- 16 files changed, 1137 insertions(+), 75 deletions(-) diff --git a/.github/workflows/e2e.ci.yaml b/.github/workflows/e2e.ci.yaml index 940b1fd..dd1def5 100644 --- a/.github/workflows/e2e.ci.yaml +++ b/.github/workflows/e2e.ci.yaml @@ -35,8 +35,10 @@ jobs: strategy: matrix: test: - - name: Run Skywalking E2E Test (BanyanDB as database) - config: test/e2e/e2e-banyandb.yaml + - name: Run Skywalking E2E Test (standalone BanyanDB as database) + config: test/e2e/e2e-banyandb-standalone.yaml + - name: Run Skywalking E2E Test (BanyanDB cluster as database) + config: test/e2e/e2e-banyandb-cluster.yaml name: ${{ matrix.test.name }} env: OAP_TAG: 965dea898986ed2ab1343559fb20d6faed11ada9 diff --git a/README.md b/README.md index a9a237d..28972a9 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,34 @@ $ helm install my-release banyandb -f values.yaml ## Use external certificate authorities for TLS If you'd like to use external certificate authorities, such as Vault, corresponding annotations can be injected into [banyandb](./chart/templates/statefulset.yaml). +## Setup certificate for etcd TLS +To establish secure communication for etcd, you can leverage cert-manager to generate the necessary TLS certificates. This tool simplifies the process of creating and managing certificates. You can install cert-manager with the following command. +```console +kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.yaml +``` + +A Certificate can be created with the following configurations. In this setup, each dnsName includes a wildcard that enables resolution of all etcd pods' DNS names within the specified namespace, along with the service name of etcd and its corresponding namespace. Here, 'svc' represents a service, while 'cluster.local' serves as the domain suffix for the Kubernetes cluster. +```yaml +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + name: etcd-client + namespace: banyandb +spec: + secretName: etcd-client-tls + duration: 17520h + renewBefore: 4320h + issuerRef: + name: banyandb-issuer + kind: Issuer + usages: + - server auth + - client auth + dnsNames: + - "*.banyandb-etcd.banyandb.svc.cluster.local" + - "*.banyandb-etcd-headless.banyandb.svc.cluster.local" +``` + # Install the development version of BanyanDB using the master branch This is needed **only** when you want to install [BanyanDB](https://github.com/apache/skywalking-banyandb/tree/main) from the master branch. diff --git a/chart/Chart.lock b/chart/Chart.lock new file mode 100644 index 0000000..7d4afdb --- /dev/null +++ b/chart/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: etcd + repository: oci://registry-1.docker.io/bitnamicharts + version: 9.14.3 +digest: sha256:31aacd1ae011febfa82522a1777fd2f36a52529bea2e343bacb0060c51068906 +generated: "2024-03-01T09:44:38.864211193+08:00" diff --git a/chart/Chart.yaml b/chart/Chart.yaml index e7e20fd..500860b 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -20,4 +20,9 @@ version: 0.1.0 description: Helm Chart for Apache SkyWalking BanyanDB icon: https://raw.githubusercontent.com/apache/skywalking-kubernetes/master/logo/sw-logo-for-chart.jpg sources: - - https://github.com/apache/skywalking-banyandb-helm \ No newline at end of file + - https://github.com/apache/skywalking-banyandb-helm +dependencies: + - name: etcd + version: 9.14.3 + repository: oci://registry-1.docker.io/bitnamicharts + condition: etcd.enabled \ No newline at end of file diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index f89fba8..e5d3a54 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -83,3 +83,19 @@ Create the name of the service account to use {{- default "default" .Values.serviceAccount.name }} {{- end }} {{- end }} + +{{/* +EtcdEndpoints +*/}} +{{- define "banyandb.etcdEndpoints" -}} +{{- $endpoints := list }} +{{- $replicaCount := int .Values.etcd.replicaCount }} +{{- $releaseName := .Release.Name }} +{{- $namespace := .Release.Namespace }} +{{- range $i := until $replicaCount }} + {{- $endpoint := printf "%s-etcd-%d.%s-etcd-headless.%s:2379" $releaseName $i $releaseName $namespace }} + {{- $endpoints = append $endpoints $endpoint }} +{{- end }} +- name: BYDB_ETCD_ENDPOINTS + value: "{{- $endpoints | join "," -}}" +{{- end }} \ No newline at end of file diff --git a/chart/templates/statefulset.yaml b/chart/templates/deployment.yaml similarity index 51% copy from chart/templates/statefulset.yaml copy to chart/templates/deployment.yaml index 9eb5169..9913163 100644 --- a/chart/templates/statefulset.yaml +++ b/chart/templates/deployment.yaml @@ -15,70 +15,94 @@ # specific language governing permissions and limitations # under the License. +{{- if and .Values.cluster.enabled .Values.cluster.liaison }} apiVersion: apps/v1 -kind: StatefulSet +kind: Deployment metadata: labels: app: {{ template "banyandb.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} - component: "{{ .Values.standalone.name }}" + component: "{{ .Values.cluster.liaison.name }}" heritage: {{ .Release.Service }} release: {{ .Release.Name }} + role: {{ .Values.cluster.liaison.role }} name: {{ template "banyandb.fullname" . }} spec: - serviceName: banyandb - replicas: 1 + replicas: {{ .Values.cluster.liaison.replicas }} selector: matchLabels: app: {{ template "banyandb.name" . }} - component: "{{ .Values.standalone.name }}" + component: "{{ .Values.cluster.liaison.name }}" release: {{ .Release.Name }} template: metadata: labels: app: {{ template "banyandb.name" . }} - component: "{{ .Values.standalone.name }}" + component: "{{ .Values.cluster.liaison.name }}" release: {{ .Release.Name }} - {{- if .Values.standalone.podAnnotations }} + role: {{ .Values.cluster.liaison.role }} + {{- if .Values.cluster.liaison.podAnnotations }} annotations: -{{ toYaml .Values.standalone.podAnnotations | indent 8 }} +{{ toYaml .Values.cluster.liaison.podAnnotations | indent 8 }} {{- end }} spec: serviceAccountName: {{ template "banyandb.serviceAccountName" . }} - {{- with .Values.standalone.securityContext }} + {{- with .Values.cluster.liaison.securityContext }} securityContext: {{- toYaml . | nindent 8 }} {{- end }} - priorityClassName: {{ .Values.standalone.priorityClassName }} + priorityClassName: {{ .Values.cluster.liaison.priorityClassName }} containers: - - name: {{ .Values.standalone.name }} - image: {{ .Values.standalone.image.repository }}:{{ required "banyandb.image.tag is required" .Values.standalone.image.tag }} - imagePullPolicy: {{ .Values.standalone.image.pullPolicy }} + - name: {{ .Values.cluster.liaison.name }} + image: {{ .Values.cluster.image.repository }}:{{ required "banyandb.image.tag is required" .Values.cluster.image.tag }} + imagePullPolicy: {{ .Values.cluster.image.pullPolicy }} env: - {{- range $env := .Values.standalone.env }} + {{- range $env := .Values.cluster.liaison.env }} - name: {{ $env.name }} value: {{ $env.value }} {{- end }} - {{- if .Values.standalone.tls.grpcSecretName }} + {{- if .Values.cluster.liaison.tls.grpcSecretName }} - name: BYDB_TLS value: "true" - name: BYDB_CERT_FILE - value: "/etc/tls/{{ .Values.standalone.tls.grpcSecretName }}/tls.crt" + value: "/etc/tls/{{ .Values.cluster.liaison.tls.grpcSecretName }}/tls.crt" - name: BYDB_KEY_FILE - value: "/etc/tls/{{ .Values.standalone.tls.grpcSecretName }}/tls.key" + value: "/etc/tls/{{ .Values.cluster.liaison.tls.grpcSecretName }}/tls.key" - name: BYDB_HTTP_GRPC_CERT_FILE - value: "/etc/tls/{{ .Values.standalone.tls.grpcSecretName }}/tls.crt" + value: "/etc/tls/{{ .Values.cluster.liaison.tls.grpcSecretName }}/tls.crt" {{- end }} - {{- if .Values.standalone.tls.httpSecretName }} + {{- if .Values.cluster.liaison.tls.httpSecretName }} - name: BYDB_HTTP_TLS value: "true" - name: BYDB_HTTP_CERT_FILE - value: "/etc/tls/{{ .Values.standalone.tls.httpSecretName }}/tls.crt" + value: "/etc/tls/{{ .Values.cluster.liaison.tls.httpSecretName }}/tls.crt" - name: BYDB_HTTP_KEY_FILE - value: "/etc/tls/{{ .Values.standalone.tls.httpSecretName }}/tls.key" + value: "/etc/tls/{{ .Values.cluster.liaison.tls.httpSecretName }}/tls.key" + {{- end }} + {{- if and .Values.etcd.auth.rbac.create (not .Values.etcd.auth.rbac.allowNoneAuthentication) }} + - name: BYDB_ETCD_USERNAME + value: "root" + - name: BYDB_ETCD_PASSWORD + value: {{ .Values.etcd.auth.rbac.rootPassword }} + {{- end }} + {{- if .Values.etcd.auth.client.secureTransport }} + - name: BYDB_ETCD_TLS_CA_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.etcdSecretName }}/ca.crt" + {{- end }} + {{- if .Values.etcd.auth.client.enableAuthentication }} + - name: BYDB_ETCD_TLS_CERT_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.etcdSecretName }}/tls.crt" + - name: BYDB_ETCD_TLS_KEY_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.etcdSecretName }}/tls.key" + {{- end }} + {{- if and (not .Values.etcd.enabled) .Values.cluster.etcdEndpoints }} + - name: BYDB_ETCD_ENDPOINTS + value: "{{- .Values.cluster.etcdEndpoints | join "," -}}" + {{- else }} + {{- include "banyandb.etcdEndpoints" . | nindent 12 }} {{- end }} args: - - standalone + - liaison ports: - containerPort: 17912 name: grpc @@ -89,35 +113,39 @@ spec: - containerPort: 2121 name: observebility readinessProbe: - httpGet: - path: /api/healthz - port: 17913 - initialDelaySeconds: 5 - periodSeconds: 10 + exec: + command: + - sh + - -c + - "/bydbctl health" + initialDelaySeconds: 20 + periodSeconds: 60 livenessProbe: - httpGet: - path: /api/healthz - port: 17913 - initialDelaySeconds: 5 - periodSeconds: 10 + exec: + command: + - sh + - -c + - "/bydbctl health" + initialDelaySeconds: 20 + periodSeconds: 60 - {{- if.Values.standalone.resources }} + {{- if.Values.cluster.liaison.resources }} resources: - {{- if.Values.standalone.resources.requests }} + {{- if.Values.cluster.liaison.resources.requests }} requests: - {{- range $request := .Values.standalone.resources.requests }} + {{- range $request := .Values.cluster.liaison.resources.requests }} {{ $request.key }}: {{ $request.value }} {{- end }} {{- end }} - {{- if.Values.standalone.resources.limits }} + {{- if.Values.cluster.liaison.resources.limits }} limits: - {{- range $limit := .Values.standalone.resources.limits }} + {{- range $limit := .Values.cluster.liaison.resources.limits }} {{ $limit.key }}: {{ $limit.value }} {{- end }} {{- end }} {{- end }} - {{- if or .Values.storage.enabled .Values.standalone.tls }} + {{- if or .Values.storage.enabled .Values.cluster.liaison.tls }} volumeMounts: {{- if .Values.storage.enabled }} {{- range $claim := .Values.storage.persistentVolumeClaims }} @@ -137,17 +165,21 @@ spec: {{- end }} {{- end }} - {{- if .Values.standalone.tls.grpcSecretName }} - - mountPath: /etc/tls/{{ .Values.standalone.tls.grpcSecretName }} - name: {{ .Values.standalone.tls.grpcSecretName }}-volume + {{- if .Values.cluster.liaison.tls.grpcSecretName }} + - mountPath: /etc/tls/{{ .Values.cluster.liaison.tls.grpcSecretName }} + name: {{ .Values.cluster.liaison.tls.grpcSecretName }}-volume {{- end }} - {{- if and .Values.standalone.tls.httpSecretName (ne .Values.standalone.tls.httpSecretName .Values.standalone.tls.grpcSecretName) }} - - mountPath: /etc/tls/{{ .Values.standalone.tls.httpSecretName }} - name: {{ .Values.standalone.tls.httpSecretName }}-volume + {{- if .Values.cluster.liaison.tls.etcdSecretName }} + - mountPath: /etc/tls/{{ .Values.cluster.liaison.tls.etcdSecretName }} + name: {{ .Values.cluster.liaison.tls.etcdSecretName }}-volume + {{- end }} + {{- if and .Values.cluster.liaison.tls.httpSecretName (ne .Values.cluster.liaison.tls.httpSecretName .Values.cluster.liaison.tls.grpcSecretName) }} + - mountPath: /etc/tls/{{ .Values.cluster.liaison.tls.httpSecretName }} + name: {{ .Values.cluster.liaison.tls.httpSecretName }}-volume {{- end }} {{- end }} - {{- if or .Values.storage.enabled .Values.standalone.tls }} + {{- if or .Values.storage.enabled .Values.cluster.data.tls }} volumes: {{- if .Values.storage.enabled }} {{- range $claim := .Values.storage.persistentVolumeClaims }} @@ -163,21 +195,26 @@ spec: {{- end }} {{- end }} - {{- if .Values.standalone.tls.grpcSecretName }} - - name: {{ .Values.standalone.tls.grpcSecretName }}-volume + {{- if .Values.cluster.liaison.tls.grpcSecretName }} + - name: {{ .Values.cluster.liaison.tls.grpcSecretName }}-volume + secret: + secretName: {{ .Values.cluster.liaison.tls.grpcSecretName }} + {{- end }} + {{- if .Values.cluster.liaison.tls.etcdSecretName }} + - name: {{ .Values.cluster.liaison.tls.etcdSecretName }}-volume secret: - secretName: {{ .Values.standalone.tls.grpcSecretName }} + secretName: {{ .Values.cluster.liaison.tls.etcdSecretName }} {{- end }} - {{- if and .Values.standalone.tls.httpSecretName (ne .Values.standalone.tls.httpSecretName .Values.standalone.tls.grpcSecretName) }} - - name: {{ .Values.standalone.tls.httpSecretName }}-volume + {{- if and .Values.cluster.liaison.tls.httpSecretName (ne .Values.cluster.liaison.tls.httpSecretName .Values.cluster.liaison.tls.grpcSecretName) }} + - name: {{ .Values.cluster.liaison.tls.httpSecretName }}-volume secret: - secretName: {{ .Values.standalone.tls.httpSecretName }} + secretName: {{ .Values.cluster.liaison.tls.httpSecretName }} {{- end }} {{- end }} - {{- if .Values.standalone.tolerations }} + {{- if .Values.cluster.liaison.tolerations }} tolerations: - {{- range $toleration := .Values.standalone.tolerations }} + {{- range $toleration := .Values.cluster.liaison.tolerations }} - key: {{ $toleration.key }} operator: {{ $toleration.operator }} value: {{ $toleration.value }} @@ -185,15 +222,15 @@ spec: {{- end }} {{- end }} - {{- if .Values.standalone.nodeSelector }} + {{- if .Values.cluster.liaison.nodeSelector }} nodeSelector: - {{- range $selector := .Values.standalone.nodeSelector }} + {{- range $selector := .Values.cluster.liaison.nodeSelector }} {{ $selector.key }}: {{ $selector.value }} {{- end }} {{- end }} - {{- if .Values.standalone.affinity }} - {{- $affinity := .Values.standalone.affinity }} + {{- if .Values.cluster.liaison.affinity }} + {{- $affinity := .Values.cluster.liaison.affinity }} affinity: {{- if $affinity.nodeAffinity }} nodeAffinity: @@ -228,4 +265,5 @@ spec: {{- end }} {{- end }} {{- end }} - {{- end }} \ No newline at end of file + {{- end }} +{{- end }} \ No newline at end of file diff --git a/chart/templates/grpc_service.yaml b/chart/templates/grpc_service.yaml index 4973bfa..63deb2e 100644 --- a/chart/templates/grpc_service.yaml +++ b/chart/templates/grpc_service.yaml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -{{- if .Values.standalone.grpcSvc }} +{{- if and .Values.standalone.enabled .Values.standalone.grpcSvc }} apiVersion: v1 kind: Service metadata: @@ -42,4 +42,34 @@ spec: app: {{ template "banyandb.name" . }} component: "{{ .Values.standalone.name }}" release: {{ .Release.Name }} -{{- end}} \ No newline at end of file +{{- end }} + +{{- if and .Values.cluster.enabled .Values.cluster.liaison.grpcSvc }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "banyandb.fullname" . }}-grpc + labels: + app: {{ template "banyandb.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.cluster.liaison.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + {{- range $key, $value := .Values.cluster.liaison.grpcSvc.labels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + annotations: + {{- range $key, $value := .Values.cluster.liaison.grpcSvc.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} +spec: + type: ClusterIP + ports: + - port: {{ .Values.cluster.liaison.grpcSvc.port }} + name: grpc + selector: + app: {{ template "banyandb.name" . }} + component: "{{ .Values.cluster.liaison.name }}" + release: {{ .Release.Name }} + role: liaison +{{- end }} diff --git a/chart/templates/http_service.yaml b/chart/templates/http_service.yaml index 2e9a4f5..fd92c41 100644 --- a/chart/templates/http_service.yaml +++ b/chart/templates/http_service.yaml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -{{- if .Values.standalone.httpSvc }} +{{- if and .Values.standalone.enabled .Values.standalone.httpSvc }} apiVersion: v1 kind: Service metadata: @@ -57,4 +57,49 @@ spec: - {{ $v }} {{- end }} {{- end }} -{{- end}} \ No newline at end of file +{{- end }} + +{{- if and .Values.cluster.enabled .Values.cluster.liaison.httpSvc }} +apiVersion: v1 +kind: Service +metadata: + name: {{ template "banyandb.fullname" . }}-http + labels: + app: {{ template "banyandb.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.cluster.liaison.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + {{- range $key, $value := .Values.cluster.liaison.httpSvc.labels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + annotations: + {{- range $key, $value := .Values.cluster.liaison.httpSvc.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} +spec: + type: {{ .Values.cluster.liaison.httpSvc.type }} + ports: + - port: {{ .Values.cluster.liaison.httpSvc.port }} + name: http + selector: + app: {{ template "banyandb.name" . }} + component: "{{ .Values.cluster.liaison.name }}" + release: {{ .Release.Name }} + role: liaison + {{- if .Values.cluster.liaison.httpSvc.externalIPs }} + externalIPs: + {{- range $v := .Values.cluster.liaison.httpSvc.externalIPs }} + - {{ $v }} + {{- end }} + {{- end }} + {{- if .Values.cluster.liaison.httpSvc.loadBalancerIP }} + loadBalancerIP: {{ .Values.cluster.liaison.httpSvc.loadBalancerIP }} + {{- end }} + {{- if .Values.cluster.liaison.httpSvc.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- range $v := .Values.cluster.liaison.httpSvc.loadBalancerSourceRanges }} + - {{ $v }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml index ba9153f..6bcd570 100644 --- a/chart/templates/ingress.yaml +++ b/chart/templates/ingress.yaml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -{{- if .Values.standalone.ingress.enabled }} +{{- if and .Values.standalone.enabled .Values.standalone.ingress.enabled }} {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} apiVersion: networking.k8s.io/v1 {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }} @@ -64,4 +64,55 @@ spec: tls: {{ toYaml .Values.standalone.ingress.tls | indent 4 }} {{- end -}} +{{- end }} + +{{- if and .Values.cluster.enabled .Values.cluster.liaison.ingress.enabled }} +{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} +apiVersion: networking.k8s.io/v1 +{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }} +apiVersion: networking.k8s.io/v1beta1 +{{- else }} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + labels: + app: {{ template "banyandb.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.cluster.liaison.ingress.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + {{- range $key, $value := .Values.cluster.liaison.ingress.labels }} + {{ $key }}: {{ $value | quote }} + {{- end }} + name: {{ template "banyandb.fullname" . }} + annotations: + {{- range $key, $value := .Values.cluster.liaison.ingress.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} +spec: + rules: + {{- range .Values.cluster.liaison.ingress.rules }} + - host: {{ .host }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + pathType: Prefix + backend: + {{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }} + service: + name: {{ .serviceName }} + port: + number: {{ .port }} + {{- else }} + serviceName: {{ .serviceName }} + servicePort: {{ .port }} + {{- end }} + {{- end }} + {{- end -}} + {{- if .Values.cluster.liaison.ingress.tls }} + tls: +{{ toYaml .Values.cluster.liaison.ingress.tls | indent 4 }} + {{- end -}} {{- end }} \ No newline at end of file diff --git a/chart/templates/pdb.yaml b/chart/templates/pdb.yaml index 7dcf7d3..73b16fd 100644 --- a/chart/templates/pdb.yaml +++ b/chart/templates/pdb.yaml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -{{- if .Values.standalone.podDisruptionBudget }} +{{- if and .Values.standalone.enabled .Values.standalone.podDisruptionBudget }} {{- if .Capabilities.APIVersions.Has "policy/v1" }} apiVersion: policy/v1 {{- else }} @@ -56,3 +56,88 @@ spec: paused: {{ $budget.paused }} {{- end }} {{- end }} + +{{- if .Values.cluster.enabled }} +{{- if .Values.cluster.liaison.podDisruptionBudget }} +{{- if .Capabilities.APIVersions.Has "policy/v1" }} +apiVersion: policy/v1 +{{- else }} +apiVersion: policy/v1beta1 +{{- end }} +kind: PodDisruptionBudget +metadata: + name: {{ template "banyandb.fullname" . }} + labels: + app: {{ template "banyandb.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.cluster.liaison.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} +spec: + {{- $budget := .Values.cluster.liaison.podDisruptionBudget }} + {{- if $budget.maxUnavailable }} + maxUnavailable: {{ $budget.maxUnavailable }} + {{- end }} + {{- if $budget.minAvailable }} + minAvailable: {{ $budget.minAvailable }} + {{- end }} + selector: + matchLabels: + {{- range $label := $budget.matchLabels }} + {{ $label.key }}: {{ $label.value }} + {{- end }} + matchExpressions: + {{- range $expression := $budget.matchExpressions }} + - key: {{ $expression.key }} + operator: {{ $expression.operator }} + values: + {{- range $v := $expression.values }} + - {{ $v }} + {{- end}} + {{- end }} + {{- if $budget.paused }} + paused: {{ $budget.paused }} + {{- end }} +{{- end }} +{{- if .Values.cluster.data.podDisruptionBudget }} +{{- if .Capabilities.APIVersions.Has "policy/v1" }} +apiVersion: policy/v1 +{{- else }} +apiVersion: policy/v1beta1 +{{- end }} +kind: PodDisruptionBudget +metadata: + name: {{ template "banyandb.fullname" . }} + labels: + app: {{ template "banyandb.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.data.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} +spec: + {{- $budget := .Values.data.podDisruptionBudget }} + {{- if $budget.maxUnavailable }} + maxUnavailable: {{ $budget.maxUnavailable }} + {{- end }} + {{- if $budget.minAvailable }} + minAvailable: {{ $budget.minAvailable }} + {{- end }} + selector: + matchLabels: + {{- range $label := $budget.matchLabels }} + {{ $label.key }}: {{ $label.value }} + {{- end }} + matchExpressions: + {{- range $expression := $budget.matchExpressions }} + - key: {{ $expression.key }} + operator: {{ $expression.operator }} + values: + {{- range $v := $expression.values }} + - {{ $v }} + {{- end}} + {{- end }} + {{- if $budget.paused }} + paused: {{ $budget.paused }} + {{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/chart/templates/statefulset.yaml b/chart/templates/statefulset.yaml index 9eb5169..324e230 100644 --- a/chart/templates/statefulset.yaml +++ b/chart/templates/statefulset.yaml @@ -15,6 +15,7 @@ # specific language governing permissions and limitations # under the License. +{{- if and .Values.standalone.enabled }} apiVersion: apps/v1 kind: StatefulSet metadata: @@ -228,4 +229,282 @@ spec: {{- end }} {{- end }} {{- end }} - {{- end }} \ No newline at end of file + {{- end }} +{{- end }} + +{{- if and .Values.cluster.enabled .Values.cluster.data }} +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app: {{ template "banyandb.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version }} + component: "{{ .Values.cluster.data.name }}" + heritage: {{ .Release.Service }} + release: {{ .Release.Name }} + name: {{ template "banyandb.fullname" . }} +spec: + serviceName: banyandb + replicas: {{ .Values.cluster.data.replicas }} + selector: + matchLabels: + app: {{ template "banyandb.name" . }} + component: "{{ .Values.cluster.data.name }}" + release: {{ .Release.Name }} + role: {{ .Values.cluster.data.role }} + template: + metadata: + labels: + app: {{ template "banyandb.name" . }} + component: "{{ .Values.cluster.data.name }}" + release: {{ .Release.Name }} + role: {{ .Values.cluster.data.role }} + {{- if .Values.cluster.data.podAnnotations }} + annotations: +{{ toYaml .Values.cluster.data.podAnnotations | indent 8 }} + {{- end }} + spec: + serviceAccountName: {{ template "banyandb.serviceAccountName" . }} + {{- with .Values.cluster.data.securityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + priorityClassName: {{ .Values.cluster.data.priorityClassName }} + containers: + - name: {{ .Values.cluster.data.name }} + image: {{ .Values.cluster.image.repository }}:{{ required "banyandb.image.tag is required" .Values.cluster.image.tag }} + imagePullPolicy: {{ .Values.cluster.image.pullPolicy }} + env: + {{- range $env := .Values.cluster.data.env }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{- end }} + {{- if .Values.cluster.data.tls.grpcSecretName }} + - name: BYDB_TLS + value: "true" + - name: BYDB_CERT_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.grpcSecretName }}/tls.crt" + - name: BYDB_KEY_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.grpcSecretName }}/tls.key" + - name: BYDB_HTTP_GRPC_CERT_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.grpcSecretName }}/tls.crt" + {{- end }} + {{- if and .Values.etcd.auth.rbac.create (not .Values.etcd.auth.rbac.allowNoneAuthentication) }} + - name: BYDB_ETCD_USERNAME + value: "root" + - name: BYDB_ETCD_PASSWORD + value: {{ .Values.etcd.auth.rbac.rootPassword }} + {{- end }} + {{- if .Values.etcd.auth.client.secureTransport }} + - name: BYDB_ETCD_TLS_CA_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.etcdSecretName }}/ca.crt" + {{- end }} + {{- if .Values.etcd.auth.client.enableAuthentication }} + - name: BYDB_ETCD_TLS_CERT_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.etcdSecretName }}/tls.crt" + - name: BYDB_ETCD_TLS_KEY_FILE + value: "/etc/tls/{{ .Values.cluster.data.tls.etcdSecretName }}/tls.key" + {{- end }} + {{- if and (not .Values.etcd.enabled) .Values.cluster.etcdEndpoints }} + - name: BYDB_ETCD_ENDPOINTS + value: "{{- .Values.cluster.etcdEndpoints | join "," -}}" + {{- else }} + {{- include "banyandb.etcdEndpoints" . | nindent 12 }} + {{- end }} + - name: BYDB_NODE_HOST_PROVIDER + value: "ip" + - name: BYDB_NODE_HOST + valueFrom: + fieldRef: + fieldPath: status.podIP + args: + - data + ports: + - containerPort: 17912 + name: grpc + - containerPort: 17913 + name: http + - containerPort: 6060 + name: pprof + - containerPort: 2121 + name: observebility + readinessProbe: + exec: + command: + - sh + - -c + - "/bydbctl health --grpc-addr=localhost:17912 --insecure" + initialDelaySeconds: 20 + periodSeconds: 60 + livenessProbe: + exec: + command: + - sh + - -c + - "/bydbctl health --grpc-addr=localhost:17912 --insecure" + initialDelaySeconds: 20 + periodSeconds: 60 + + {{- if.Values.cluster.data.resources }} + resources: + {{- if.Values.cluster.data.resources.requests }} + requests: + {{- range $request := .Values.cluster.data.resources.requests }} + {{ $request.key }}: {{ $request.value }} + {{- end }} + {{- end }} + {{- if.Values.cluster.data.resources.limits }} + limits: + {{- range $limit := .Values.cluster.data.resources.limits }} + {{ $limit.key }}: {{ $limit.value }} + {{- end }} + {{- end }} + {{- end }} + + {{- if or .Values.storage.enabled .Values.cluster.data.tls }} + volumeMounts: + {{- if .Values.storage.enabled }} + {{- range $claim := .Values.storage.persistentVolumeClaims }} + {{- if $claim.existingClaimName }} + {{- range $claim.mountTargets }} + - mountPath: /tmp/{{ . }} + name: {{ $claim.existingClaimName }}-volume + subPath: {{ . }} + {{- end }} + {{- else }} + {{- range $claim.mountTargets }} + - mountPath: /tmp/{{ . }} + name: {{ $claim.claimName }}-volume + subPath: {{ . }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + + {{- if .Values.cluster.data.tls.grpcSecretName }} + - mountPath: /etc/tls/{{ .Values.cluster.data.tls.grpcSecretName }} + name: {{ .Values.cluster.data.tls.grpcSecretName }}-volume + {{- end }} + {{- if .Values.cluster.data.tls.etcdSecretName }} + - mountPath: /etc/tls/{{ .Values.cluster.data.tls.etcdSecretName }} + name: {{ .Values.cluster.data.tls.etcdSecretName }}-volume + {{- end }} + {{- end }} + {{- range $sidecar := .Values.cluster.data.sidecar }} + - name: {{ $sidecar.name }} + image: {{ $sidecar.image }} + imagePullPolicy: {{ $sidecar.imagePullPolicy }} + command: + {{- range $sidecar.commands.normal }} + - {{ . | quote }} + {{- end }} + lifecycle: + preStop: + exec: + command: + {{- range $sidecar.commands.preStop }} + - {{ . | quote }} + {{- end }} + {{- if $.Values.storage.enabled }} + volumeMounts: + {{- range $claim := $.Values.storage.persistentVolumeClaims }} + {{- if $claim.existingClaimName }} + {{- range $claim.mountTargets }} + - mountPath: /tmp/{{ . }} + name: {{ $claim.existingClaimName }}-volume + subPath: {{ . }} + {{- end }} + {{- else }} + {{- range $claim.mountTargets }} + - mountPath: /tmp/{{ . }} + name: {{ $claim.claimName }}-volume + subPath: {{ . }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + + {{- if or .Values.storage.enabled .Values.cluster.data.tls }} + volumes: + {{- if .Values.storage.enabled }} + {{- range $claim := .Values.storage.persistentVolumeClaims }} + {{- if $claim.existingClaimName }} + - name: {{ $claim.existingClaimName }}-volume + persistentVolumeClaim: + claimName: {{ $claim.existingClaimName }} + {{ else }} + - name: {{ $claim.claimName }}-volume + persistentVolumeClaim: + claimName: {{ $claim.claimName }} + {{- end }} + {{- end }} + {{- end }} + + {{- if .Values.cluster.data.tls.grpcSecretName }} + - name: {{ .Values.cluster.data.tls.grpcSecretName }}-volume + secret: + secretName: {{ .Values.cluster.data.tls.grpcSecretName }} + {{- end }} + {{- if .Values.cluster.data.tls.etcdSecretName }} + - name: {{ .Values.cluster.data.tls.etcdSecretName }}-volume + secret: + secretName: {{ .Values.cluster.data.tls.etcdSecretName }} + {{- end }} + {{- end }} + + {{- if .Values.cluster.data.tolerations }} + tolerations: + {{- range $toleration := .Values.cluster.data.tolerations }} + - key: {{ $toleration.key }} + operator: {{ $toleration.operator }} + value: {{ $toleration.value }} + effect: {{ $toleration.effect }} + {{- end }} + {{- end }} + + {{- if .Values.cluster.data.nodeSelector }} + nodeSelector: + {{- range $selector := .Values.cluster.data.nodeSelector }} + {{ $selector.key }}: {{ $selector.value }} + {{- end }} + {{- end }} + + {{- if .Values.cluster.data.affinity }} + {{- $affinity := .Values.cluster.data.affinity }} + affinity: + {{- if $affinity.nodeAffinity }} + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + {{- range $requirement := $affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms }} + {{- range $matchExpression := $requirement.matchExpressions }} + - matchExpressions: + - key: {{ $matchExpression.key }} + operator: {{ $matchExpression.operator }} + values: + {{- range $v := $matchExpression.values }} + - {{ $v }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + + {{- if $affinity.podAffinity }} + podAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + {{- range $term := $affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution }} + - topologyKey: {{ $term.topologyKey }} + namespaces: + {{- range $ns := $term.namespaces }} + - {{ $ns }} + {{- end }} + labelSelector: + matchLabels: + {{- range $label := $term.labelSelector.matchLabels }} + {{ $label.key }}: {{ $label.value }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/chart/values.yaml b/chart/values.yaml index d7357a6..0a650b0 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -18,6 +18,7 @@ # Declare variables to be passed into your templates. standalone: + enabled: false name: banyandb podAnnotations: example: banyandb-foo @@ -27,7 +28,7 @@ standalone: # fsGroup: 1000 image: repository: ghcr.io/apache/skywalking-banyandb - tag: 84f32b3969cdcc676aaee428383b34b3b67dbdf5 + tag: dc88130e8d0516c7989734bdeb505e2d92c1ab71 pullPolicy: IfNotPresent env: [] # - name: BANYANDB_FOO @@ -113,7 +114,196 @@ standalone: # - hosts: # - localhost # secretName: tls-secret + + sidecar: [] + # - name: cleanup-sidecar + # image: busybox:latest + # imagePullPolicy: IfNotPresent + # commands: + # preStop: ["sh", "-c", "rm -rf /path/to/cleanup"] + +cluster: + enabled: true + image: + repository: ghcr.io/apache/skywalking-banyandb + tag: dc88130e8d0516c7989734bdeb505e2d92c1ab71 + pullPolicy: IfNotPresent + etcdEndpoints: [] + liaison: + name: banyandb + role: liaison + replicas: 2 + podAnnotations: + example: banyandb-foo + securityContext: {} + # runAsUser: 1000 + # runAsGroup: 1000 + # fsGroup: 1000 + env: [] + # - name: BANYANDB_FOO + # value: "bar" + priorityClassName: "" + podDisruptionBudget: {} + # minAvailable: 1 + # maxUnavailable: 2 + # matchLabels: + # - key: foo + # value: bar + # matchExpressions: + # - key: foo + # operator: In + # values: [bar, baz] + # paused: false + tolerations: [] + # - key: foo + # value: bar + # operator: Equal + # effect: NoSchedule + nodeSelector: [] + # - key: foo + # value: bar + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: foo + # operator: In + # values: + # - bar + # - baz + # podAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # - labelSelector: + # matchLabels: + # - key: app + # value: banyandb + # topologyKey: "kubernetes.io/hostname" + # namespaces: [] + resources: + requests: [] + # - key: cpu + # value: "100m" + # - key: memory + # value: "256Mi" + limits: [] + # - key: cpu + # value: "500m" + # - key: memory + # value: "512Mi" + tls: + grpcSecretName: "" + httpSecretName: "" + etcdSecretName: "" + + grpcSvc: + labels: {} + annotations: {} + port: 17912 + httpSvc: + labels: {} + annotations: {} + port: 17913 + type: LoadBalancer + externalIPs: [] + loadBalancerIP: null + loadBalancerSourceRanges: [] + + ingress: + enabled: false + labels: {} + annotations: {} + rules: [] + # - host: localhost + # paths: + # - path: / + # port: 17913 + # serviceName: banyandb-http + tls: [] + # - hosts: + # - localhost + # secretName: tls-secret + + data: + name: banyandb + role: data + replicas: 3 + podAnnotations: + example: banyandb-foo + securityContext: {} + # runAsUser: 1000 + # runAsGroup: 1000 + # fsGroup: 1000 + env: [] + # - name: BANYANDB_FOO + # value: "bar" + priorityClassName: "" + podDisruptionBudget: {} + # minAvailable: 1 + # maxUnavailable: 2 + # matchLabels: + # - key: foo + # value: bar + # matchExpressions: + # - key: foo + # operator: In + # values: [bar, baz] + # paused: false + tolerations: [] + # - key: foo + # value: bar + # operator: Equal + # effect: NoSchedule + nodeSelector: [] + # - key: foo + # value: bar + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: foo + # operator: In + # values: + # - bar + # - baz + # podAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # - labelSelector: + # matchLabels: + # - key: app + # value: banyandb + # topologyKey: "kubernetes.io/hostname" + # namespaces: [] + resources: + requests: [] + # - key: cpu + # value: "100m" + # - key: memory + # value: "256Mi" + limits: [] + # - key: cpu + # value: "500m" + # - key: memory + # value: "512Mi" + tls: + grpcSecretName: "" + etcdSecretName: "" + + grpcSvc: + labels: {} + annotations: {} + port: 17912 + + sidecar: [] + # - name: cleanup-sidecar + # image: busybox:latest + # imagePullPolicy: IfNotPresent + # commands: + # normal: ["sh", "-c", "while true; do echo 'sidecar task'; sleep 60; done"] + # preStop: ["sh", "-c", "echo cleanup"] + storage: enabled: false persistentVolumeClaims: @@ -143,4 +333,23 @@ serviceAccount: # If not set and create is true, a name is generated using the fullname template name: "" +etcd: + enabled: true + replicaCount: 1 + auth: + rbac: + create: true + allowNoneAuthentication: false + rootPassword: banyandb + client: + secureTransport: false + existingSecret: "" + enableAuthentication: false + certFilename: tls.crt + certKeyFilename: tls.key + caFilename: "" + # extraEnvVars: + # - name: ETCDCTL_CACERT + # value: /opt/bitnami/etcd/certs/client/ca.crt + fullnameOverride: "banyandb" diff --git a/test/e2e/e2e-banyandb.yaml b/test/e2e/e2e-banyandb-cluster.yaml similarity index 97% copy from test/e2e/e2e-banyandb.yaml copy to test/e2e/e2e-banyandb-cluster.yaml index 65d42b9..24e35c2 100644 --- a/test/e2e/e2e-banyandb.yaml +++ b/test/e2e/e2e-banyandb-cluster.yaml @@ -40,11 +40,16 @@ setup: kubectl label namespace default istio-injection=enabled - name: Install helm command: bash test/e2e/setup-e2e-shell/install.sh helm + - name: Install dependency + command: | + helm repo add bitnami https://charts.bitnami.com/bitnami + cd chart + helm dependency update - name: Install BanyanDB - command: helm -n istio-system install banyandb chart/ + command: helm -n istio-system install banyandb chart/ -f test/e2e/values.cluster.yaml - name: Install SkyWalking command: | - helm -n istio-system install skywalking oci://ghcr.io/apache/skywalking-helm/skywalking-helm \ + helm -n istio-system install --timeout 10m skywalking oci://ghcr.io/apache/skywalking-helm/skywalking-helm \ --version "$SW_HELM_VERSION" \ --set fullnameOverride=skywalking \ --set oap.env.SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS=k8s-mesh \ @@ -205,3 +210,4 @@ verify: swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql instance list --service-name=e2e::reviews | yq e '.[0].name' - ) \ |yq e 'to_entries' - expected: expected/metrics-has-value.yml + diff --git a/test/e2e/e2e-banyandb.yaml b/test/e2e/e2e-banyandb-standalone.yaml similarity index 97% rename from test/e2e/e2e-banyandb.yaml rename to test/e2e/e2e-banyandb-standalone.yaml index 65d42b9..feb5349 100644 --- a/test/e2e/e2e-banyandb.yaml +++ b/test/e2e/e2e-banyandb-standalone.yaml @@ -40,11 +40,16 @@ setup: kubectl label namespace default istio-injection=enabled - name: Install helm command: bash test/e2e/setup-e2e-shell/install.sh helm + - name: Install dependency + command: | + helm repo add bitnami https://charts.bitnami.com/bitnami + cd chart + helm dependency update - name: Install BanyanDB - command: helm -n istio-system install banyandb chart/ + command: helm -n istio-system install banyandb chart/ -f test/e2e/values.standalone.yaml - name: Install SkyWalking command: | - helm -n istio-system install skywalking oci://ghcr.io/apache/skywalking-helm/skywalking-helm \ + helm -n istio-system install --timeout 10m skywalking oci://ghcr.io/apache/skywalking-helm/skywalking-helm \ --version "$SW_HELM_VERSION" \ --set fullnameOverride=skywalking \ --set oap.env.SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS=k8s-mesh \ diff --git a/test/e2e/values.cluster.yaml b/test/e2e/values.cluster.yaml new file mode 100644 index 0000000..10d1ecd --- /dev/null +++ b/test/e2e/values.cluster.yaml @@ -0,0 +1,250 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Default values for banyandb. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +cluster: + enabled: true + image: + repository: ghcr.io/apache/skywalking-banyandb + tag: dc88130e8d0516c7989734bdeb505e2d92c1ab71 + pullPolicy: IfNotPresent + etcdEndpoints: [] + liaison: + name: banyandb + role: liaison + replicas: 1 + podAnnotations: + example: banyandb-foo + securityContext: {} + # runAsUser: 1000 + # runAsGroup: 1000 + # fsGroup: 1000 + env: [] + # - name: BANYANDB_FOO + # value: "bar" + priorityClassName: "" + podDisruptionBudget: {} + # minAvailable: 1 + # maxUnavailable: 2 + # matchLabels: + # - key: foo + # value: bar + # matchExpressions: + # - key: foo + # operator: In + # values: [bar, baz] + # paused: false + tolerations: [] + # - key: foo + # value: bar + # operator: Equal + # effect: NoSchedule + nodeSelector: [] + # - key: foo + # value: bar + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: foo + # operator: In + # values: + # - bar + # - baz + # podAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # - labelSelector: + # matchLabels: + # - key: app + # value: banyandb + # topologyKey: "kubernetes.io/hostname" + # namespaces: [] + resources: + requests: [] + # - key: cpu + # value: "100m" + # - key: memory + # value: "256Mi" + limits: [] + # - key: cpu + # value: "500m" + # - key: memory + # value: "512Mi" + tls: + grpcSecretName: "" + httpSecretName: "" + etcdSecretName: "" + + grpcSvc: + labels: {} + annotations: {} + port: 17912 + + httpSvc: + labels: {} + annotations: {} + port: 17913 + type: LoadBalancer + externalIPs: [] + loadBalancerIP: null + loadBalancerSourceRanges: [] + + ingress: + enabled: false + labels: {} + annotations: {} + rules: [] + # - host: localhost + # paths: + # - path: / + # port: 17913 + # serviceName: banyandb-http + tls: [] + # - hosts: + # - localhost + # secretName: tls-secret + + data: + name: banyandb + role: data + replicas: 1 + podAnnotations: + example: banyandb-foo + securityContext: {} + # runAsUser: 1000 + # runAsGroup: 1000 + # fsGroup: 1000 + env: [] + # - name: BANYANDB_FOO + # value: "bar" + priorityClassName: "" + podDisruptionBudget: {} + # minAvailable: 1 + # maxUnavailable: 2 + # matchLabels: + # - key: foo + # value: bar + # matchExpressions: + # - key: foo + # operator: In + # values: [bar, baz] + # paused: false + tolerations: [] + # - key: foo + # value: bar + # operator: Equal + # effect: NoSchedule + nodeSelector: [] + # - key: foo + # value: bar + affinity: {} + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: foo + # operator: In + # values: + # - bar + # - baz + # podAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # - labelSelector: + # matchLabels: + # - key: app + # value: banyandb + # topologyKey: "kubernetes.io/hostname" + # namespaces: [] + resources: + requests: [] + # - key: cpu + # value: "100m" + # - key: memory + # value: "256Mi" + limits: [] + # - key: cpu + # value: "500m" + # - key: memory + # value: "512Mi" + tls: + grpcSecretName: "" + etcdSecretName: "" + + grpcSvc: + labels: {} + annotations: {} + port: 17912 + + sidecar: [] + # - name: cleanup-sidecar + # image: busybox:latest + # imagePullPolicy: IfNotPresent + # commands: + # normal: ["sh", "-c", "while true; do echo 'sidecar task'; sleep 60; done"] + # preStop: ["sh", "-c", "echo cleanup"] + +storage: + enabled: false + persistentVolumeClaims: + - mountTargets: ["measure", "stream"] + existingClaimName: null + claimName: data + size: 200Gi + accessModes: + - ReadWriteOnce + storageClass: null + volumeMode: Filesystem + - mountTargets: ["metadata"] + existingClaimName: null + claimName: meta + size: 10Gi + accessModes: + - ReadWriteOnce + storageClass: null + volumeMode: Filesystem + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +etcd: + enabled: true + replicaCount: 1 + auth: + rbac: + create: true + allowNoneAuthentication: false + rootPassword: banyandb + client: + secureTransport: false + existingSecret: "" + enableAuthentication: false + certFilename: tls.crt + certKeyFilename: tls.key + caFilename: "" + # extraEnvVars: + # - name: ETCDCTL_CACERT + # value: /opt/bitnami/etcd/certs/client/ca.crt + +fullnameOverride: "banyandb" diff --git a/chart/values.yaml b/test/e2e/values.standalone.yaml similarity index 96% copy from chart/values.yaml copy to test/e2e/values.standalone.yaml index d7357a6..a3140c6 100644 --- a/chart/values.yaml +++ b/test/e2e/values.standalone.yaml @@ -17,7 +17,14 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. +cluster: + enabled: false + +etcd: + enabled: false + standalone: + enabled: true name: banyandb podAnnotations: example: banyandb-foo @@ -27,7 +34,7 @@ standalone: # fsGroup: 1000 image: repository: ghcr.io/apache/skywalking-banyandb - tag: 84f32b3969cdcc676aaee428383b34b3b67dbdf5 + tag: dc88130e8d0516c7989734bdeb505e2d92c1ab71 pullPolicy: IfNotPresent env: [] # - name: BANYANDB_FOO @@ -143,4 +150,4 @@ serviceAccount: # If not set and create is true, a name is generated using the fullname template name: "" -fullnameOverride: "banyandb" +fullnameOverride: "banyandb" \ No newline at end of file