This is an automated email from the ASF dual-hosted git repository.
jshao pushed a commit to branch branch-1.0
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-1.0 by this push:
new fe6b6fd98a [#7159] feat(helm): Support configurations for Iceberg REST
server in Gravitino helm chart (#8439)
fe6b6fd98a is described below
commit fe6b6fd98af255837d832d0e4ca26ff135762017
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Sep 4 19:14:14 2025 +0800
[#7159] feat(helm): Support configurations for Iceberg REST server in
Gravitino helm chart (#8439)
### What changes were proposed in this pull request?
Support configurations for Iceberg REST server in Gravitino helm chart.
### Why are the changes needed?
Fix: #7159
### Does this PR introduce _any_ user-facing change?
no
### How was this patch tested?
1. install gravitino helm chart
2. test Spark and with cloud credentials works
Co-authored-by: FANNG <[email protected]>
---
.../gravitino-iceberg-rest-server/Chart.yaml | 2 +-
.../resources/gravitino-iceberg-rest-server.conf | 83 ++++++++++++++++++++++
.../templates/tests/test-connection.yaml | 2 +-
.../gravitino-iceberg-rest-server/values.yaml | 71 ++++++++++++++++++
dev/charts/gravitino/Chart.yaml | 2 +-
.../gravitino/resources/config/gravitino.conf | 82 +++++++++++++++++++++
dev/charts/gravitino/values.yaml | 70 ++++++++++++++++++
7 files changed, 309 insertions(+), 3 deletions(-)
diff --git a/dev/charts/gravitino-iceberg-rest-server/Chart.yaml
b/dev/charts/gravitino-iceberg-rest-server/Chart.yaml
index 6c0ae7c90d..9c1600a75a 100644
--- a/dev/charts/gravitino-iceberg-rest-server/Chart.yaml
+++ b/dev/charts/gravitino-iceberg-rest-server/Chart.yaml
@@ -42,4 +42,4 @@ sources:
-
https://github.com/apache/gravitino/tree/main/dev/charts/gravitino-iceberg-rest-server
appVersion: 1.0.0-SNAPSHOT
-version: 1.0.1
+version: 1.0.2
diff --git
a/dev/charts/gravitino-iceberg-rest-server/resources/gravitino-iceberg-rest-server.conf
b/dev/charts/gravitino-iceberg-rest-server/resources/gravitino-iceberg-rest-server.conf
index 90917e6fe6..c8b2ea40bb 100755
---
a/dev/charts/gravitino-iceberg-rest-server/resources/gravitino-iceberg-rest-server.conf
+++
b/dev/charts/gravitino-iceberg-rest-server/resources/gravitino-iceberg-rest-server.conf
@@ -47,6 +47,89 @@ gravitino.iceberg-rest.catalog-backend = {{
.Values.icebergRest.catalogBackend |
# The warehouse directory of Iceberg catalog
gravitino.iceberg-rest.warehouse = {{ .Values.icebergRest.warehouse | default
"/tmp/" }}
+{{- if .Values.icebergRest.uri }}
+gravitino.iceberg-rest.uri = {{ .Values.icebergRest.uri }}
+{{- end }}
+{{- if .Values.icebergRest.catalogBackendName }}
+gravitino.iceberg-rest.catalog-backend-name = {{
.Values.icebergRest.catalogBackendName }}
+{{- end }}
+{{- if .Values.icebergRest.ioImpl }}
+gravitino.iceberg-rest.io-impl = {{ .Values.icebergRest.ioImpl }}
+{{- end }}
+{{- if .Values.icebergRest.credentialProviders }}
+gravitino.iceberg-rest.credential-providers = {{
.Values.icebergRest.credentialProviders }}
+{{- end }}
+
+{{- if .Values.icebergRest.jdbc }}
+# JDBC catalog backend
+gravitino.iceberg-rest.jdbc-user = {{.Values.icebergRest.jdbc.user }}
+gravitino.iceberg-rest.jdbc-password = {{.Values.icebergRest.jdbc.password }}
+gravitino.iceberg-rest.jdbc-driver = {{.Values.icebergRest.jdbc.driver }}
+{{- if .Values.icebergRest.jdbc.initialize }}
+gravitino.iceberg-rest.jdbc-initialize = {{.Values.icebergRest.jdbc.initialize
}}
+{{- end }}
+{{- end }}
+
+{{- if .Values.icebergRest.s3 }}
+# S3 storage
+gravitino.iceberg-rest.s3-access-key-id = {{.Values.icebergRest.s3.accessKeyId
}}
+gravitino.iceberg-rest.s3-secret-access-key =
{{.Values.icebergRest.s3.secretAccessKey }}
+{{- if .Values.icebergRest.s3.endpoint }}
+gravitino.iceberg-rest.s3-endpoint = {{.Values.icebergRest.s3.endpoint }}
+{{- end }}
+{{- if .Values.icebergRest.s3.region }}
+gravitino.iceberg-rest.s3-region = {{.Values.icebergRest.s3.region }}
+{{- end }}
+{{- if .Values.icebergRest.s3.pathStyleAccess }}
+gravitino.iceberg-rest.s3-path-style-access =
{{.Values.icebergRest.s3.pathStyleAccess }}
+{{- end }}
+{{- if .Values.icebergRest.s3.roleArn }}
+gravitino.iceberg-rest.s3-role-arn = {{.Values.icebergRest.s3.roleArn }}
+{{- end }}
+{{- if .Values.icebergRest.s3.externalId }}
+gravitino.iceberg-rest.s3-external-id = {{.Values.icebergRest.s3.externalId }}
+{{- end }}
+{{- if .Values.icebergRest.s3.tokenServiceEndpoint }}
+gravitino.iceberg-rest.s3-token-service-endpoint =
{{.Values.icebergRest.s3.tokenServiceEndpoint }}
+{{- end }}
+{{- end }}
+
+{{- if .Values.icebergRest.oss }}
+# OSS storage
+gravitino.iceberg-rest.oss-access-key-id =
{{.Values.icebergRest.oss.accessKeyId }}
+gravitino.iceberg-rest.oss-secret-access-key =
{{.Values.icebergRest.oss.secretAccessKey }}
+{{- if .Values.icebergRest.oss.endpoint }}
+gravitino.iceberg-rest.oss-endpoint = {{.Values.icebergRest.oss.endpoint }}
+{{- end }}
+{{- if .Values.icebergRest.oss.region }}
+gravitino.iceberg-rest.oss-region = {{.Values.icebergRest.oss.region }}
+{{- end }}
+{{- if .Values.icebergRest.oss.roleArn }}
+gravitino.iceberg-rest.oss-role-arn = {{.Values.icebergRest.oss.roleArn }}
+{{- end }}
+{{- if .Values.icebergRest.oss.externalId }}
+gravitino.iceberg-rest.oss-external-id = {{.Values.icebergRest.oss.externalId
}}
+{{- end }}
+{{- end }}
+
+{{- if .Values.icebergRest.azure }}
+# Azure storage
+gravitino.iceberg-rest.azure-storage-account-name =
{{.Values.icebergRest.azure.storageAccountName }}
+gravitino.iceberg-rest.azure-storage-account-key =
{{.Values.icebergRest.azure.storageAccountKey }}
+gravitino.iceberg-rest.azure-tenant-id = {{.Values.icebergRest.azure.tenantId
}}
+gravitino.iceberg-rest.azure-client-id = {{.Values.icebergRest.azure.clientId
}}
+gravitino.iceberg-rest.azure-client-secret =
{{.Values.icebergRest.azure.clientSecret }}
+{{- end }}
+
+{{- if .Values.icebergRest.catalogConfigProvider }}
+gravitino.iceberg-rest.catalog-config-provider = {{
.Values.icebergRest.catalogConfigProvider }}
+{{- end }}
+{{- if .Values.icebergRest.dynamicConfigProvider }}
+gravitino.iceberg-rest.gravitino-uri = {{
.Values.icebergRest.dynamicConfigProvider.uri }}
+gravitino.iceberg-rest.gravitino-metalake = {{
.Values.icebergRest.dynamicConfigProvider.metalake }}
+gravitino.iceberg-rest.default-catalog-name = {{
.Values.icebergRest.dynamicConfigProvider.defaultCatalogName }}
+{{- end }}
+
{{- range $key, $val := .Values.additionalConfigItems }}
{{ $key }} = {{ tpl $val $ }}
{{- end }}
\ No newline at end of file
diff --git
a/dev/charts/gravitino-iceberg-rest-server/templates/tests/test-connection.yaml
b/dev/charts/gravitino-iceberg-rest-server/templates/tests/test-connection.yaml
index 5f60976746..5ecdf90710 100644
---
a/dev/charts/gravitino-iceberg-rest-server/templates/tests/test-connection.yaml
+++
b/dev/charts/gravitino-iceberg-rest-server/templates/tests/test-connection.yaml
@@ -39,7 +39,7 @@ spec:
while [ $attempt -lt $max_attempts ]; do
response=$(curl -X GET -H "Content-Type: application/json"
http://${SERVICE_NAME}:${SERVICE_PORT}/iceberg/v1/config)
- if echo "$response" | grep -q
"{\"defaults\":{},\"overrides\":{}}"; then
+ if echo "$response" | grep -q "endpoints"; then
success=true
break
else
diff --git a/dev/charts/gravitino-iceberg-rest-server/values.yaml
b/dev/charts/gravitino-iceberg-rest-server/values.yaml
index 9d92c27cc4..100efb305a 100644
--- a/dev/charts/gravitino-iceberg-rest-server/values.yaml
+++ b/dev/charts/gravitino-iceberg-rest-server/values.yaml
@@ -60,6 +60,77 @@ icebergRest:
catalogBackend: memory
## The warehouse directory of Iceberg catalog for Iceberg REST service
warehouse: /tmp/
+ # warehouse: s3://iceberg-test/iceberg-docker
+ ## Name of the Iceberg catalog backend
+ ##
+ # catalogBackendName: memory
+ ## URI for connecting to the catalog backend (e.g., Hive Metastore Thrift
URI)
+ ##
+ # uri: thrift://localhost:9083
+ ## JDBC connection configuration for jdbc catalog backend (if applicable)
+ ##
+ # jdbc:
+ # user: "user name"
+ # password: "password"
+ # ## Whether to initialize the Iceberg meta tables in RDBMS
+ # ##
+ # initialize: True
+ # ## JDBC driver class name
+ # ##
+ # driver: "com.mysql.cj.jdbc.Driver"
+ ## Implementation class for Iceberg file I/O operations
+ ##
+ # ioImpl: "org.apache.iceberg.aws.s3.S3FileIO"
+ ## Comma-separated list of credential providers.
+ ##
+ # credentialProviders: "s3-token"
+ ## S3 storage configuration
+ ##
+ # s3:
+ # accessKeyId: ""
+ # secretAccessKey: ""
+ # ## Whether to use path-style access instead of virtual hosted-style
access
+ # ##
+ # pathStyleAccess:
+ # roleArn:
+ # endpoint:
+ # region:
+ # externalId:
+ # tokenServiceEndpoint:
+ ## OSS storage configuration
+ ##
+ # oss:
+ # accessKeyId: ""
+ # secretAccessKey: ""
+ # endpoint: ""
+ # region: ""
+ # roleArn:
+ # externalId:
+ ## Azure Blob Storage configuration
+ ##
+ # azure:
+ # storageAccountName: ""
+ # storageAccountKey: ""
+ # tenantId: ""
+ # clientId: ""
+ # clientSecret: ""
+ ## No need to configure extra Google Cloud Storage configuration
+ ##
+ ## Catalog configuration provider class name
+ ##
+ # catalogConfigProvider: "static-config-provider"
+ ## Dynamic configuration provider settings
+ ##
+ # dynamicConfigProvider:
+ # ## URI of the Gravitino server
+ # ##
+ # uri: "http://localhost:8090"
+ # ## Name of the metalake
+ # ##
+ # metalake: "test"
+ # ## Default catalog name for operations
+ # ##
+ # defaultCatalogName: "catalog name"
# Rest backend configs.
additionalConfigItems: {}
diff --git a/dev/charts/gravitino/Chart.yaml b/dev/charts/gravitino/Chart.yaml
index fda8201aa8..bdf24033ab 100644
--- a/dev/charts/gravitino/Chart.yaml
+++ b/dev/charts/gravitino/Chart.yaml
@@ -40,4 +40,4 @@ maintainers:
name: gravitino
sources:
- https://github.com/apache/gravitino
-version: 1.0.2
+version: 1.0.3
diff --git a/dev/charts/gravitino/resources/config/gravitino.conf
b/dev/charts/gravitino/resources/config/gravitino.conf
index 3430f5d71f..f237afe321 100644
--- a/dev/charts/gravitino/resources/config/gravitino.conf
+++ b/dev/charts/gravitino/resources/config/gravitino.conf
@@ -84,6 +84,88 @@ gravitino.iceberg-rest.host = {{ .Values.icebergRest.host |
default "0.0.0.0" }}
gravitino.iceberg-rest.httpPort = {{ .Values.icebergRest.httpPort | default
9001 }}
gravitino.iceberg-rest.catalog-backend = {{ .Values.icebergRest.catalogBackend
| default "memory" }}
gravitino.iceberg-rest.warehouse = {{ .Values.icebergRest.warehouse | default
"/tmp/" }}
+{{- if .Values.icebergRest.uri }}
+gravitino.iceberg-rest.uri = {{ .Values.icebergRest.uri }}
+{{- end }}
+{{- if .Values.icebergRest.catalogBackendName }}
+gravitino.iceberg-rest.catalog-backend-name = {{
.Values.icebergRest.catalogBackendName }}
+{{- end }}
+{{- if .Values.icebergRest.ioImpl }}
+gravitino.iceberg-rest.io-impl = {{ .Values.icebergRest.ioImpl }}
+{{- end }}
+{{- if .Values.icebergRest.credentialProviders }}
+gravitino.iceberg-rest.credential-providers = {{
.Values.icebergRest.credentialProviders }}
+{{- end }}
+
+{{- if .Values.icebergRest.jdbc }}
+# JDBC catalog backend
+gravitino.iceberg-rest.jdbc-user = {{.Values.icebergRest.jdbc.user }}
+gravitino.iceberg-rest.jdbc-password = {{.Values.icebergRest.jdbc.password }}
+gravitino.iceberg-rest.jdbc-driver = {{.Values.icebergRest.jdbc.driver }}
+{{- if .Values.icebergRest.jdbc.initialize }}
+gravitino.iceberg-rest.jdbc-initialize = {{.Values.icebergRest.jdbc.initialize
}}
+{{- end }}
+{{- end }}
+
+{{- if .Values.icebergRest.s3 }}
+# S3 storage
+gravitino.iceberg-rest.s3-access-key-id = {{.Values.icebergRest.s3.accessKeyId
}}
+gravitino.iceberg-rest.s3-secret-access-key =
{{.Values.icebergRest.s3.secretAccessKey }}
+{{- if .Values.icebergRest.s3.endpoint }}
+gravitino.iceberg-rest.s3-endpoint = {{.Values.icebergRest.s3.endpoint }}
+{{- end }}
+{{- if .Values.icebergRest.s3.region }}
+gravitino.iceberg-rest.s3-region = {{.Values.icebergRest.s3.region }}
+{{- end }}
+{{- if .Values.icebergRest.s3.pathStyleAccess }}
+gravitino.iceberg-rest.s3-path-style-access =
{{.Values.icebergRest.s3.pathStyleAccess }}
+{{- end }}
+{{- if .Values.icebergRest.s3.roleArn }}
+gravitino.iceberg-rest.s3-role-arn = {{.Values.icebergRest.s3.roleArn }}
+{{- end }}
+{{- if .Values.icebergRest.s3.externalId }}
+gravitino.iceberg-rest.s3-external-id = {{.Values.icebergRest.s3.externalId }}
+{{- end }}
+{{- if .Values.icebergRest.s3.tokenServiceEndpoint }}
+gravitino.iceberg-rest.s3-token-service-endpoint =
{{.Values.icebergRest.s3.tokenServiceEndpoint }}
+{{- end }}
+{{- end }}
+
+{{- if .Values.icebergRest.oss }}
+# OSS storage
+gravitino.iceberg-rest.oss-access-key-id =
{{.Values.icebergRest.oss.accessKeyId }}
+gravitino.iceberg-rest.oss-secret-access-key =
{{.Values.icebergRest.oss.secretAccessKey }}
+{{- if .Values.icebergRest.oss.endpoint }}
+gravitino.iceberg-rest.oss-endpoint = {{.Values.icebergRest.oss.endpoint }}
+{{- end }}
+{{- if .Values.icebergRest.oss.region }}
+gravitino.iceberg-rest.oss-region = {{.Values.icebergRest.oss.region }}
+{{- end }}
+{{- if .Values.icebergRest.oss.roleArn }}
+gravitino.iceberg-rest.oss-role-arn = {{.Values.icebergRest.oss.roleArn }}
+{{- end }}
+{{- if .Values.icebergRest.oss.externalId }}
+gravitino.iceberg-rest.oss-external-id = {{.Values.icebergRest.oss.externalId
}}
+{{- end }}
+{{- end }}
+
+{{- if .Values.icebergRest.azure }}
+# Azure storage
+gravitino.iceberg-rest.azure-storage-account-name =
{{.Values.icebergRest.azure.storageAccountName }}
+gravitino.iceberg-rest.azure-storage-account-key =
{{.Values.icebergRest.azure.storageAccountKey }}
+gravitino.iceberg-rest.azure-tenant-id = {{.Values.icebergRest.azure.tenantId
}}
+gravitino.iceberg-rest.azure-client-id = {{.Values.icebergRest.azure.clientId
}}
+gravitino.iceberg-rest.azure-client-secret =
{{.Values.icebergRest.azure.clientSecret }}
+{{- end }}
+
+{{- if .Values.icebergRest.catalogConfigProvider }}
+gravitino.iceberg-rest.catalog-config-provider = {{
.Values.icebergRest.catalogConfigProvider }}
+{{- end }}
+{{- if .Values.icebergRest.dynamicConfigProvider }}
+gravitino.iceberg-rest.gravitino-uri = {{
.Values.icebergRest.dynamicConfigProvider.uri }}
+gravitino.iceberg-rest.gravitino-metalake = {{
.Values.icebergRest.dynamicConfigProvider.metalake }}
+gravitino.iceberg-rest.default-catalog-name = {{
.Values.icebergRest.dynamicConfigProvider.defaultCatalogName }}
+{{- end }}
# Audit log configuration
gravitino.audit.enabled = {{ .Values.audit.enabled }}
diff --git a/dev/charts/gravitino/values.yaml b/dev/charts/gravitino/values.yaml
index 04d05ed11e..fc0ecd8e94 100644
--- a/dev/charts/gravitino/values.yaml
+++ b/dev/charts/gravitino/values.yaml
@@ -194,6 +194,76 @@ icebergRest:
## The warehouse directory of Iceberg catalog for Iceberg REST service
##
warehouse: /tmp/
+ ## Name of the Iceberg catalog backend
+ ##
+ # catalogBackendName: memory
+ ## URI for connecting to the catalog backend (e.g., Hive Metastore Thrift
URI)
+ ##
+ # uri: thrift://localhost:9083
+ ## JDBC connection configuration for jdbc catalog backend (if applicable)
+ ##
+ # jdbc:
+ # user: "user name"
+ # password: "password"
+ # ## Whether to initialize the Iceberg meta tables in RDBMS
+ # ##
+ # initialize: True
+ # ## JDBC driver class name
+ # ##
+ # driver: "com.mysql.cj.jdbc.Driver"
+ ## Implementation class for Iceberg file I/O operations
+ ##
+ # ioImpl: "org.apache.iceberg.aws.s3.S3FileIO"
+ ## Comma-separated list of credential providers.
+ ##
+ # credentialProviders: "s3-token"
+ ## S3 storage configuration
+ ##
+ # s3:
+ # accessKeyId: ""
+ # secretAccessKey: ""
+ # ## Whether to use path-style access instead of virtual hosted-style
access
+ # ##
+ # pathStyleAccess:
+ # roleArn:
+ # endpoint:
+ # region:
+ # externalId:
+ # tokenServiceEndpoint:
+ ## OSS storage configuration
+ ##
+ # oss:
+ # accessKeyId: ""
+ # secretAccessKey: ""
+ # endpoint: ""
+ # region: ""
+ # roleArn:
+ # externalId:
+ ## Azure Blob Storage configuration
+ ##
+ # azure:
+ # storageAccountName: ""
+ # storageAccountKey: ""
+ # tenantId: ""
+ # clientId: ""
+ # clientSecret: ""
+ ## No need to configure extra Google Cloud Storage configuration
+ ##
+ ## Catalog configuration provider class name
+ ##
+ # catalogConfigProvider: "static-config-provider"
+ ## Dynamic configuration provider settings
+ ##
+ # dynamicConfigProvider:
+ # ## URI of the Gravitino server
+ # ##
+ # uri: "http://localhost:8090"
+ # ## Name of the metalake
+ # ##
+ # metalake: "test"
+ # ## Default catalog name for operations
+ # ##
+ # defaultCatalogName: "catalog name"
## Authentication mechanisms configuration. Support simple, OAuth and Kerberos.
##