Merge branch 'master' into add_output

This commit is contained in:
Karim Naufal 2022-01-13 20:29:41 +00:00 committed by GitHub
commit 68c3dba9e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 86 additions and 26 deletions

3
.gitignore vendored
View File

@ -1,6 +1,9 @@
.terraform*
*.tfstate*
crash.log
hetzner/ccm/kustomization.yaml
hetzner/csi/kustomization.yaml
kubeconfig.yaml
kubeconfig.yaml-e
terraform.tfvars
templates/rendered/traefik_config.yaml

View File

@ -63,7 +63,7 @@ _The Hetzner cli `hcloud` is also useful to have, mainly for debugging without h
1. Create a project in your [Hetzner Cloud Console](https://console.hetzner.cloud/), and go to **Security > API Tokens** of that project to grab the API key. Take note of the key! ✅
2. Generate an ssh key pair for your cluster, unless you already have one that you'd like to use (ed25519 is the ideal type). Take note of the respective paths of your private and public keys! ✅
3. Rename `terraform.tfvars.example` to `terraform.tfvars`, and replace the values from steps 1 and 2. ✅
3. Copy `terraform.tfvars.example` to `terraform.tfvars`, and replace the values from steps 1 and 2. ✅
4. (Optional) There are other variables in `terraform.tfvars` that could be customized, like Hetzner region, and the node counts and sizes.
### 🎯 Installation
@ -134,8 +134,8 @@ kubectl label node <nodename> 'k3os.io/upgrade'-
If you want to takedown the cluster, you can proceed as follows:
```sh
kubectl delete -k hetzer/csi
kubectl delete -k hetzer/ccm
kubectl delete -k hetzner/csi
kubectl delete -k hetzner/ccm
hcloud load-balancer delete traefik
terraform destroy -auto-approve
```

16
data.tf
View File

@ -1,3 +1,19 @@
data "hcloud_load_balancer" "lb11" {
name = "traefik"
}
data "github_release" "hetzner_ccm" {
repository = "hcloud-cloud-controller-manager"
owner = "hetznercloud"
retrieve_by = "latest"
}
data "github_release" "hetzner_csi" {
repository = "csi-driver"
owner = "hetznercloud"
retrieve_by = "latest"
}
data "hcloud_image" "linux" {
name = local.hcloud_image_name
}

View File

@ -1,8 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/latest/download/ccm-networks.yaml
patchesStrategicMerge:
- patch.yaml

View File

@ -1,8 +0,0 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://raw.githubusercontent.com/hetznercloud/csi-driver/master/deploy/kubernetes/hcloud-csi.yml
patchesStrategicMerge:
- patch.yaml

20
main.tf
View File

@ -144,8 +144,22 @@ resource "hcloud_firewall" "k3s" {
}
data "hcloud_image" "linux" {
name = local.hcloud_image_name
resource "local_file" "hetzner_ccm_config" {
content = templatefile("${path.module}/templates/hetzner_ccm.yaml.tpl", {
ccm_version = var.hetzner_ccm_version != null ? var.hetzner_ccm_version : data.github_release.hetzner_ccm.release_tag
})
filename = "${path.module}/hetzner/ccm/kustomization.yaml"
file_permission = "0644"
directory_permission = "0755"
}
resource "local_file" "hetzner_csi_config" {
content = templatefile("${path.module}/templates/hetzner_csi.yaml.tpl", {
csi_version = var.hetzner_csi_version != null ? var.hetzner_csi_version : data.github_release.hetzner_csi.release_tag
})
filename = "${path.module}/hetzner/csi/kustomization.yaml"
file_permission = "0644"
directory_permission = "0755"
}
resource "local_file" "traefik_config" {
@ -154,4 +168,6 @@ resource "local_file" "traefik_config" {
location = var.location
})
filename = "${path.module}/templates/rendered/traefik_config.yaml"
file_permission = "0644"
directory_permission = "0755"
}

View File

@ -52,9 +52,9 @@ resource "hcloud_server" "first_control_plane" {
provisioner "local-exec" {
command = <<-EOT
kubectl -n kube-system create secret generic hcloud --from-literal=token=${var.hcloud_token} --from-literal=network=${hcloud_network.k3s.name} --kubeconfig ${path.module}/kubeconfig.yaml
kubectl apply -k ${path.module}/hetzner/ccm --kubeconfig ${path.module}/kubeconfig.yaml
kubectl apply -k ${dirname(local_file.hetzner_ccm_config.filename)} --kubeconfig ${path.module}/kubeconfig.yaml
kubectl -n kube-system create secret generic hcloud-csi --from-literal=token=${var.hcloud_token} --kubeconfig ${path.module}/kubeconfig.yaml
kubectl apply -k ${path.module}/hetzner/csi --kubeconfig ${path.module}/kubeconfig.yaml
kubectl apply -k ${dirname(local_file.hetzner_csi_config.filename)} --kubeconfig ${path.module}/kubeconfig.yaml
EOT
}

View File

@ -1,3 +1,7 @@
provider "github" {}
provider "hcloud" {
token = var.hcloud_token
}
provider "local" {}

View File

@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- "https://github.com/hetznercloud/hcloud-cloud-controller-manager/releases/download/${ccm_version}/ccm-networks.yaml"
patchesStrategicMerge:
- patch.yaml

View File

@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- "https://raw.githubusercontent.com/hetznercloud/csi-driver/${csi_version}/deploy/kubernetes/hcloud-csi.yml"
patchesStrategicMerge:
- patch.yaml

View File

@ -1,6 +1,7 @@
variable "hcloud_token" {
description = "Hetzner API tokey"
description = "Hetzner Cloud API Token"
type = string
sensitive = true
}
variable "public_key" {
@ -42,3 +43,15 @@ variable "agents_num" {
description = "Number of agent nodes."
type = number
}
variable "hetzner_ccm_version" {
type = string
default = null
description = "Version of Kubernetes Cloud Controller Manager for Hetzner Cloud"
}
variable "hetzner_csi_version" {
type = string
default = null
description = "Version of Container Storage Interface driver for Hetzner Cloud"
}

View File

@ -1,8 +1,16 @@
terraform {
required_providers {
github = {
source = "integrations/github"
version = ">= 4.0.0, < 5.0.0"
}
hcloud = {
source = "hetznercloud/hcloud"
version = ">= 1.0.0, < 2.0.0"
}
local = {
source = "hashicorp/local"
version = ">= 2.0.0, < 3.0.0"
}
}
}