You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2022/11/18 09:47:18 UTC

[skywalking-kubernetes] branch psql updated (56f4fea -> bbc649e)

This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a change to branch psql
in repository https://gitbox.apache.org/repos/asf/skywalking-kubernetes.git


 discard 56f4fea  Refactor oap init job, and support postgresql storage
     new bbc649e  Refactor oap init job, and support postgresql storage

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (56f4fea)
            \
             N -- N -- N   refs/heads/psql (bbc649e)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 chart/skywalking/README.md                   | 6 +++---
 chart/skywalking/templates/oap-init.job.yaml | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)


[skywalking-kubernetes] 01/01: Refactor oap init job, and support postgresql storage

Posted by ke...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kezhenxu94 pushed a commit to branch psql
in repository https://gitbox.apache.org/repos/asf/skywalking-kubernetes.git

commit bbc649e3870fd14eade81c54d71c3f0e189e2e9a
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Fri Nov 18 17:47:09 2022 +0800

    Refactor oap init job, and support postgresql storage
---
 chart/skywalking/Chart.yaml                    |  4 ++
 chart/skywalking/README.md                     |  6 +--
 chart/skywalking/templates/_helpers.tpl        | 59 ++++++++++++++++++++++++--
 chart/skywalking/templates/oap-deployment.yaml | 23 +---------
 chart/skywalking/templates/oap-init.job.yaml   | 37 +++++-----------
 chart/skywalking/values.yaml                   | 20 ++++++++-
 6 files changed, 94 insertions(+), 55 deletions(-)

diff --git a/chart/skywalking/Chart.yaml b/chart/skywalking/Chart.yaml
index 87072cf..78ee446 100644
--- a/chart/skywalking/Chart.yaml
+++ b/chart/skywalking/Chart.yaml
@@ -34,3 +34,7 @@ dependencies:
     version: ~7.5.1
     repository: https://helm.elastic.co/
     condition: elasticsearch.enabled
+  - name: postgresql
+    version: 12.1.2
+    repository: https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
+    condition: postgresql.enabled
diff --git a/chart/skywalking/README.md b/chart/skywalking/README.md
index d629244..74b5acc 100644
--- a/chart/skywalking/README.md
+++ b/chart/skywalking/README.md
@@ -80,9 +80,9 @@ The following table lists the configurable parameters of the Skywalking chart an
 | `ui.service.loadBalancerIP`                                  | Load Balancer IP address                                                                         | `nil`                                |
 | `ui.service.annotations`                                     | Kubernetes service annotations                                                                   | `{}`                                 |
 | `ui.service.loadBalancerSourceRanges`                        | Limit load balancer source IPs to list of CIDRs (where available))                               | `[]`                                 |
-| `esInit.nodeAffinity`                                        | ES init job node affinity policy                                                                 | `{}`                                 |
-| `esInit.nodeSelector`                                        | ES init job labels for master pod assignment                                                     | `{}`                                 |
-| `esInit.tolerations`                                         | ES init job tolerations                                                                          | `[]`                                 |
+| `oapInit.nodeAffinity`                                       | OAP init job node affinity policy                                                                | `{}`                                 |
+| `oapInit.nodeSelector`                                       | OAP init job labels for master pod assignment                                                    | `{}`                                 |
+| `oapInit.tolerations`                                        | OAP init job tolerations                                                                         | `[]`                                 |
 | `elasticsearch.enabled`                                      | Spin up a new elasticsearch cluster for SkyWalking                                               | `true`                               |
 | `elasticsearch.clusterName`                 | This will be used as the Elasticsearch [cluster.name](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.name.html) and should be unique per cluster in the namespace                                                                                                                                 | `elasticsearch`                                                                                                           |
 | `elasticsearch.nodeGroup`                   | This is the name that will be used for each group of nodes in the cluster. The name will be `clusterName-nodeGroup-X`                                                                                                                                                                                                      | `master`                                                                                                                  |
