mirror of
				https://github.com/optim-enterprises-bv/terraform-talos.git
				synced 2025-10-31 10:18:32 +00:00 
			
		
		
		
	worker nodes
This commit is contained in:
		| @@ -0,0 +1,5 @@ | |||||||
|  | args: | ||||||
|  |   controllers: cloud-node-lifecycle | ||||||
|  |  | ||||||
|  | nodeSelector: | ||||||
|  |   node-role.kubernetes.io/control-plane: "" | ||||||
|   | |||||||
| @@ -59,11 +59,15 @@ spec: | |||||||
|  |  | ||||||
|         - key: "node.kubernetes.io/not-ready" |         - key: "node.kubernetes.io/not-ready" | ||||||
|           effect: "NoExecute" |           effect: "NoExecute" | ||||||
|  |       nodeSelector:  | ||||||
|  |          | ||||||
|  |         node-role.kubernetes.io/control-plane: "" | ||||||
|       containers: |       containers: | ||||||
|         - name: hcloud-cloud-controller-manager |         - name: hcloud-cloud-controller-manager | ||||||
|           args: |           args: | ||||||
|             - "--allow-untagged-cloud" |             - "--allow-untagged-cloud" | ||||||
|             - "--cloud-provider=hcloud" |             - "--cloud-provider=hcloud" | ||||||
|  |             - "--controllers=cloud-node-lifecycle" | ||||||
|             - "--route-reconciliation-period=30s" |             - "--route-reconciliation-period=30s" | ||||||
|             - "--webhook-secure-port=0" |             - "--webhook-secure-port=0" | ||||||
|             - "--leader-elect=false" |             - "--leader-elect=false" | ||||||
|   | |||||||
| @@ -1,89 +0,0 @@ | |||||||
| # NOTE: this release was tested against kubernetes v1.18.x |  | ||||||
| --- |  | ||||||
| apiVersion: v1 |  | ||||||
| kind: ServiceAccount |  | ||||||
| metadata: |  | ||||||
|   name: cloud-controller-manager |  | ||||||
|   namespace: kube-system |  | ||||||
| --- |  | ||||||
| kind: ClusterRoleBinding |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| metadata: |  | ||||||
|   name: system:cloud-controller-manager |  | ||||||
| roleRef: |  | ||||||
|   apiGroup: rbac.authorization.k8s.io |  | ||||||
|   kind: ClusterRole |  | ||||||
|   name: cluster-admin |  | ||||||
| subjects: |  | ||||||
|   - kind: ServiceAccount |  | ||||||
|     name: cloud-controller-manager |  | ||||||
|     namespace: kube-system |  | ||||||
| --- |  | ||||||
| apiVersion: apps/v1 |  | ||||||
| kind: Deployment |  | ||||||
| metadata: |  | ||||||
|   name: hcloud-cloud-controller-manager |  | ||||||
|   namespace: kube-system |  | ||||||
| spec: |  | ||||||
|   replicas: 1 |  | ||||||
|   revisionHistoryLimit: 2 |  | ||||||
|   selector: |  | ||||||
|     matchLabels: |  | ||||||
|       app: hcloud-cloud-controller-manager |  | ||||||
|   template: |  | ||||||
|     metadata: |  | ||||||
|       labels: |  | ||||||
|         app: hcloud-cloud-controller-manager |  | ||||||
|     spec: |  | ||||||
|       priorityClassName: system-cluster-critical |  | ||||||
|       serviceAccountName: cloud-controller-manager |  | ||||||
|       dnsPolicy: Default |  | ||||||
|       nodeSelector: |  | ||||||
|         node-role.kubernetes.io/control-plane: "" |  | ||||||
|         node.cloudprovider.kubernetes.io/platform: hcloud |  | ||||||
|       tolerations: |  | ||||||
|         - key: "node.cloudprovider.kubernetes.io/uninitialized" |  | ||||||
|           value: "true" |  | ||||||
|           effect: "NoSchedule" |  | ||||||
|         - key: "node-role.kubernetes.io/control-plane" |  | ||||||
|           effect: NoSchedule |  | ||||||
|       containers: |  | ||||||
|         - image: hetznercloud/hcloud-cloud-controller-manager:v1.17.2 |  | ||||||
|           name: hcloud-cloud-controller-manager |  | ||||||
|           args: |  | ||||||
|             - --cloud-provider=hcloud |  | ||||||
|             - --allow-untagged-cloud |  | ||||||
|             - --controllers=cloud-node-lifecycle |  | ||||||
|           resources: |  | ||||||
|             requests: |  | ||||||
|               cpu: 100m |  | ||||||
|               memory: 50Mi |  | ||||||
|           env: |  | ||||||
|             - name: NODE_NAME |  | ||||||
|               valueFrom: |  | ||||||
|                 fieldRef: |  | ||||||
|                   fieldPath: spec.nodeName |  | ||||||
|             - name: HCLOUD_TOKEN |  | ||||||
|               valueFrom: |  | ||||||
|                 secretKeyRef: |  | ||||||
|                   name: hcloud |  | ||||||
|                   key: token |  | ||||||
|             - name: HCLOUD_NETWORK |  | ||||||
|               valueFrom: |  | ||||||
|                 secretKeyRef: |  | ||||||
|                   name: hcloud |  | ||||||
|                   key: network |  | ||||||
|             - name: HCLOUD_INSTANCES_ADDRESS_FAMILY |  | ||||||
|               value: dualstack |  | ||||||
|             - name: ROBOT_USER_NAME |  | ||||||
|               valueFrom: |  | ||||||
|                 secretKeyRef: |  | ||||||
|                   optional: true |  | ||||||
|                   name: hcloud |  | ||||||
|                   key: user |  | ||||||
|             - name: ROBOT_PASSWORD |  | ||||||
|               valueFrom: |  | ||||||
|                 secretKeyRef: |  | ||||||
|                   optional: true |  | ||||||
|                   name: hcloud |  | ||||||
|                   key: password |  | ||||||
| @@ -1,11 +1,12 @@ | |||||||
|  |  | ||||||
| locals { | locals { | ||||||
|  |   contolplane_prefix = "controlplane" | ||||||
|   contolplane_labels = "" |   contolplane_labels = "" | ||||||
|  |  | ||||||
|   controlplanes = { for k in flatten([ |   controlplanes = { for k in flatten([ | ||||||
|     for regions in var.regions : [ |     for regions in var.regions : [ | ||||||
|       for inx in range(lookup(try(var.controlplane[regions], {}), "count", 0)) : { |       for inx in range(lookup(try(var.controlplane[regions], {}), "count", 0)) : { | ||||||
|         name : "controlplane-${regions}-${1 + inx}" |         name : "${local.contolplane_prefix}-${regions}-${1 + inx}" | ||||||
|         image : data.hcloud_image.talos[startswith(lookup(try(var.controlplane[regions], {}), "type", "cpx11"), "ca") ? "arm64" : "amd64"].id |         image : data.hcloud_image.talos[startswith(lookup(try(var.controlplane[regions], {}), "type", "cpx11"), "ca") ? "arm64" : "amd64"].id | ||||||
|         region : regions |         region : regions | ||||||
|         type : lookup(try(var.controlplane[regions], {}), "type", "cpx11") |         type : lookup(try(var.controlplane[regions], {}), "type", "cpx11") | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ resource "hcloud_server" "web" { | |||||||
|   labels      = merge(var.tags, { label = "web" }) |   labels      = merge(var.tags, { label = "web" }) | ||||||
|  |  | ||||||
|   user_data = templatefile("${path.module}/templates/worker.yaml.tpl", |   user_data = templatefile("${path.module}/templates/worker.yaml.tpl", | ||||||
|     merge(var.kubernetes, { |     merge(local.kubernetes, try(var.instances["all"], {}), { | ||||||
|       name        = each.value.name |       name        = each.value.name | ||||||
|       ipv4        = each.value.ip |       ipv4        = each.value.ip | ||||||
|       lbv4        = local.ipv4_vip |       lbv4        = local.ipv4_vip | ||||||
| @@ -41,6 +41,10 @@ resource "hcloud_server" "web" { | |||||||
|     network_id = hcloud_network.main.id |     network_id = hcloud_network.main.id | ||||||
|     ip         = each.value.ip |     ip         = each.value.ip | ||||||
|   } |   } | ||||||
|  |   public_net { | ||||||
|  |     ipv4_enabled = true | ||||||
|  |     ipv6_enabled = true | ||||||
|  |   } | ||||||
|  |  | ||||||
|   lifecycle { |   lifecycle { | ||||||
|     ignore_changes = [ |     ignore_changes = [ | ||||||
| @@ -48,6 +52,7 @@ resource "hcloud_server" "web" { | |||||||
|       server_type, |       server_type, | ||||||
|       user_data, |       user_data, | ||||||
|       ssh_keys, |       ssh_keys, | ||||||
|  |       public_net, | ||||||
|     ] |     ] | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
|  |  | ||||||
| resource "local_sensitive_file" "worker-as" { | resource "local_sensitive_file" "worker-as" { | ||||||
|   content = templatefile("${path.module}/templates/worker-as.yaml.tpl", |   content = templatefile("${path.module}/templates/worker.yaml.tpl", | ||||||
|     merge(var.kubernetes, { |     merge(local.kubernetes, try(var.instances["all"], {}), { | ||||||
|       lbv4        = local.ipv4_vip |       lbv4        = local.ipv4_vip | ||||||
|       nodeSubnets = var.vpc_main_cidr |       nodeSubnets = var.vpc_main_cidr | ||||||
|       labels      = "project.io/node-pool=worker,hcloud/node-group=worker-as" |       labels      = "${local.worker_labels},hcloud/node-group=worker-as" | ||||||
|     }) |     }) | ||||||
|   ) |   ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ resource "hcloud_server" "worker" { | |||||||
|   labels      = merge(var.tags, { label = "worker" }) |   labels      = merge(var.tags, { label = "worker" }) | ||||||
|  |  | ||||||
|   user_data = templatefile("${path.module}/templates/worker.yaml.tpl", |   user_data = templatefile("${path.module}/templates/worker.yaml.tpl", | ||||||
|     merge(var.kubernetes, { |     merge(local.kubernetes, try(var.instances["all"], {}), { | ||||||
|       name        = each.value.name |       name        = each.value.name | ||||||
|       ipv4        = each.value.ip |       ipv4        = each.value.ip | ||||||
|       lbv4        = local.ipv4_vip |       lbv4        = local.ipv4_vip | ||||||
| @@ -41,6 +41,10 @@ resource "hcloud_server" "worker" { | |||||||
|     network_id = hcloud_network.main.id |     network_id = hcloud_network.main.id | ||||||
|     ip         = each.value.ip |     ip         = each.value.ip | ||||||
|   } |   } | ||||||
|  |   public_net { | ||||||
|  |     ipv4_enabled = true | ||||||
|  |     ipv6_enabled = true | ||||||
|  |   } | ||||||
|  |  | ||||||
|   lifecycle { |   lifecycle { | ||||||
|     ignore_changes = [ |     ignore_changes = [ | ||||||
| @@ -48,28 +52,7 @@ resource "hcloud_server" "worker" { | |||||||
|       server_type, |       server_type, | ||||||
|       user_data, |       user_data, | ||||||
|       ssh_keys, |       ssh_keys, | ||||||
|  |       public_net, | ||||||
|     ] |     ] | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| # module "worker" { |  | ||||||
| #   source = "./modules/worker" |  | ||||||
|  |  | ||||||
| #   for_each = var.instances |  | ||||||
| #   location = each.key |  | ||||||
| #   labels   = merge(var.tags, { label = "worker" }) |  | ||||||
| #   network  = hcloud_network.main.id |  | ||||||
| #   subnet   = hcloud_network_subnet.core.ip_range |  | ||||||
|  |  | ||||||
| #   vm_name           = "worker-${each.key}-" |  | ||||||
| #   vm_items          = lookup(each.value, "worker_count", 0) |  | ||||||
| #   vm_type           = lookup(each.value, "worker_type", "cx11") |  | ||||||
| #   vm_image          = data.hcloud_image.talos.id |  | ||||||
| #   vm_ip_start       = (6 + try(index(var.regions, each.key), 0)) * 10 |  | ||||||
| #   vm_security_group = [hcloud_firewall.worker.id] |  | ||||||
|  |  | ||||||
| #   vm_params = merge(var.kubernetes, { |  | ||||||
| #     lbv4   = local.ipv4_vip |  | ||||||
| #     labels = "project.io/node-pool=worker,hcloud/node-group=worker-${each.key}" |  | ||||||
| #   }) |  | ||||||
| # } |  | ||||||
|   | |||||||
| @@ -1,64 +0,0 @@ | |||||||
| version: v1alpha1 |  | ||||||
| debug: false |  | ||||||
| persist: true |  | ||||||
| machine: |  | ||||||
|   type: worker |  | ||||||
|   token: ${tokenMachine} |  | ||||||
|   ca: |  | ||||||
|     crt: ${caMachine} |  | ||||||
|   certSANs: [] |  | ||||||
|   nodeLabels: |  | ||||||
|     node.kubernetes.io/disktype: ssd |  | ||||||
|   kubelet: |  | ||||||
|     extraArgs: |  | ||||||
|       cloud-provider: external |  | ||||||
|       rotate-server-certificates: true |  | ||||||
|       node-labels: "${labels}" |  | ||||||
|     clusterDNS: |  | ||||||
|       - 169.254.2.53 |  | ||||||
|       - ${cidrhost(split(",",serviceSubnets)[0], 10)} |  | ||||||
|     nodeIP: |  | ||||||
|       validSubnets: ${format("%#v",split(",",nodeSubnets))} |  | ||||||
|   network: |  | ||||||
|     interfaces: |  | ||||||
|       - interface: dummy0 |  | ||||||
|         addresses: |  | ||||||
|           - 169.254.2.53/32 |  | ||||||
|     extraHostEntries: |  | ||||||
|       - ip: ${lbv4} |  | ||||||
|         aliases: |  | ||||||
|           - ${apiDomain} |  | ||||||
|   sysctls: |  | ||||||
|     net.core.somaxconn: 65535 |  | ||||||
|     net.core.netdev_max_backlog: 4096 |  | ||||||
|   install: |  | ||||||
|     wipe: false |  | ||||||
|   systemDiskEncryption: |  | ||||||
|     state: |  | ||||||
|       provider: luks2 |  | ||||||
|       keys: |  | ||||||
|         - nodeID: {} |  | ||||||
|           slot: 0 |  | ||||||
|     ephemeral: |  | ||||||
|       provider: luks2 |  | ||||||
|       keys: |  | ||||||
|         - nodeID: {} |  | ||||||
|           slot: 0 |  | ||||||
|       options: |  | ||||||
|         - no_read_workqueue |  | ||||||
|         - no_write_workqueue |  | ||||||
| cluster: |  | ||||||
|   id: ${clusterID} |  | ||||||
|   secret: ${clusterSecret} |  | ||||||
|   controlPlane: |  | ||||||
|     endpoint: https://${apiDomain}:6443 |  | ||||||
|   clusterName: ${clusterName} |  | ||||||
|   discovery: |  | ||||||
|     enabled: true |  | ||||||
|   network: |  | ||||||
|     dnsDomain: ${domain} |  | ||||||
|     podSubnets: ${format("%#v",split(",",podSubnets))} |  | ||||||
|     serviceSubnets: ${format("%#v",split(",",serviceSubnets))} |  | ||||||
|   token: ${token} |  | ||||||
|   ca: |  | ||||||
|     crt: ${ca} |  | ||||||
| @@ -1,65 +0,0 @@ | |||||||
| version: v1alpha1 |  | ||||||
| debug: false |  | ||||||
| persist: true |  | ||||||
| machine: |  | ||||||
|   type: worker |  | ||||||
|   token: ${tokenMachine} |  | ||||||
|   ca: |  | ||||||
|     crt: ${caMachine} |  | ||||||
|   certSANs: [] |  | ||||||
|   nodeLabels: |  | ||||||
|     node.kubernetes.io/disktype: ssd |  | ||||||
|   kubelet: |  | ||||||
|     extraArgs: |  | ||||||
|       node-ip: "${ipv4}" |  | ||||||
|       cloud-provider: external |  | ||||||
|       rotate-server-certificates: true |  | ||||||
|       node-labels: "${labels}" |  | ||||||
|     clusterDNS: |  | ||||||
|       - 169.254.2.53 |  | ||||||
|       - ${cidrhost(split(",",serviceSubnets)[0], 10)} |  | ||||||
|     nodeIP: |  | ||||||
|       validSubnets: ${format("%#v",split(",",nodeSubnets))} |  | ||||||
|   network: |  | ||||||
|     hostname: "${name}" |  | ||||||
|     interfaces: |  | ||||||
|       - interface: dummy0 |  | ||||||
|         addresses: |  | ||||||
|           - 169.254.2.53/32 |  | ||||||
|     extraHostEntries: |  | ||||||
|       - ip: ${lbv4} |  | ||||||
|         aliases: |  | ||||||
|           - ${apiDomain} |  | ||||||
|   install: |  | ||||||
|     wipe: false |  | ||||||
|   sysctls: |  | ||||||
|     net.core.somaxconn: 65535 |  | ||||||
|     net.core.netdev_max_backlog: 4096 |  | ||||||
|   systemDiskEncryption: |  | ||||||
|     state: |  | ||||||
|       provider: luks2 |  | ||||||
|       keys: |  | ||||||
|         - nodeID: {} |  | ||||||
|           slot: 0 |  | ||||||
|     ephemeral: |  | ||||||
|       provider: luks2 |  | ||||||
|       keys: |  | ||||||
|         - nodeID: {} |  | ||||||
|           slot: 0 |  | ||||||
|       options: |  | ||||||
|         - no_read_workqueue |  | ||||||
|         - no_write_workqueue |  | ||||||
| cluster: |  | ||||||
|   id: ${clusterID} |  | ||||||
|   secret: ${clusterSecret} |  | ||||||
|   controlPlane: |  | ||||||
|     endpoint: https://${apiDomain}:6443 |  | ||||||
|   clusterName: ${clusterName} |  | ||||||
|   discovery: |  | ||||||
|     enabled: true |  | ||||||
|   network: |  | ||||||
|     dnsDomain: ${domain} |  | ||||||
|     serviceSubnets: ${format("%#v",split(",",serviceSubnets))} |  | ||||||
|   token: ${token} |  | ||||||
|   ca: |  | ||||||
|     crt: ${ca} |  | ||||||
| @@ -1,55 +0,0 @@ | |||||||
|  |  | ||||||
| resource "hcloud_server" "worker" { |  | ||||||
|   count       = var.vm_items |  | ||||||
|   location    = var.location |  | ||||||
|   name        = "${var.vm_name}${count.index + 1}" |  | ||||||
|   image       = var.vm_image |  | ||||||
|   server_type = var.vm_type |  | ||||||
|   ssh_keys    = [] |  | ||||||
|   keep_disk   = true |  | ||||||
|   labels      = var.labels |  | ||||||
|  |  | ||||||
|   user_data = templatefile("${path.module}/../templates/worker.yaml.tpl", |  | ||||||
|     merge(var.vm_params, { |  | ||||||
|       name = "${var.vm_name}${count.index + 1}" |  | ||||||
|       ipv4 = cidrhost(var.subnet, var.vm_ip_start + count.index) |  | ||||||
|     }) |  | ||||||
|   ) |  | ||||||
|  |  | ||||||
|   firewall_ids = var.vm_security_group |  | ||||||
|   network { |  | ||||||
|     network_id = var.network |  | ||||||
|     ip         = cidrhost(var.subnet, var.vm_ip_start + count.index) |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   lifecycle { |  | ||||||
|     ignore_changes = [ |  | ||||||
|       image, |  | ||||||
|       server_type, |  | ||||||
|       user_data, |  | ||||||
|       ssh_keys, |  | ||||||
|     ] |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   # IPv6 hack |  | ||||||
|   # provisioner "local-exec" { |  | ||||||
|   #   command = "echo '${templatefile("${path.module}/../templates/worker-patch.json.tpl", { ipv6_address = self.ipv6_address })}' > _cfgs/${var.vm_name}${count.index + 1}.patch" |  | ||||||
|   # } |  | ||||||
|   # provisioner "local-exec" { |  | ||||||
|   #   command = "sleep 120 && talosctl --talosconfig _cfgs/talosconfig patch --nodes ${cidrhost(var.subnet, var.vm_ip_start + count.index)} machineconfig --patch-file _cfgs/${var.vm_name}${count.index + 1}.patch" |  | ||||||
|   # } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| # resource "local_file" "worker" { |  | ||||||
| #   count = var.vm_items |  | ||||||
| #   content = templatefile("${path.module}/../templates/worker.yaml.tpl", |  | ||||||
| #     merge(var.vm_params, { |  | ||||||
| #       name = "${var.vm_name}${count.index + 1}" |  | ||||||
| #       ipv4 = cidrhost(var.subnet, var.vm_ip_start + count.index) |  | ||||||
| #     }) |  | ||||||
| #   ) |  | ||||||
| #   filename        = "${var.vm_name}${count.index + 1}.yaml" |  | ||||||
| #   file_permission = "0640" |  | ||||||
|  |  | ||||||
| #   depends_on = [hcloud_server.worker] |  | ||||||
| # } |  | ||||||
| @@ -1,4 +0,0 @@ | |||||||
|  |  | ||||||
| output "vms" { |  | ||||||
|   value = hcloud_server.worker |  | ||||||
| } |  | ||||||
| @@ -1,52 +0,0 @@ | |||||||
|  |  | ||||||
| variable "location" { |  | ||||||
|   type    = string |  | ||||||
|   default = "nbg1" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "labels" { |  | ||||||
|   type        = map(string) |  | ||||||
|   description = "Tags of resources" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "network" { |  | ||||||
|   type        = string |  | ||||||
|   description = "Network id" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "subnet" { |  | ||||||
|   type        = string |  | ||||||
|   description = "Subnet cidr" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vm_name" { |  | ||||||
|   type    = string |  | ||||||
|   default = "worker-" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vm_items" { |  | ||||||
|   type    = number |  | ||||||
|   default = 0 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vm_type" { |  | ||||||
|   type    = string |  | ||||||
|   default = "cx11" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vm_image" { |  | ||||||
|   type = string |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vm_security_group" { |  | ||||||
|   type = list(string) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vm_ip_start" { |  | ||||||
|   type    = number |  | ||||||
|   default = 61 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| variable "vm_params" { |  | ||||||
|   type = map(string) |  | ||||||
| } |  | ||||||
| @@ -1,9 +0,0 @@ | |||||||
| terraform { |  | ||||||
|   required_providers { |  | ||||||
|     hcloud = { |  | ||||||
|       source  = "hetznercloud/hcloud" |  | ||||||
|       version = "~> 1.36.1" |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   required_version = ">= 1.2" |  | ||||||
| } |  | ||||||
| @@ -18,6 +18,12 @@ resource "hcloud_floating_ip" "api" { | |||||||
|   labels        = merge(var.tags, { type = "infra" }) |   labels        = merge(var.tags, { type = "infra" }) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | # resource "hcloud_floating_ip_assignment" "api" { | ||||||
|  | #   count          = local.lb_enable ? 0 : 1 | ||||||
|  | #   floating_ip_id = hcloud_floating_ip.api[0].id | ||||||
|  | #   server_id      = one(hcloud_server.controlplane).id | ||||||
|  | # } | ||||||
|  |  | ||||||
| resource "hcloud_load_balancer" "api" { | resource "hcloud_load_balancer" "api" { | ||||||
|   count              = local.lb_enable ? 1 : 0 |   count              = local.lb_enable ? 1 : 0 | ||||||
|   name               = "api" |   name               = "api" | ||||||
|   | |||||||
| @@ -6,30 +6,40 @@ machine: | |||||||
|   token: ${tokenMachine} |   token: ${tokenMachine} | ||||||
|   ca: |   ca: | ||||||
|     crt: ${caMachine} |     crt: ${caMachine} | ||||||
|   nodeLabels: |  | ||||||
|     node.kubernetes.io/disktype: ssd |  | ||||||
|   kubelet: |   kubelet: | ||||||
|  |     image: ghcr.io/siderolabs/kubelet:${version} | ||||||
|  |     defaultRuntimeSeccompProfileEnabled: true | ||||||
|     extraArgs: |     extraArgs: | ||||||
|       cloud-provider: external |       cloud-provider: external | ||||||
|       rotate-server-certificates: true |       rotate-server-certificates: true | ||||||
|       node-labels: "${labels}" |       node-labels: ${labels} | ||||||
|  |     extraConfig: | ||||||
|  |       imageGCHighThresholdPercent: 70 | ||||||
|  |       imageGCLowThresholdPercent: 50 | ||||||
|  |       allowedUnsafeSysctls: [net.core.somaxconn] | ||||||
|     clusterDNS: |     clusterDNS: | ||||||
|       - 169.254.2.53 |       - 169.254.2.53 | ||||||
|       - ${cidrhost(split(",",serviceSubnets)[0], 10)} |       - ${cidrhost(split(",",serviceSubnets)[0], 10)} | ||||||
|     nodeIP: |     nodeIP: | ||||||
|       validSubnets: ${format("%#v",split(",",nodeSubnets))} |       validSubnets: ${format("%#v",split(",",nodeSubnets))} | ||||||
|   network: |   network: | ||||||
|     hostname: "${name}" |  | ||||||
|     interfaces: |     interfaces: | ||||||
|       - interface: dummy0 |       - interface: dummy0 | ||||||
|         addresses: |         addresses: | ||||||
|           - 169.254.2.53/32 |           - 169.254.2.53/32 | ||||||
|  |     kubespan: | ||||||
|  |       enabled: false | ||||||
|  |       allowDownPeerBypass: true | ||||||
|     extraHostEntries: |     extraHostEntries: | ||||||
|       - ip: ${lbv4} |       - ip: ${lbv4} | ||||||
|         aliases: |         aliases: | ||||||
|           - ${apiDomain} |           - ${apiDomain} | ||||||
|  |     nameservers: | ||||||
|  |       - 1.1.1.1 | ||||||
|  |       - 2606:4700:4700::1111 | ||||||
|  |       - 2001:4860:4860::8888 | ||||||
|   install: |   install: | ||||||
|     wipe: false |     wipe: true | ||||||
|   sysctls: |   sysctls: | ||||||
|     net.core.somaxconn: 65535 |     net.core.somaxconn: 65535 | ||||||
|     net.core.netdev_max_backlog: 4096 |     net.core.netdev_max_backlog: 4096 | ||||||
| @@ -47,6 +57,10 @@ machine: | |||||||
|       options: |       options: | ||||||
|         - no_read_workqueue |         - no_read_workqueue | ||||||
|         - no_write_workqueue |         - no_write_workqueue | ||||||
|  |   features: | ||||||
|  |     rbac: true | ||||||
|  |     stableHostname: true | ||||||
|  |     apidCheckExtKeyUsage: true | ||||||
| cluster: | cluster: | ||||||
|   id: ${clusterID} |   id: ${clusterID} | ||||||
|   secret: ${clusterSecret} |   secret: ${clusterSecret} | ||||||
| @@ -54,7 +68,7 @@ cluster: | |||||||
|     endpoint: https://${apiDomain}:6443 |     endpoint: https://${apiDomain}:6443 | ||||||
|   clusterName: ${clusterName} |   clusterName: ${clusterName} | ||||||
|   discovery: |   discovery: | ||||||
|     enabled: true |     enabled: false | ||||||
|   network: |   network: | ||||||
|     dnsDomain: ${domain} |     dnsDomain: ${domain} | ||||||
|     serviceSubnets: ${format("%#v",split(",",serviceSubnets))} |     serviceSubnets: ${format("%#v",split(",",serviceSubnets))} | ||||||
|   | |||||||
| @@ -8,10 +8,15 @@ machine: | |||||||
|     crt: ${caMachine} |     crt: ${caMachine} | ||||||
|   kubelet: |   kubelet: | ||||||
|     image: ghcr.io/siderolabs/kubelet:${version} |     image: ghcr.io/siderolabs/kubelet:${version} | ||||||
|  |     defaultRuntimeSeccompProfileEnabled: true | ||||||
|     extraArgs: |     extraArgs: | ||||||
|       cloud-provider: external |       cloud-provider: external | ||||||
|       rotate-server-certificates: true |       rotate-server-certificates: true | ||||||
|       node-labels: ${labels} |       node-labels: ${labels} | ||||||
|  |     extraConfig: | ||||||
|  |       imageGCHighThresholdPercent: 70 | ||||||
|  |       imageGCLowThresholdPercent: 50 | ||||||
|  |       allowedUnsafeSysctls: [net.core.somaxconn] | ||||||
|     clusterDNS: |     clusterDNS: | ||||||
|       - 169.254.2.53 |       - 169.254.2.53 | ||||||
|       - ${cidrhost(split(",",serviceSubnets)[0], 10)} |       - ${cidrhost(split(",",serviceSubnets)[0], 10)} | ||||||
| @@ -48,6 +53,10 @@ machine: | |||||||
|       options: |       options: | ||||||
|         - no_read_workqueue |         - no_read_workqueue | ||||||
|         - no_write_workqueue |         - no_write_workqueue | ||||||
|  |   features: | ||||||
|  |     rbac: true | ||||||
|  |     stableHostname: true | ||||||
|  |     apidCheckExtKeyUsage: true | ||||||
| cluster: | cluster: | ||||||
|   id: ${clusterID} |   id: ${clusterID} | ||||||
|   secret: ${clusterSecret} |   secret: ${clusterSecret} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Serge Logvinov
					Serge Logvinov