Use content snap

This commit is contained in:
2023-11-04 21:25:20 +01:00
parent b8ba8c3146
commit a701a70775
20 changed files with 82 additions and 40 deletions
+9 -8
View File
@@ -183,7 +183,7 @@ resource "hcloud_server" "server_k8s_test" {
admin_user : "2martensAdmin" admin_user : "2martensAdmin"
terraform_public_ssh_key : var.terraform_public_ssh_key terraform_public_ssh_key : var.terraform_public_ssh_key
main_node : true main_node : true
microk8s_config : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/microk8s-config-manager.tftpl", { microk8s_config : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/snap/microk8s-config-manager.tftpl", {
node_ip : "10.0.0.2" node_ip : "10.0.0.2"
api_server_domain : "" api_server_domain : ""
api_server_ip : hcloud_primary_ip.primary_ipv4_k8s_test.ip_address api_server_ip : hcloud_primary_ip.primary_ipv4_k8s_test.ip_address
@@ -191,26 +191,27 @@ resource "hcloud_server" "server_k8s_test" {
main_node_ip : "10.0.0.2" main_node_ip : "10.0.0.2"
cluster_token : "" cluster_token : ""
})) }))
packages_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/install-packages.sh", { snapcraft : base64encode(file("${path.module}/modules/k8s-cluster/templates/snap/snapcraft.yaml"))
packages_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/install-packages.sh", {
refresh_day : "fri" refresh_day : "fri"
refresh_hour : format("%02d", 0) refresh_hour : format("%02d", 0)
})) }))
firewall_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/firewall-setup.sh", { firewall_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/firewall-setup.sh", {
node_ip : "10.0.0.2" node_ip : "10.0.0.2"
})) }))
ssh_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/ssh-setup.sh", { ssh_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/ssh-setup.sh", {
admin_user : "2martensAdmin" admin_user : "2martensAdmin"
})) }))
microk8s_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/microk8s-setup.sh", { microk8s_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/microk8s-setup.sh", {
microk8s_channel : "1.28-strict/stable" microk8s_channel : "1.28-strict/stable"
main_node : true main_node : true
})) }))
cluster_setup_values : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/cluster-setup-values.yaml", { cluster_setup_values : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/helm/cluster-setup-values.yaml", {
client_id : var.vault_client_id client_id : var.vault_client_id
client_secret : var.vault_client_secret client_secret : var.vault_client_secret
})) }))
argocd_ha_values : base64encode(file("${path.module}/modules/k8s-cluster/templates/argocd-values-ha.yaml")) argocd_ha_values : base64encode(file("${path.module}/modules/k8s-cluster/templates/helm/argocd-values-ha.yaml"))
cluster_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/cluster-setup.sh", { cluster_setup : base64encode(templatefile("${path.module}/modules/k8s-cluster/templates/scripts/cluster-setup.sh", {
argocd_environment : "test" argocd_environment : "test"
high_availability : false high_availability : false
})) }))
@@ -85,7 +85,7 @@ resource "hcloud_server" "manager" {
admin_user : var.admin_user admin_user : var.admin_user
terraform_public_ssh_key : var.terraform_public_ssh_key terraform_public_ssh_key : var.terraform_public_ssh_key
main_node : count.index == 0 main_node : count.index == 0
microk8s_config : base64encode(templatefile("${path.module}/templates/microk8s-config-manager.tftpl", { microk8s_config : base64encode(templatefile("${path.module}/templates/snap/microk8s-config-manager.tftpl", {
node_ip : var.private_node_ips[count.index] node_ip : var.private_node_ips[count.index]
api_server_domain : local.kube_api_server_domain api_server_domain : local.kube_api_server_domain
main_node : count.index == 0 main_node : count.index == 0
@@ -93,26 +93,27 @@ resource "hcloud_server" "manager" {
api_server_ip : var.create_loadbalancer ? hcloud_load_balancer.kubernetes[0].ipv4 : hcloud_primary_ip.ipv4_manager_address[0].ip_address api_server_ip : var.create_loadbalancer ? hcloud_load_balancer.kubernetes[0].ipv4 : hcloud_primary_ip.ipv4_manager_address[0].ip_address
cluster_token : random_id.cluster_token.hex cluster_token : random_id.cluster_token.hex
})) }))
packages_setup : base64encode(templatefile("${path.module}/templates/install-packages.sh", { snapcraft : base64encode(file("${path.module}/templates/snap/snapcraft.yaml"))
packages_setup : base64encode(templatefile("${path.module}/templates/scripts/install-packages.sh", {
refresh_day : "fri" refresh_day : "fri"
refresh_hour : format("%02d", count.index) refresh_hour : format("%02d", count.index)
})) }))
firewall_setup : base64encode(templatefile("${path.module}/templates/firewall-setup.sh", { firewall_setup : base64encode(templatefile("${path.module}/templates/scripts/firewall-setup.sh", {
node_ip : var.private_node_ips[count.index] node_ip : var.private_node_ips[count.index]
})) }))
ssh_setup : base64encode(templatefile("${path.module}/templates/ssh-setup.sh", { ssh_setup : base64encode(templatefile("${path.module}/templates/scripts/ssh-setup.sh", {
admin_user : var.admin_user admin_user : var.admin_user
})) }))
microk8s_setup : base64encode(templatefile("${path.module}/templates/microk8s-setup.sh", { microk8s_setup : base64encode(templatefile("${path.module}/templates/scripts/microk8s-setup.sh", {
microk8s_channel : var.microk8s_channel microk8s_channel : var.microk8s_channel
main_node = count.index == 0 main_node = count.index == 0
})) }))
cluster_setup_values : base64encode(templatefile("${path.module}/templates/cluster-setup-values.yaml", { cluster_setup_values : base64encode(templatefile("${path.module}/templates/helm/cluster-setup-values.yaml", {
client_id : var.vault_service_principal.client_id client_id : var.vault_service_principal.client_id
client_secret : var.vault_service_principal.client_secret client_secret : var.vault_service_principal.client_secret
})) }))
argocd_ha_values : base64encode(file("${path.module}/templates/argocd-values-ha.yaml")) argocd_ha_values : base64encode(file("${path.module}/templates/helm/argocd-values-ha.yaml"))
cluster_setup : base64encode(templatefile("${path.module}/templates/cluster-setup.sh", { cluster_setup : base64encode(templatefile("${path.module}/templates/scripts/cluster-setup.sh", {
argocd_environment : var.argocd_environment argocd_environment : var.argocd_environment
high_availability : var.number_nodes > 2 high_availability : var.number_nodes > 2
})) }))
@@ -20,6 +20,11 @@ write_files:
path: /run/tmpfiles.d/microk8s.yaml path: /run/tmpfiles.d/microk8s.yaml
encoding: base64 encoding: base64
defer: true defer: true
- owner: root:root
content: "${snapcraft}"
path: /run/tmpfiles.d/snapcraft.yaml
encoding: base64
defer: true
- owner: root:root - owner: root:root
content: "${packages_setup}" content: "${packages_setup}"
path: /run/tmpfiles.d/install-packages.sh path: /run/tmpfiles.d/install-packages.sh
@@ -20,6 +20,11 @@ write_files:
path: /run/tmpfiles.d/microk8s.yaml path: /run/tmpfiles.d/microk8s.yaml
encoding: base64 encoding: base64
defer: true defer: true
- owner: root:root
content: "${snapcraft}"
path: /run/tmpfiles.d/snapcraft.yaml
encoding: base64
defer: true
- owner: root:root - owner: root:root
content: "${packages_setup}" content: "${packages_setup}"
path: /run/tmpfiles.d/install-packages.sh path: /run/tmpfiles.d/install-packages.sh
@@ -1,9 +0,0 @@
#!/bin/sh
microk8s helm repo add 2martens https://repo.2martens.de/charts/
microk8s helm install setup 2martens/cluster_setup --values /run/tmpfiles.d/cluster-setup-values.yaml
%{ if high_availability ~}
microk8s helm install argocd 2martens/argocd --set environment=${argocd_environment} --values /run/tmpfiles.d/argocd-values-ha.yaml
%{ else ~}
microk8s helm install argocd 2martens/argocd --set environment=${argocd_environment}
%{ endif ~}
@@ -1,7 +0,0 @@
#!/bin/sh
cp /run/tmpfiles.d/microk8s.yaml /etc/microk8s.yaml
%{ if !main_node ~}
sleep 120
%{ endif ~}
snap install microk8s --channel "${microk8s_channel}"
@@ -0,0 +1,9 @@
#!/bin/sh
/snap/bin/microk8s helm repo add 2martens https://repo.2martens.de/charts/
/snap/bin/microk8s helm install setup 2martens/cluster_setup --values /run/tmpfiles.d/cluster-setup-values.yaml
%{ if high_availability ~}
/snap/bin/microk8s helm install argocd 2martens/argocd --set environment=${argocd_environment} --values /run/tmpfiles.d/argocd-values-ha.yaml
%{ else ~}
/snap/bin/microk8s helm install argocd 2martens/argocd --set environment=${argocd_environment}
%{ endif ~}
@@ -0,0 +1,13 @@
#!/bin/sh
mkdir -p /run/snap/launcher/configuration
cp /run/tmpfiles.d/microk8s.yaml /run/snap/launcher/configuration/content.yaml
cp /run/tmpfiles.d/snapcraft.yaml /run/snap/snapcraft.yaml
cd /run/snap && snapcraft
snap install /run/snap/microk8s-cluster-config_*.snap --dangerous
%{ if !main_node ~}
sleep 120
%{ endif ~}
snap install microk8s --channel "${microk8s_channel}"
snap connect microk8s-cluster-config:configuration microk8s
@@ -0,0 +1,23 @@
name: microk8s-cluster-config
version: 'latest'
summary: Adds a launch configuration to MicroK8s
description: Configuration yaml file that MicroK8s can apply.
base: core20
grade: stable
confinement: strict
slots:
configuration:
interface: content
content: configuration
source:
read:
- $SNAP/launcher
parts:
configuration:
plugin: dump
source: .
stage:
- launcher/*
+9 -8
View File
@@ -64,7 +64,7 @@ resource "hcloud_server" "worker" {
admin_user : var.admin_user admin_user : var.admin_user
terraform_public_ssh_key : var.terraform_public_ssh_key terraform_public_ssh_key : var.terraform_public_ssh_key
main_node : count.index == 0 main_node : count.index == 0
microk8s_config : base64encode(templatefile("${path.module}/templates/microk8s-config-worker.tftpl", { microk8s_config : base64encode(templatefile("${path.module}/templates/snap/microk8s-config-worker.tftpl", {
node_ip : var.private_node_ips[count.index] node_ip : var.private_node_ips[count.index]
api_server_domain : local.kube_api_server_domain api_server_domain : local.kube_api_server_domain
main_node : count.index == 0 main_node : count.index == 0
@@ -72,26 +72,27 @@ resource "hcloud_server" "worker" {
api_server_ip : var.create_loadbalancer ? hcloud_load_balancer.kubernetes[0].ipv4 : hcloud_server.manager[0].ipv4_address api_server_ip : var.create_loadbalancer ? hcloud_load_balancer.kubernetes[0].ipv4 : hcloud_server.manager[0].ipv4_address
cluster_token : random_id.cluster_token.hex cluster_token : random_id.cluster_token.hex
})) }))
packages_setup : base64encode(templatefile("${path.module}/templates/install-packages.sh", { snapcraft : base64encode(file("${path.module}/templates/snap/snapcraft.yaml"))
packages_setup : base64encode(templatefile("${path.module}/templates/scripts/install-packages.sh", {
refresh_day : "sat" refresh_day : "sat"
refresh_hour : format("%02d", count.index) refresh_hour : format("%02d", count.index)
})) }))
firewall_setup : base64encode(templatefile("${path.module}/templates/firewall-setup.sh", { firewall_setup : base64encode(templatefile("${path.module}/templates/scripts/firewall-setup.sh", {
node_ip : var.private_node_ips[count.index] node_ip : var.private_node_ips[count.index]
})) }))
ssh_setup : base64encode(templatefile("${path.module}/templates/ssh-setup.sh", { ssh_setup : base64encode(templatefile("${path.module}/templates/scripts/ssh-setup.sh", {
admin_user : var.admin_user admin_user : var.admin_user
})) }))
microk8s_setup : base64encode(templatefile("${path.module}/templates/microk8s-setup.sh", { microk8s_setup : base64encode(templatefile("${path.module}/templates/scripts/microk8s-setup.sh", {
microk8s_channel : var.microk8s_channel microk8s_channel : var.microk8s_channel
main_node : false main_node : false
})) }))
cluster_setup_values : base64encode(templatefile("${path.module}/templates/cluster-setup-values.yaml", { cluster_setup_values : base64encode(templatefile("${path.module}/templates/helm/cluster-setup-values.yaml", {
client_id : var.vault_service_principal.client_id client_id : var.vault_service_principal.client_id
client_secret : var.vault_service_principal.client_secret client_secret : var.vault_service_principal.client_secret
})) }))
argocd_ha_values : base64encode(file("${path.module}/templates/argocd-values-ha.yaml")) argocd_ha_values : base64encode(file("${path.module}/templates/helm/argocd-values-ha.yaml"))
cluster_setup : base64encode(templatefile("${path.module}/templates/cluster-setup.sh", { cluster_setup : base64encode(templatefile("${path.module}/templates/scripts/cluster-setup.sh", {
argocd_environment : var.argocd_environment argocd_environment : var.argocd_environment
high_availability : var.number_nodes > 2 high_availability : var.number_nodes > 2
})) }))