Terraform Kubernetes Provider
Go Shell
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.idea
kubernetes
schema
vendor
.gitignore
README.md
build.sh
init.sh
install.sh
main.go
terraform-provider-kubernetes.iml

README.md

Terraform Kubernetes Provider

This is a plugin for HashiCorp Terraform, which helps deploying Kubernetes resources like pods, services, replication controllers, etc.

Usage

  • Download the plugin from Releases page.
  • Install it, or put into a directory with configuration files.
  • Create a sample configuration file example.tf:
provider "k8s" {
  # Either "k8s" provider or "k8s_cluster" resource should be configured

  # Kubernetes API server, both HTTP and HTTPS are supported
  api_server = "https://192.168.0.1:6443"

  # TLS options are optional, see "tls" Terraform provider (built-in) for certificates/keys generating
  ca_cert = "<CA certificate content (PEM)>"
  client_cert = "<client certificate content (PEM)>"
  client_key = "<client private key content (PEM)>"
}

resource "k8s_cluster" "main" {
  # Either "k8s" provider or "k8s_cluster" resource should be configured

  # Kubernetes API server, both HTTP and HTTPS are supported
  api_server = "https://192.168.0.1:6443"

  # TLS options are optional, see "tls" Terraform provider (built-in) for certificates/keys generating
  ca_cert = "<CA certificate content (PEM)>"
  client_cert = "<client certificate content (PEM)>"
  client_key = "<client private key content (PEM)>"
}

resource "k8s_resource" "mypod" {
  # Optional; if specified, must link on the corresponding "k8s_cluster" resource; otherwise provider configuration is used
  cluster = "${k8s_cluster.main.cluster}"

  # Required; resource contents must be in JSON or YAML format
  contents = "${file("mypod.yaml")}"

  # Optional; specifies "contents" format; possible values are "yaml" (default) and "json"
  encoding = "yaml"
}
  • Run:
$ terraform apply