mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-07-24 23:36:46 +00:00
🪆 Fix vcluster deployment and add konk.sh script
This commit is contained in:
19
prepare-labs/konk.sh
Executable file
19
prepare-labs/konk.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/bin/sh
|
||||
|
||||
# deploy big cluster
|
||||
TF_VAR_node_size=g6-standard-6 \
|
||||
TF_VAR_nodes_per_cluster=5 \
|
||||
TF_VAR_location=eu-west \
|
||||
./labctl create --mode mk8s --settings settings/mk8s.env --provider linode --tag konk
|
||||
|
||||
# set kubeconfig file
|
||||
cp tags/konk/stage2/kubeconfig.101 ~/kubeconfig
|
||||
|
||||
# set external_ip labels
|
||||
kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name} {.status.addresses[?(@.type=="ExternalIP")].address}{"\n"}{end}' |
|
||||
while read node address; do
|
||||
kubectl label node $node external_ip=$address
|
||||
done
|
||||
|
||||
# vcluster all the things
|
||||
./labctl create --settings settings/mk8s.env --provider vcluster --mode mk8s --students 27
|
||||
@@ -2,19 +2,26 @@ resource "helm_release" "_" {
|
||||
name = "vcluster"
|
||||
namespace = var.cluster_name
|
||||
create_namespace = true
|
||||
#tags = var.common_tags
|
||||
repository = "https://charts.loft.sh"
|
||||
chart = "vcluster"
|
||||
set {
|
||||
name = "storage.persistence"
|
||||
value = "false"
|
||||
}
|
||||
repository = "https://charts.loft.sh"
|
||||
chart = "vcluster"
|
||||
set {
|
||||
name = "service.type"
|
||||
value = "NodePort"
|
||||
}
|
||||
set {
|
||||
name = "storage.persistence"
|
||||
value = "false"
|
||||
}
|
||||
set {
|
||||
name = "sync.nodes.enabled"
|
||||
value = "true"
|
||||
}
|
||||
set {
|
||||
name = "sync.nodes.syncAllNodes"
|
||||
value = "true"
|
||||
}
|
||||
set {
|
||||
name = "syncer.extraArgs"
|
||||
value = "{--tls-san=${local.outer_api_server_host}}"
|
||||
value = "{--tls-san=${local.guest_api_server_host}}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,13 +27,22 @@ data "kubernetes_service_v1" "vcluster" {
|
||||
}
|
||||
}
|
||||
|
||||
data "kubernetes_nodes" "_" {
|
||||
}
|
||||
|
||||
# In the variables below, we use "traditional" virtualization terms, i.e.:
|
||||
# host = "real" Kubernetes cluster
|
||||
# guest = virtual Kubernetes cluster
|
||||
|
||||
locals {
|
||||
kubeconfig_raw = data.kubernetes_secret_v1.kubeconfig.data.config
|
||||
node_port = data.kubernetes_service_v1.vcluster.spec[0].port[0].node_port
|
||||
outer_api_server_url = yamldecode(file("~/kubeconfig")).clusters[0].cluster.server
|
||||
outer_api_server_host = regex("https://([^:]+):", local.outer_api_server_url)[0]
|
||||
inner_api_server_host = local.outer_api_server_host
|
||||
inner_old_server_url = yamldecode(local.kubeconfig_raw).clusters[0].cluster.server
|
||||
inner_new_server_url = "https://${local.inner_api_server_host}:${local.node_port}"
|
||||
kubeconfig = replace(local.kubeconfig_raw, local.inner_old_server_url, local.inner_new_server_url)
|
||||
}
|
||||
kubeconfig_raw = data.kubernetes_secret_v1.kubeconfig.data.config
|
||||
node_external_ip = data.kubernetes_nodes._.nodes[0].metadata[0].labels.external_ip
|
||||
node_port = data.kubernetes_service_v1.vcluster.spec[0].port[0].node_port
|
||||
host_api_server_url = yamldecode(file("~/kubeconfig")).clusters[0].cluster.server
|
||||
host_api_server_host = regex("https://([^:]+):", local.host_api_server_url)[0]
|
||||
guest_api_server_host = local.node_external_ip
|
||||
guest_api_server_port = local.node_port
|
||||
guest_api_server_url_new = "https://${local.guest_api_server_host}:${local.guest_api_server_port}"
|
||||
guest_api_server_url_old = yamldecode(local.kubeconfig_raw).clusters[0].cluster.server
|
||||
kubeconfig = replace(local.kubeconfig_raw, local.guest_api_server_url_old, local.guest_api_server_url_new)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user