This guide will show you how to provision a Google Storage Bucket using Kubeform.

Examples used in this guide can be found here.

Look at the Terraform configuration below:

provider "google" {
    credentials = "json Credential"

    project = "Project Name"

    region = "us-central1"

resource "google_storage_bucket" "test1" {
    location = "EU"

    name = "bucket_test1"

    website = {
      main_page_suffix = "index.html"
      not_found_page = "404.html"

This config creates a Google Storage Bucket. We’ll create the exact configuration using Kubeform. The steps are given below:

1. Create CRD:

At first, create the CRD of Google Storage Bucket using the following kubectl command:

$ kubectl apply -f

2. Create Google Provider Secret

Then create the secret which is necessary for provisioning the Storage Bucket in Google.

apiVersion: v1
kind: Secret
  name: google
type: ""
  credentials: <Base64 encoded value of google json service account>
  project: <Base64 encoded value of project name>
  region: dXMtY2VudHJhbDEK # Base64 encoded value of us-central1

Here we can see that, the data of the secret is same as the field of the provider part in the terraform config file. Save it in a file (eg. secret.yaml) then apply it using kubectl.

$ kubectl apply -f secret.yaml

Note: here, data key (eg. project, region etc.) must be in snake case format (same as the tf configuration file)

3. Create Google Storage Bucket

Now, we’ll create the Google Storage Bucket CRD. The yaml is given below:

kind: StorageBucket
  name: test1
  name: bucket_test1
  location: EU
    - mainPageSuffix: index.html
      notFoundPage: 404.html
    name: google

Here, we can see that the provider secret is referenced using a field called providerRef.

Save it in a file (eg. bucket.yaml) then apply it using kubectl.

$ kubectl apply -f bucket.yaml

After that, an Google Storage Bucket will be created!

Delete Google Storage Bucket

To delete the Google Storage Bucket just run:

kubectl delete -f bucket.yaml