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.
 ##

Reply via email to