diff --git a/chart/skywalking/templates/_helpers.tpl b/chart/skywalking/templates/_helpers.tpl
index f218240..a7b6ad9 100644
--- a/chart/skywalking/templates/_helpers.tpl
+++ b/chart/skywalking/templates/_helpers.tpl
@@ -85,13 +85,66 @@ Create the name of the service account to use for the satellite cluster
 {{ default (include "skywalking.satellite.fullname" .) .Values.serviceAccounts.satellite }}
 {{- end -}}
 
-{{- define "skywalking.containers.wait-for-es" -}}
+{{- define "skywalking.containers.wait-for-storage" -}}
+{{- if eq .Values.oap.storageType "elasticsearch" }}
 - name: wait-for-elasticsearch
   image: {{ .Values.initContainer.image }}:{{ .Values.initContainer.tag }}
   imagePullPolicy: IfNotPresent
-{{- if .Values.elasticsearch.enabled }}
+    {{- if .Values.elasticsearch.enabled }}
   command: ['sh', '-c', 'for i in $(seq 1 60); do nc -z -w3 {{ .Values.elasticsearch.clusterName }}-{{ .Values.elasticsearch.nodeGroup }} {{ .Values.elasticsearch.httpPort }} && exit 0 || sleep 5; done; exit 1']
-{{- else }}
+    {{- else }}
   command: ['sh', '-c', 'for i in $(seq 1 60); do nc -z -w3 {{ .Values.elasticsearch.config.host }} {{ .Values.elasticsearch.config.port.http }} && exit 0 || sleep 5; done; exit 1']
+    {{- end }}
+{{- else if eq .Values.oap.storageType "postgresql" -}}
+- name: wait-for-postgresql
+  image: postgres:13
+  imagePullPolicy: IfNotPresent
+  command:
+    - sh
+    - -c
+    - |
+    {{- if .Values.postgresql.enabled }}
+      until pg_isready -h '{{ template "skywalking.name" . }}-postgresql' -p '{{ .Values.postgresql.containerPorts.postgresql }}' -U '{{ .Values.postgresql.auth.username }}'; do
+    {{- else }}
+      until pg_isready -h '{{ .Values.postgresql.config.host }}' -p '{{ .Values.postgresql.containerPorts.postgresql }}' -U '{{ .Values.postgresql.auth.username }}'; do
+    {{- end }}
+        echo "Waiting for postgresql..."
+        sleep 3
+      done
+{{- end }}
+{{- end -}}
+
+# Storage-related environment variables are defined here.
+{{- define "skywalking.oap.envs.storage" -}}
+- name: SW_STORAGE
+  value: {{ required "oap.storageType is required" .Values.oap.storageType }}
+{{- if eq .Values.oap.storageType "elasticsearch" }}
+- name: SW_STORAGE_ES_CLUSTER_NODES
+  {{- if .Values.elasticsearch.enabled }}
+  value: "{{ .Values.elasticsearch.clusterName }}-{{ .Values.elasticsearch.nodeGroup }}:{{ .Values.elasticsearch.httpPort }}"
+  {{- else }}
+  value: "{{ .Values.elasticsearch.config.host }}:{{ .Values.elasticsearch.config.port.http }}"
+  {{- end }}
+  {{- if not .Values.elasticsearch.enabled }}
+    {{- if .Values.elasticsearch.config.user }}
+- name: SW_ES_USER
+  value: "{{ .Values.elasticsearch.config.user }}"
+    {{- end }}
+    {{- if .Values.elasticsearch.config.password }}
+- name: SW_ES_PASSWORD
+  value: "{{ .Values.elasticsearch.config.password }}"
+    {{- end }}
+  {{- end }}
+{{- else if eq .Values.oap.storageType "postgresql" }}
+{{- $postgresqlHost := print (include "skywalking.name" .) "-postgresql" -}}
+{{- if not .Values.postgresql.enabled -}}
+{{- $postgresqlHost = .Values.postgresql.config.host -}}
+{{- end }}
+- name: SW_JDBC_URL
+  value: "jdbc:postgresql://{{ $postgresqlHost }}:{{ .Values.postgresql.containerPorts.postgresql }}/{{ .Values.postgresql.auth.database }}"
+- name: SW_DATA_SOURCE_USER
+  value: "{{ .Values.postgresql.auth.username }}"
+- name: SW_DATA_SOURCE_PASSWORD
+  value: "{{ .Values.postgresql.auth.password }}"
 {{- end }}
 {{- end -}}
