-
Oracle Cloud Infrastructure for compute & network
-
Tailscale for mesh VPN
-
Cloudflare for DNS
- Oracle Cloud, Tailscale and Cloudflare accounts set up
- Terraform CLI
- kubectl CLI
- Copy
.env.template
to.env
and fill in the values source .env
to load env variables into the shellterraform init
to initialize the modulesterraform import module.tailscale.tailscale_acl.cluster_acl acl
to import your network ACL stateterraform apply
to deploy the cluster (some errors are expected at this stage)- Wait for all nodes to be registered in your Tailscale network so that
local.is_ready
becomes true terraform apply -target module.helm
to first deploy the CRDs via Helmterraform apply
apply again for DNS to kick in, may still take a while after Cloudflare records are created
terraform output fetch_kubeconfig | xargs | sh
to fetch kubectl config tokubeconfig
fileterraform output merge_kubeconfig | xargs | sh
to mergekubeconfig
file with local~/.kube/config
- (Caution) Overwrite your local
~/.kube/config
file withkubeconfig-merged
file's contents after checking it
- You are out of luck, try again later to see if any free instances are available on Oracle Cloud.
- Apply the helm module first for the CRDs to be created.
terraform apply -target module.helm
- Un/comment
cluster_acl
intailscale/main.tf
depending on if you want to manage your Tailscale network ACL terraform import module.tailscale.tailscale_acl.cluster_acl acl
to import your network ACL state before applying