Typhoon is a minimal and free Kubernetes distribution.
- Minimal, stable base Kubernetes distribution
- Declarative infrastructure and configuration
- Free (freedom and cost) and privacy-respecting
- Practical for labs, datacenters, and clouds
Typhoon distributes upstream Kubernetes, architectural conventions, and cluster addons, much like a GNU/Linux distribution provides the Linux kernel and userspace components.
- Kubernetes v1.9.2 (upstream, via kubernetes-incubator/bootkube)
- Single or multi-master, workloads isolated on workers, Calico or flannel networking
- On-cluster etcd with TLS, RBAC-enabled, network policy
- Ready for Ingress, Dashboards, Metrics, and other optional addons
Please see the official docs and the Digital Ocean tutorial. Read concepts to learn about Terraform, modules, and organizing resources.
Install terraform on your system:
$ brew install terraform
Add the terraform-provider-ct plugin binary for your system:
$ wget https://github.com/coreos/terraform-provider-ct/releases/download/v0.2.0/terraform-provider-ct-v0.2.0-darwin-amd64.tar.gz
$ tar xzf terraform-provider-ct-v0.2.0-darwin-amd64.tar.gz
$ mv terraform-provider-ct-v0.2.0-darwin-amd64/terraform-provider-ct /usr/local/bin/
Add the plugin to your ~/.terraformrc:
providers {
ct = "/usr/local/bin/terraform-provider-ct"
}
Initial bootstrapping requires bootkube.service be started on one controller node. Terraform uses ssh-agent to automate this step. Add your SSH private key to ssh-agent:
$ ssh-add ~/.ssh/digital-ocean-hanzo
$ ssh-add -L
Initialize the config directory if this is the first use with Terraform:
$ make init
Get or update Terraform modules:
$ terraform get # downloads missing modules
$ terraform get --update # updates all modules
Get: git::https://github.com/poseidon/typhoon (update)
Get: git::https://github.com/poseidon/bootkube-terraform.git?ref=v0.10.0 (update)
Plan the resources to be created:
$ make plan
Plan: 54 to add, 0 to change, 0 to destroy.
Apply the changes to create the cluster:
$ make apply
module.digital-ocean-nemo.null_resource.bootkube-start: Still creating... (30s elapsed)
module.digital-ocean-nemo.null_resource.bootkube-start: Provisioning with 'remote-exec'...
...
module.digital-ocean-nemo.null_resource.bootkube-start: Still creating... (6m20s elapsed)
module.digital-ocean-nemo.null_resource.bootkube-start: Creation complete (ID: 7599298447329218468)
Apply complete! Resources: 54 added, 0 changed, 0 destroyed.
In 3-6 minutes, the Kubernetes cluster will be ready.