Merge branch 'master' into add_output
This commit is contained in:
commit
68c3dba9e9
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,6 +1,9 @@
|
|||||||
.terraform*
|
.terraform*
|
||||||
*.tfstate*
|
*.tfstate*
|
||||||
crash.log
|
crash.log
|
||||||
|
hetzner/ccm/kustomization.yaml
|
||||||
|
hetzner/csi/kustomization.yaml
|
||||||
kubeconfig.yaml
|
kubeconfig.yaml
|
||||||
|
kubeconfig.yaml-e
|
||||||
terraform.tfvars
|
terraform.tfvars
|
||||||
templates/rendered/traefik_config.yaml
|
templates/rendered/traefik_config.yaml
|
@ -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! ✅
|
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! ✅
|
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.
|
4. (Optional) There are other variables in `terraform.tfvars` that could be customized, like Hetzner region, and the node counts and sizes.
|
||||||
|
|
||||||
### 🎯 Installation
|
### 🎯 Installation
|
||||||
@ -134,8 +134,8 @@ kubectl label node <nodename> 'k3os.io/upgrade'-
|
|||||||
If you want to takedown the cluster, you can proceed as follows:
|
If you want to takedown the cluster, you can proceed as follows:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
kubectl delete -k hetzer/csi
|
kubectl delete -k hetzner/csi
|
||||||
kubectl delete -k hetzer/ccm
|
kubectl delete -k hetzner/ccm
|
||||||
hcloud load-balancer delete traefik
|
hcloud load-balancer delete traefik
|
||||||
terraform destroy -auto-approve
|
terraform destroy -auto-approve
|
||||||
```
|
```
|
||||||
|
16
data.tf
16
data.tf
@ -1,3 +1,19 @@
|
|||||||
data "hcloud_load_balancer" "lb11" {
|
data "hcloud_load_balancer" "lb11" {
|
||||||
name = "traefik"
|
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
|
||||||
|
}
|
||||||
|
@ -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
|
|
@ -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
|
|
22
main.tf
22
main.tf
@ -144,8 +144,22 @@ resource "hcloud_firewall" "k3s" {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data "hcloud_image" "linux" {
|
resource "local_file" "hetzner_ccm_config" {
|
||||||
name = local.hcloud_image_name
|
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" {
|
resource "local_file" "traefik_config" {
|
||||||
@ -153,5 +167,7 @@ resource "local_file" "traefik_config" {
|
|||||||
lb_server_type = var.lb_server_type
|
lb_server_type = var.lb_server_type
|
||||||
location = var.location
|
location = var.location
|
||||||
})
|
})
|
||||||
filename = "${path.module}/templates/rendered/traefik_config.yaml"
|
filename = "${path.module}/templates/rendered/traefik_config.yaml"
|
||||||
|
file_permission = "0644"
|
||||||
|
directory_permission = "0755"
|
||||||
}
|
}
|
||||||
|
@ -52,9 +52,9 @@ resource "hcloud_server" "first_control_plane" {
|
|||||||
provisioner "local-exec" {
|
provisioner "local-exec" {
|
||||||
command = <<-EOT
|
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 -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 -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
|
EOT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
provider "github" {}
|
||||||
|
|
||||||
provider "hcloud" {
|
provider "hcloud" {
|
||||||
token = var.hcloud_token
|
token = var.hcloud_token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
provider "local" {}
|
||||||
|
8
templates/hetzner_ccm.yaml.tpl
Normal file
8
templates/hetzner_ccm.yaml.tpl
Normal 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
|
8
templates/hetzner_csi.yaml.tpl
Normal file
8
templates/hetzner_csi.yaml.tpl
Normal 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
|
15
variables.tf
15
variables.tf
@ -1,6 +1,7 @@
|
|||||||
variable "hcloud_token" {
|
variable "hcloud_token" {
|
||||||
description = "Hetzner API tokey"
|
description = "Hetzner Cloud API Token"
|
||||||
type = string
|
type = string
|
||||||
|
sensitive = true
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "public_key" {
|
variable "public_key" {
|
||||||
@ -42,3 +43,15 @@ variable "agents_num" {
|
|||||||
description = "Number of agent nodes."
|
description = "Number of agent nodes."
|
||||||
type = number
|
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"
|
||||||
|
}
|
||||||
|
@ -1,8 +1,16 @@
|
|||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
|
github = {
|
||||||
|
source = "integrations/github"
|
||||||
|
version = ">= 4.0.0, < 5.0.0"
|
||||||
|
}
|
||||||
hcloud = {
|
hcloud = {
|
||||||
source = "hetznercloud/hcloud"
|
source = "hetznercloud/hcloud"
|
||||||
version = ">= 1.0.0, < 2.0.0"
|
version = ">= 1.0.0, < 2.0.0"
|
||||||
}
|
}
|
||||||
|
local = {
|
||||||
|
source = "hashicorp/local"
|
||||||
|
version = ">= 2.0.0, < 3.0.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user