2-Nov-2021

Introducing Kubeform v2021.10.29

by Sahadat Hossain

We have an upcoming webinar titled “Introducing Kubeform CLI & Remote Backend” on 10th November 2021, 12:30 PM ET. Register here .

We are happy to announce the release of Kubeform v2021.10.29. In this release, we are introducing Kubeform CLI and Remote Backend.

This post lists all the changes and features this release brings to you. The detailed changelog can be found here

  • Kubeform Remote Backend
  • Kubeform CLI

Kubeform Remote Backend

In this release, we have added remote backend support for the Kubeform resources. It is equivalent to Terraform Remote Backend support. There are two types of backend, one is local and another one is remote. The default is local backend, in this case the resource state is stored in the .spec.state of the resource. Using a remote backend, We can store the resource state in cloud buckets, and can use it further from the stored location. Remote backends allow the use of a shared storage space for resource state. The resource state can be maintained remotely, such as google bucket, amazon s3 bucket, etc. Now, We can use local or remote backend and can switch from local backend to remote backend in the middle. Kubeform supports almost all top cloud providers as remote backend, such as s3, gcs, azure, pg, http, manta, artifactory, consul, cos, swift, inmem etc.

Example

If we want to provision and manage a Linode Instance using Kubeform remote backend then the steps will be as like below:

At first, We need to provide the configuration of the remote backend in a Kubernetes secret, later we will refer this secret from the resource configuration. Here, We are using an AWS S3 bucket. The Configuration is:

apiVersion: v1
kind: Secret
metadata:
  name: backend-secret
stringData:
  s3: |
    {
        "bucket": "kubeform-remote-backend-demo",
        "key": "kubeform/terraform.tfstate",
        "region": "us-east-2",
        "access_key": "",
        "secret_key": ""
    }    

Note: Only one bucket configuration is allowed. The bucket configuration needs to be under the bucket name key in the stringData field of a Kubernetes secret. This configuration under the s3 key needs to be in json format.

Now, In the Linode Instance configuration we need to refer our remote backend configuration in backendRef field. The Linode Instance configuration is given below. Here in the backendRef we have given the backend-secret which is holding the S3 remote backend configuration.

apiVersion: instance.linode.kubeform.com/v1alpha1
kind: Instance
metadata:
  name: kubeform-instance
spec:
  resource:
    region: us-east
    image: linode/ubuntu18.04
    label: kubeform-demo
  providerRef:
    name: linode-credentials
  secretRef:
    name: linode-sensitive-secret
  terminationPolicy: Delete
  updatePolicy: DoNotDestroy
  backendRef:
    name: backend-secret

After applying this, a Linode Instance will be created which will use given AWS S3 bucket as the remote backend to store its state data.

Kubeform CLI

In this release, We have introduced the Kubeform CLI. Currently, We have added the get-tf command to generate Terraform .tf files from the kubeform resources. Two files will be generated by get-tf command, one is main.tf which is the exact conversion from Kubeform resource to Terraform HCL configuration, and another one is terraform.tfstate which is the resource state. These two files are equivalent to the Terraform configuration file of the respective Kubeform resource. After generating these files we can apply them from Terraform. There is a directory flag, which takes a path where it stores the generated two files (main.tf and terraform.tfstate). If the directory flag is not given then Kubeform CLI will print the generated files data in the terminal.

Example

kubectl kf get-tf <resource> <resource_name> -n <resource_namespace> -d <path_to_store_generated_files>

This will generate main.tf and terraform.tfstate files of the given resource in the given path.

Note: Expected resource’s phase must need to be current to get the Terraform .tf files.

Upcoming Features

  • Terraform Module Support in Kubeform.
  • A CLI command to check the execution plan of the Kubeform resources. Using this plan, you will know the configuration of a resource that will be created by Kubeform, the changes in a resource when updating the resource configuration, etc.
  • Halt and Resume resources. Using this feature, you can keep a resource in the Kubernetes, but terminate the actual cloud resource. Then, when you need the resource again, you can just resume the resource and the same resource will be created again!
  • Seamless integration with KubeDB. KubeDB is a product by AppsCode that simplifies and automates routine database tasks such as provisioning, patching, backup, recovery, failure detection, and repair for various popular databases on private and public clouds. This integration will allow users to provision cloud buckets, deploy databases in Kubernetes, then take backups in the bucket and configure VPC/Firewall settings as appropriate using Kubernetes custom resources.

What Next?

Please try the latest release and give us your valuable feedback.

  • If you want to install Kubeform, please follow the installation instruction from here.

Support

To speak with us, please leave a message on our website.

To join public discussions with the Kubeform community, join us in the AppsCode Slack team channel #Kubeform. To sign up, use our Slack inviter.

To receive product announcements, follow us on Twitter.

If you have found a bug with Kubeform or want to request for new features, please file an issue.

Get Up and Running Quickly

Deploy, manage, upgrade Kubernetes on any cloud and automate deployment, scaling, and management of containerized applications.