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

yuqi1129 pushed a commit to branch branch-1.3
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/branch-1.3 by this push:
     new 4f664c316a [Cherry-pick to branch-1.3] [#10929]docs(deploy): Add GCS 
configuration guide for Helm Chart and Docker deployments (#11421) (#11430)
4f664c316a is described below

commit 4f664c316a364fa7bc2a5a536eec7de115932803
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Jun 4 22:17:41 2026 +0800

    [Cherry-pick to branch-1.3] [#10929]docs(deploy): Add GCS configuration 
guide for Helm Chart and Docker deployments (#11421) (#11430)
    
    **Cherry-pick Information:**
    - Original commit: dc87b596dbac377684eee01a6d2851c512f9073e
    - Target branch: `branch-1.3`
    - Status: ✅ Clean cherry-pick (no conflicts)
    
    Co-authored-by: Danhua Wang <[email protected]>
---
 dev/charts/gravitino/values.yaml | 23 +++++++++++++++-
 docs/chart.md                    | 58 +++++++++++++++++++++++++++++++++-------
 docs/how-to-install.md           | 11 ++++++++
 3 files changed, 82 insertions(+), 10 deletions(-)

diff --git a/dev/charts/gravitino/values.yaml b/dev/charts/gravitino/values.yaml
index 640282b74a..9cf5a4f553 100644
--- a/dev/charts/gravitino/values.yaml
+++ b/dev/charts/gravitino/values.yaml
@@ -289,7 +289,11 @@ icebergRest:
   #   tenantId: ""
   #   clientId: ""
   #   clientSecret: ""
-  ## No need to configure extra Google Cloud Storage configuration
+  ## Google Cloud Storage (GCS) configuration
+  ## If your catalog uses GCS as the object store, you must set the
+  ## GOOGLE_APPLICATION_CREDENTIALS environment variable in the container (see 
the "env" section below).
+  ## Mount the service account key file into the pod via 
extraVolumes/extraVolumeMounts.
+  ## No additional Iceberg REST properties are required beyond the credential 
file.
   ##
   ## Catalog configuration provider class name
   ##
@@ -356,12 +360,24 @@ additionalConfigItems: {}
 extraVolumes:
   - name: gravitino-log
     emptyDir: {}
+  ## Uncomment the following to mount a GCS service account key for catalogs 
using GCS as object store.
+  ## Create the secret first: kubectl create secret generic gcs-key 
--from-file=key.json=<path-to-key-file> -n gravitino
+  ##
+  # - name: gcs-key
+  #   secret:
+  #     secretName: gcs-key
 
 ## Additional volume mounts
 ##
 extraVolumeMounts:
   - name: gravitino-log
     mountPath: /opt/gravitino/logs
+  ## Uncomment the following to mount the GCS key into the container.
+  ## Ensure GOOGLE_APPLICATION_CREDENTIALS env is set to /etc/gcs/key.json 
(see env section).
+  ##
+  # - name: gcs-key
+  #   mountPath: /etc/gcs
+  #   readOnly: true
 
 ## ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
 ## If you set enabled as "True", you need :
@@ -532,6 +548,11 @@ containerSecurityContext:
 env:
   - name: GRAVITINO_MEM
     value: "-Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m"
+  ## Uncomment the following if your catalog uses Google Cloud Storage (GCS) 
as the object store.
+  ## You must also mount the service account key file via extraVolumes and 
extraVolumeMounts.
+  ##
+  # - name: GOOGLE_APPLICATION_CREDENTIALS
+  #   value: /etc/gcs/key.json
 
 ## The envWithTpl array below has the same usage as "env", but is using the 
tpl function to support templatable string.
 ## This can be useful when you want to pass dynamic values to the Chart using 
the helm argument "--set <variable>=<value>"
diff --git a/docs/chart.md b/docs/chart.md
index 3fa11fb78a..45b7802ba5 100644
--- a/docs/chart.md
+++ b/docs/chart.md
@@ -27,7 +27,7 @@ helm pull oci://registry-1.docker.io/apache/gravitino-helm 
--version <VERSION>
 Or install directly:
 
 ```console
-helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> -n 
gravitino --create-namespace
+helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> -n 
<NAMESPACE> --create-namespace
 ```
 
 ### Install from Local Repository (For Development or Unreleased Versions)
@@ -48,7 +48,7 @@ helm dependency update gravitino
 Install the chart:
 
 ```console
-helm upgrade --install gravitino ./gravitino -n gravitino --create-namespace
+helm upgrade --install gravitino ./gravitino -n <NAMESPACE> --create-namespace
 ```
 
 ## View Chart Values
@@ -72,7 +72,7 @@ helm upgrade --install [RELEASE_NAME] 
oci://registry-1.docker.io/apache/gravitin
 Run the following command to deploy Gravitino using the default settings:
 
 ```console
-helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> -n 
gravitino --create-namespace
+helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> -n 
<NAMESPACE> --create-namespace
 ```
 
 ### Deploy with Custom Configuration
@@ -81,7 +81,7 @@ To customize the deployment, use the --set flag to override 
specific values:
 
 ```console
 helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> \
-  -n gravitino --create-namespace \
+  -n <NAMESPACE> --create-namespace \
   --set key1=val1,key2=val2,...
 ```
 
@@ -89,7 +89,7 @@ Alternatively, you can provide a custom values.yaml file:
 
 ```console
 helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> \
-  -n gravitino --create-namespace \
+  -n <NAMESPACE> --create-namespace \
   -f /path/to/values.yaml
 ```
 
@@ -99,7 +99,7 @@ To deploy both Gravitino and MySQL, where MySQL is used as 
the storage backend,
 
 ```console
 helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> \
-  -n gravitino --create-namespace \
+  -n <NAMESPACE> --create-namespace \
   --set mysql.enabled=true
 ```
 
@@ -109,7 +109,7 @@ By default, the MySQL PersistentVolumeClaim(PVC) storage 
class is local-path. To
 
 ```console
 helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> \
-  -n gravitino --create-namespace \
+  -n <NAMESPACE> --create-namespace \
   --set mysql.enabled=true \
   --set global.defaultStorageClass="-"
 ```
@@ -130,7 +130,7 @@ Use Helm to install or upgrade Gravitino, specifying the 
MySQL connection detail
 
 ```console
 helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> \
-  -n gravitino --create-namespace \
+  -n <NAMESPACE> --create-namespace \
   --set 
entity.jdbcUrl="jdbc:mysql://database-1.***.***.rds.amazonaws.com:3306/gravitino"
 \
   --set entity.jdbcDriver="com.mysql.cj.jdbc.Driver" \
   --set entity.jdbcUser="admin" \
@@ -142,8 +142,48 @@ Replace database-1.***.***.rds.amazonaws.com with your 
actual MySQL host. \
 Change admin and admin123 to your actual MySQL username and password. \
 Ensure the target MySQL database (gravitino) exists before deployment._
 
+### Deploy Gravitino with GCS as Object Store
+
+If your catalog uses Google Cloud Storage (GCS) as the object store, you need 
to set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable in the 
container and mount the service account key file.
+
+1. Create a Kubernetes secret from your GCS service account key:
+
+```console
+kubectl create secret generic gcs-key 
--from-file=key.json=/path/to/your-service-account-key.json -n <NAMESPACE>
+```
+
+2. Deploy Gravitino with GCS configuration in your custom `values.yaml`:
+
+```yaml
+env:
+  - name: GRAVITINO_MEM
+    value: "-Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m"
+  - name: GOOGLE_APPLICATION_CREDENTIALS
+    value: /etc/gcs/key.json
+
+extraVolumes:
+  - name: gravitino-log
+    emptyDir: {}
+  - name: gcs-key
+    secret:
+      secretName: gcs-key
+
+extraVolumeMounts:
+  - name: gravitino-log
+    mountPath: /opt/gravitino/logs
+  - name: gcs-key
+    mountPath: /etc/gcs
+    readOnly: true
+```
+
+```console
+helm upgrade --install gravitino 
oci://registry-1.docker.io/apache/gravitino-helm --version <VERSION> \
+  -n <NAMESPACE> --create-namespace \
+  -f /path/to/values.yaml
+```
+
 ## Uninstall Helm Chart
 
 ```console
-helm uninstall [RELEASE_NAME] -n [NAMESPACE]
+helm uninstall [RELEASE_NAME] -n <NAMESPACE>
 ```
diff --git a/docs/how-to-install.md b/docs/how-to-install.md
index 13252e2b24..7626beb427 100644
--- a/docs/how-to-install.md
+++ b/docs/how-to-install.md
@@ -150,6 +150,17 @@ curl -v -X GET -H "Accept: 
application/vnd.gravitino.v1+json" -H "Content-Type:
 
 to make sure Gravitino is running.
 
+### Using GCS as Object Store with Docker
+
+If your catalog uses Google Cloud Storage (GCS) as the object store, set the 
`GOOGLE_APPLICATION_CREDENTIALS` environment variable and mount the service 
account key file into the container:
+
+```shell
+docker run -d -i -p 8090:8090 \
+  -v /path/to/your-service-account-key.json:/etc/gcs/key.json:ro \
+  -e GOOGLE_APPLICATION_CREDENTIALS=/etc/gcs/key.json \
+  apache/gravitino:<version>
+```
+
 ## Install Apache Gravitino using Docker compose
 
 The published Gravitino Docker image only contains the Gravitino server with a 
basic configuration. If you want to experience the whole Gravitino system with 
other components, use the Docker `compose` file.

Reply via email to