This is an automated email from the ASF dual-hosted git repository.
jshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/main by this push:
new 664b4d138e [#7766] Use the sql scripts in the image instead of in the
chart (#7767)
664b4d138e is described below
commit 664b4d138ea4fff4f37e784d2a9fd95b045ff614
Author: Danhua Wang <[email protected]>
AuthorDate: Wed Jul 30 16:14:58 2025 +0800
[#7766] Use the sql scripts in the image instead of in the chart (#7767)
### What changes were proposed in this pull request?
Launch an init container named sqlfile to mount the scripts path to pod
shared volumes.
Launch another init container named init-sql to init the table that
Gravitino required.
Remove the scripts folder in chart.
### Why are the changes needed?
Fix: #7766
### Does this PR introduce _any_ user-facing change?
N/A
### How was this patch tested?
CI
---
dev/charts/gravitino/Chart.yaml | 5 ++
dev/charts/gravitino/resources/files/mysql | 1 -
dev/charts/gravitino/templates/_helpers.tpl | 16 +++++
.../gravitino/templates/configmap-mysql-init.yaml | 46 ---------------
dev/charts/gravitino/templates/deployment.yaml | 69 +++++++++++++++++++++-
dev/charts/gravitino/values.yaml | 30 ++++++----
docs/security/how-to-authenticate.md | 2 +-
7 files changed, 109 insertions(+), 60 deletions(-)
diff --git a/dev/charts/gravitino/Chart.yaml b/dev/charts/gravitino/Chart.yaml
index 8fd9b1854f..fda8201aa8 100644
--- a/dev/charts/gravitino/Chart.yaml
+++ b/dev/charts/gravitino/Chart.yaml
@@ -23,6 +23,11 @@ home: https://gravitino.apache.org
annotations:
licenses: Apache-2.0
dependencies:
+ - name: common
+ repository: https://charts.bitnami.com/bitnami
+ tags:
+ - bitnami-common
+ version: 2.19.2
- condition: mysql.enabled
name: mysql
repository: https://charts.bitnami.com/bitnami
diff --git a/dev/charts/gravitino/resources/files/mysql
b/dev/charts/gravitino/resources/files/mysql
deleted file mode 120000
index 1fadad5214..0000000000
--- a/dev/charts/gravitino/resources/files/mysql
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../scripts/mysql
\ No newline at end of file
diff --git a/dev/charts/gravitino/templates/_helpers.tpl
b/dev/charts/gravitino/templates/_helpers.tpl
index edf00f207e..8258ac350d 100644
--- a/dev/charts/gravitino/templates/_helpers.tpl
+++ b/dev/charts/gravitino/templates/_helpers.tpl
@@ -65,3 +65,19 @@ Define the gravitino.namespace
{{- define "gravitino.namespace" -}}
{{- .Release.Namespace -}}
{{- end -}}
+
+{{/*
+Return the proper Gravitino image name
+*/}}
+{{- define "gravitino.image" -}}
+ {{- include "common.images.image" (dict "imageRoot" .Values.image "global"
.Values.global) -}}
+{{- end -}}
+
+{{/*
+Return the proper MySQL image name for the init-mysql initContainer
+*/}}
+{{- define "init-mysql.image" -}}
+{{- if .Values.mysql.enabled -}}
+ {{- include "common.images.image" (dict "imageRoot" .Values.mysql.image
"global" .Values.global) -}}
+{{- end -}}
+{{- end -}}
\ No newline at end of file
diff --git a/dev/charts/gravitino/templates/configmap-mysql-init.yaml
b/dev/charts/gravitino/templates/configmap-mysql-init.yaml
deleted file mode 100644
index 089c47ca00..0000000000
--- a/dev/charts/gravitino/templates/configmap-mysql-init.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
-{{- /*
- 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.
- */}}
-
-{{- if .Values.mysql.enabled }}
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: gravitino-mysql-init
- namespace: {{ include "gravitino.namespace" . }}
- labels:
- {{- include "gravitino.labels" . | nindent 4 }}
-data:
- {{- $sqlFiles := .Files.Glob "resources/files/mysql/schema-*-mysql.sql" }}
- {{- $maxVersionFile := "" }}
- {{- $maxVersion := "0.0.0" }}
- {{- range $path, $content := $sqlFiles }}
- {{- $fileName := base $path }}
- {{- $version := regexFind "schema-(\\d+\\.\\d+\\.\\d+)-mysql\\.sql"
$fileName | replace "schema-" "" | replace "-mysql.sql" "" }}
- {{- if (semverCompare ">= 0.0.0" $version) }}
- {{- if (semverCompare (printf "> %s" $maxVersion) $version) }}
- {{- $maxVersion = $version }}
- {{- $maxVersionFile = $path }}
- {{- end }}
- {{- end }}
- {{- end }}
- {{- if $maxVersionFile }}
- {{ base $maxVersionFile }}: |-
- {{- tpl (.Files.Get $maxVersionFile | toString) $ | nindent 4 }}
- {{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/dev/charts/gravitino/templates/deployment.yaml
b/dev/charts/gravitino/templates/deployment.yaml
index a509cef23e..59c25f5c88 100644
--- a/dev/charts/gravitino/templates/deployment.yaml
+++ b/dev/charts/gravitino/templates/deployment.yaml
@@ -46,13 +46,76 @@ spec:
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
- {{- with .Values.image.pullSecrets }}
+ {{- with .Values.global.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
+ {{- end }}
+ initContainers:
+ - name: sqlfile
+ image: {{ include "gravitino.image" . }}
+ imagePullPolicy: "{{ .Values.image.pullPolicy }}"
+ command:
+ - /bin/bash
+ - -c
+ - |
+ cp -r /root/gravitino/scripts/* /tmp/scripts/
+ VERSION=$(ls /root/gravitino/libs/gravitino-server-* | grep -oP
'[0-9]+\.[0-9]+\.[0-9]+'|head -1)
+ echo $VERSION > /tmp/scripts/version.txt
+ resources:
+ {{- toYaml .Values.initResources | nindent 10 }}
+ volumeMounts:
+ - mountPath: /tmp/scripts/
+ name: scripts-emptydir
+ {{- if .Values.mysql.enabled }}
+ - name: init-mysql
+ image: {{ include "init-mysql.image" . }}
+ imagePullPolicy: "{{ .Values.image.pullPolicy }}"
+ command:
+ - /bin/bash
+ - -c
+ - |
+ while ! mysql -h {{ .Release.Name }}-mysql -u root -e "SELECT 1";
do
+ echo "Waiting for MySQL to be ready..."
+ sleep 2
+ done
+ VERSION=$(cat /scripts/version.txt)
+ if [ -z "$VERSION" ]; then
+ echo "ERROR:Please set VERSION"
+ exit 1
+ fi
+ dir="/scripts/mysql"
+ schema_file=$(ls $dir/schema-*-mysql.sql | sort -V | awk -F'[-]'
'$2 <= '$VERSION' {print $0}' | tail -n 1)
+ if [ ! -f "$schema_file" ]; then
+ echo "ERROR:Failed to find schema file $schema_file"
+ exit 1
+ fi
+ upgrade_file=$(ls $dir/upgrade-*-to-*-mysql.sql | sort -V | awk
-F'[-]' '$4 <= '$VERSION' {print $0}' | tail -n 1)
+ if [ ! -f "$upgrade_file" ]; then
+ echo "ERROR:Failed to find upgrade file $upgrade_file"
+ exit 1
+ fi
+ echo "Schema file: $schema_file"
+ echo "Upgrade file: $upgrade_file"
+ if ! mysql -h {{ .Release.Name }}-mysql -u root -D gravitino
<"$upgrade_file"; then
+ echo "WARNING: Upgrade script failed: $upgrade_file" >&2
+ echo "Continuing with schema script..." >&2
+ fi
+ mysql -h {{ .Release.Name }}-mysql -u root -D gravitino
<$schema_file
+ resources:
+ {{- toYaml .Values.initResources | nindent 10 }}
+ env:
+ - name: MYSQL_PWD
+ valueFrom:
+ secretKeyRef:
+ name: {{ .Release.Name }}-mysql
+ key: mysql-root-password
+ volumeMounts:
+ - mountPath: /scripts
+ name: scripts-emptydir
{{- end }}
containers:
- name: {{ include "gravitino.name" . }}
- image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+ image: {{ include "gravitino.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
command:
- "/bin/bash"
@@ -108,6 +171,8 @@ spec:
- name: gravitino-conf
configMap:
name: {{ include "gravitino.fullname" . }}
+ - emptyDir: {}
+ name: scripts-emptydir
{{- if not .Values.persistence.enabled }}
- name: storage
emptyDir: {}
diff --git a/dev/charts/gravitino/values.yaml b/dev/charts/gravitino/values.yaml
index 45173f359c..04d05ed11e 100644
--- a/dev/charts/gravitino/values.yaml
+++ b/dev/charts/gravitino/values.yaml
@@ -16,18 +16,23 @@
# specific language governing permissions and limitations
# under the License.
#
+global:
+ # Set if you want to change the default docker registry, e.g. a private one.
+ # imageRegistry: myRegistryName
-image:
- repository: apache/gravitino
- tag: 1.0.0-SNAPSHOT
- pullPolicy: IfNotPresent
## Optionally specify an array of pullSecrets (secrets must be manually
created in the namespace)
## ref:
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
## Example:
- ## pullSecrets:
- ## - myRegistryKeySecretName
+ ## imagePullSecrets:
+ ## - name: my-registry-secret
##
- pullSecrets: []
+ imagePullSecrets: []
+
+image:
+ registry: docker.io
+ repository: apache/gravitino
+ tag: 1.0.0-SNAPSHOT
+ pullPolicy: IfNotPresent
## MySQL chart configuration
## ref: https://github.com/bitnami/charts/blob/main/bitnami/mysql/values.yaml
@@ -44,9 +49,6 @@ mysql:
##
image:
tag: 8.0.36-debian-12-r12
- ## @param initdbScriptsConfigMap ConfigMap with the initdb scripts
- ##
- initdbScriptsConfigMap: gravitino-mysql-init
## MySQL Authentication parameters
##
auth:
@@ -418,6 +420,14 @@ resources: {}
# cpu: 2000m
# memory: 3Gi
+initResources: {}
+# limits:
+# cpu: "25m"
+# memory: "128Mi"
+# requests:
+# cpu: "25m"
+# memory: "128Mi"
+
## Node labels for pod assignment
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
diff --git a/docs/security/how-to-authenticate.md
b/docs/security/how-to-authenticate.md
index 6ea061995f..6e88be6728 100644
--- a/docs/security/how-to-authenticate.md
+++ b/docs/security/how-to-authenticate.md
@@ -230,7 +230,7 @@ docker run -dti -p 8080:8080 -e
KC_BOOTSTRAP_ADMIN_USERNAME=admin -e KC_BOOTSTRA
* Confirm that `Client authentication` `Standard flow` `Direct access
grants` `Service accounts roles` is enabled.
* Click *Next*
* Set *Valid redirect URIs* to `http://localhost:8090/*`
- * Set *Web origins* to `http://localhost:8090/*`
+ * Set *Web origins* to `http://localhost:8090`
* Click *Save*.
* Click *Credentials* tab page, get `Client Secret`.