Running Terraform in Kubernetes as a controller
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
chart/terraformctl
cmd
controller
examples/azure-vmss
parser
rootfs
service
storage
terraform
vendor
.gitignore
Dockerfile
Gopkg.lock
Gopkg.toml
LICENSE
Makefile
README.md
VERSION
diagram1.png
main.go

README.md

Terraformctl

Manage and mutate infrastructure with Terraform by running it in Kubernetes as a controller!

About

This is an example of infrastructure as cloud native software. This repository is not intended to be used in production, but rather offers a starting point for people to start looking at what it would take to run infrastructure as software.

More information can be found on my blog here

Running

Environmental Variables

TERRAFORMCTL_HOSTNAME can be used to override the hostname to use to connect to a listening gRPC server. TERRAFORMCTL_PORT can be used to override the port to use to connect to a listening gRPC server.

Developing

Building and pushing

Sorry but I hard coded everything for a demo.. be ready to hack the Makefile (please open a PR if you want!)

make build push deploy

This also assumes you have Kubernetes up and running already.

Working with the gRPC definitions

You will need to have protoc and grpc installed.

go get google.golang.org/grpc
go get -u github.com/golang/protobuf/protoc-gen-go

Now you can make changes to service/terraformctl.proto and run the following command to update the plugin.

make proto

A change to the gRPC might be needed in service/server.go if the new gRPC expects new logic.