diff --git a/chart/skywalking/templates/oap-deployment.yaml b/chart/skywalking/templates/oap-deployment.yaml
index d627a97..5406f64 100644
--- a/chart/skywalking/templates/oap-deployment.yaml
+++ b/chart/skywalking/templates/oap-deployment.yaml
@@ -81,9 +81,7 @@ spec:
 {{ toYaml .Values.imagePullSecrets | indent 8 }}
 {{- end }}
       initContainers:
-        {{- if hasPrefix "elasticsearch" .Values.oap.storageType }}
-        {{- include "skywalking.containers.wait-for-es" . | nindent 6 }}
-        {{- end }}
+        {{- include "skywalking.containers.wait-for-storage" . | nindent 6 }}
       containers:
       - name: {{ .Values.oap.name }}
         image: {{ .Values.oap.image.repository }}:{{ required "oap.image.tag is required" .Values.oap.image.tag }}
@@ -126,24 +124,7 @@ spec:
           valueFrom:
             fieldRef:
               fieldPath: metadata.uid
-        - name: SW_STORAGE
-          value: {{ required "oap.storageType is required" .Values.oap.storageType }}
-        - name: SW_STORAGE_ES_CLUSTER_NODES
-{{- if .Values.elasticsearch.enabled }}
-          value: "{{ .Values.elasticsearch.clusterName }}-{{ .Values.elasticsearch.nodeGroup }}:{{ .Values.elasticsearch.httpPort }}"
-{{- else }}
-          value: "{{ .Values.elasticsearch.config.host }}:{{ .Values.elasticsearch.config.port.http }}"
-{{- end }}
-{{- if not .Values.elasticsearch.enabled }}
-        {{- if .Values.elasticsearch.config.user }}
-        - name: SW_ES_USER
-          value: "{{ .Values.elasticsearch.config.user }}"
-        {{- end }}
-        {{- if .Values.elasticsearch.config.password }}
-        - name: SW_ES_PASSWORD
-          value: "{{ .Values.elasticsearch.config.password }}"
-        {{- end }}
-{{- end }}
+        {{- include "skywalking.oap.envs.storage" . | nindent 8 }}
         {{- range $key, $value :=  .Values.oap.env }}
         - name: {{ $key }}
           value: {{ $value | quote }}
diff --git a/chart/skywalking/templates/oap-init.job.yaml b/chart/skywalking/templates/oap-init.job.yaml
index 60db860..d061066 100644
--- a/chart/skywalking/templates/oap-init.job.yaml
+++ b/chart/skywalking/templates/oap-init.job.yaml
@@ -18,7 +18,7 @@
 apiVersion: batch/v1
 kind: Job
 metadata:
-  name: "{{ .Release.Name }}-es-init"
+  name: "{{ .Release.Name }}-oap-init"
   labels:
     app: {{ template "skywalking.name" . }}
     chart: {{ .Chart.Name }}-{{ .Chart.Version }}
@@ -31,27 +31,27 @@ metadata:
 spec:
   template:
     metadata:
-      name: "{{ .Release.Name }}-es-init"
+      name: "{{ .Release.Name }}-oap-init"
       labels:
         app: {{ template "skywalking.name" . }}
         component: "{{ template "skywalking.fullname" . }}-job"
         release: {{ .Release.Name }}
     spec:
       serviceAccountName: {{ template "skywalking.serviceAccountName.oap" . }}
-      {{- if .Values.esInit.nodeAffinity }}
+      {{- if .Values.oapInit.nodeAffinity }}
       affinity:
       {{- end }}
