How to manage multiple kubernetes clusters via Terraform?

9/9/2019

I want to create a secret in several k8s clusters in the Google Kubernetes Engine using the Terraform.

I know that I can use "host", "token" and some else parameters in "kubernetes" provider, but I can describe these parameters only once, and I don’t know how to connect to another cluster during the file of terraform.

My question is how to create a secret (or do other operations) in multiple k8s cluster via Terraform. Maybe you know some tools on github or other tips for doing via single terraform file?

-- Stepan K.
google-kubernetes-engine
kubernetes
terraform

1 Answer

9/9/2019

You can use alias for provider in terraform like described in documentation

So you can define multiple providers for multiple k8s clusters and then refer them by alias.

e.g.

provider "kubernetes" {
  config_context_auth_info = "ops1"
  config_context_cluster   = "mycluster1"
  alias = "cluster1"
}

provider "kubernetes" {
  config_context_auth_info = "ops2"
  config_context_cluster   = "mycluster2"
  alias = "cluster2"
}

resource "kubernetes_secret" "example" {
  ...
  provider = kubernetes.cluster1
}
-- Jakub Bujny
Source: StackOverflow