It's easiest if you set up some environment variables.
This example uses direnv with an .envrc
for that,
but you can also just execute the export
statements in your session.
Our .envrc
here looks like this:
export TF_VAR_hcloud_token=THETOKENYOUGETFROMTHECLOUDCONSOLE
export KUBECONFIG=$(pwd)/kubeconfig-k-andy-demo.yaml
The hcloud_token
is an API Token from a Hetzner Cloud project.
We also set KUBECONFIG
so we can later just run kubectl
in here to interact with the created cluster.
If you use direnv
, don't forget to run direnv allow
.
Now you bring up the cluster with terraform and then test if it's there and looking good.
terraform init
terraform apply
kubectl cluster-info
kubectl get node
A demo application can be found in manifests. Run:
kubectl apply -f ../manifests/hello-kubernetes.yaml
and try to access http://<load-balancer-ip>:8080
.
You can find the public IP of the service with kubectl get service hello-kubernetes -o jsonpath='{.status.loadBalancer.ingress}'
If you no longer need the cluster don't forget to destroy it. Load-Balancers and volumes must be deleted manually.
terraform destroy