Managing Kubernetes objects on GKE with Terraform

Felipe Martinez
2 min readNov 23, 2019

--

It is well known that Infrastructure as code help you to have a more reliable and reproducible environment.

Terraform has several providers to interact with infrastructure, and one of them is the Kubernetes provider.

Authentication

There are generally two ways to configure the Kubernetes provider.

By default, Terraform will try to load the credentials~/.kube/config , so you will not need to set any other information in the provider:

provider "kubernetes" {
}

Depending on whether you have the current context set this may require config_context_auth_info and/or config_context_cluster and/or config_context as:

provider "kubernetes" {
config_context_auth_info = "ops"
config_context_cluster = "mycluster"
}

The other way is when you statically define TLS certificate credentials:

provider "kubernetes" {
host = "https://104.196.242.174"

client_certificate = "${file("~/.kube/client-cert.pem")}"
client_key = "${file("~/.kube/client-key.pem")}"
cluster_ca_certificate = "${file("~/.kube/cluster-ca-cert.pem")}"
}

or with username and password

provider "kubernetes" {
host = "https://104.196.242.174"

username = "username"
password = "password"
}

Managing namespaces on GKE

For this example, we are going to create namespaces from Terraform:

First, you will need to fetch the credentials from your cluster.

gcloud beta container clusters get-credentials <cluster_name> --region <region> --project <project_id>

Let’s create our file provider.tf with the latest provider version

provider "kubernetes" {
version = "1.10"
}

And the namespaces.tf file:

resource "kubernetes_namespace" "app" {
metadata {
labels = {
name = "app"
}
name = "app"
}
}

That's it! really simple isn’t it?

Conclusion

It is really useful when you are already managing your K8s cluster with Terraform, so you can start managing the K8s configuration as well.

You can find more examples here and also other resources as Pod, Ingress, Role, Secret, etc

Let me know your thoughts!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Felipe Martinez
Felipe Martinez

No responses yet

Write a response