-      {{- with .Values.esInit.nodeAffinity }}
+      {{- with .Values.oapInit.nodeAffinity }}
         nodeAffinity:
 {{ toYaml . | indent 10 }}
       {{- end }}
-{{- if .Values.esInit.nodeSelector }}
+{{- if .Values.oapInit.nodeSelector }}
       nodeSelector:
-{{ toYaml .Values.esInit.nodeSelector | indent 8 }}
+{{ toYaml .Values.oapInit.nodeSelector | indent 8 }}
 {{- end }}
-{{- if .Values.esInit.tolerations }}
+{{- if .Values.oapInit.tolerations }}
       tolerations:
-{{ toYaml .Values.esInit.tolerations | indent 8 }}
+{{ toYaml .Values.oapInit.tolerations | indent 8 }}
 {{- end }}
 {{- if .Values.imagePullSecrets }}
       imagePullSecrets:
@@ -59,7 +59,7 @@ spec:
 {{- end }}
       restartPolicy: Never
       initContainers:
-        {{- include "skywalking.containers.wait-for-es" . | nindent 6 }}
+        {{- include "skywalking.containers.wait-for-storage" . | nindent 6 }}
       containers:
       - name: {{ .Values.oap.name }}
         image: {{ .Values.oap.image.repository }}:{{ required "oap.image.tag is required" .Values.oap.image.tag }}
@@ -71,24 +71,7 @@ spec:
         env:
         - name: JAVA_OPTS
           value: "{{ .Values.oap.javaOpts }} -Dmode=init"
-        - name: SW_STORAGE
-          value: {{ required "oap.storageType is required" .Values.oap.storageType }}
-        - name: SW_STORAGE_ES_CLUSTER_NODES
-{{- if .Values.elasticsearch.enabled }}
-          value: "{{ .Values.elasticsearch.clusterName }}-{{ .Values.elasticsearch.nodeGroup }}:{{ .Values.elasticsearch.httpPort }}"
-{{- else }}
-          value: "{{ .Values.elasticsearch.config.host }}:{{ .Values.elasticsearch.config.port.http }}"
-{{- end }}
-{{- if not .Values.elasticsearch.enabled }}
-        {{- if .Values.elasticsearch.config.user }}
-        - name: SW_ES_USER
-          value: "{{ .Values.elasticsearch.config.user }}"
-        {{- end }}
-        {{- if .Values.elasticsearch.config.password }}
-        - name: SW_ES_PASSWORD
-          value: "{{ .Values.elasticsearch.config.password }}"
-        {{- end }}
-{{- end }}
+        {{- include "skywalking.oap.envs.storage" . | nindent 8 }}
         {{- range $key, $value :=  .Values.oap.env }}
         - name: {{ $key }}
           value: {{ $value | quote }}
diff --git a/chart/skywalking/values.yaml b/chart/skywalking/values.yaml
index ade4916..f228e3d 100644
--- a/chart/skywalking/values.yaml
+++ b/chart/skywalking/values.yaml
@@ -117,7 +117,7 @@ ui:
     ## Limit load balancer source ips to list of CIDRs (where available)
     # loadBalancerSourceRanges: []
 
-esInit:
+oapInit:
   nodeAffinity: {}
   nodeSelector: {}
   tolerations: []
@@ -371,6 +371,24 @@ elasticsearch:
 
   keystore: []
 
+postgresql:
+  enabled: false # Whether to start a demo postgresql deployment, don't use this for production.
+  config:
+    # The hostname of your own postgresql service, this only takes effect when postgresql.enabled is false.
+    host: postgresql-service.your-awesome-company.com
+  auth:
+    username: postgres
+    password: "123456"
+    database: skywalking
+  containerPorts:
+    postgresql: 5432
+  primary:
+    persistence:
+      enabled: false
+  readReplicas:
+    persistence:
+      enabled: false
+
 satellite:
   name: satellite
   replicas: 1