-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathy-cluster-provision-k3s-multipass
executable file
·73 lines (56 loc) · 2.38 KB
/
y-cluster-provision-k3s-multipass
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env bash
[ -z "$DEBUG" ] || set -x
set -eo pipefail
[ -z "$KUBECONFIG" ] && echo "Provision requires an explicit KUBECONFIG env" && exit 1
[ -z "$CONTEXTNAME" ] && CONTEXTNAME=local
[ -z "$VM_NAME" ] && VM_NAME="ystack-master"
[ -z "$VM_RESOURCES" ] && VM_RESOURCES="-m 8G -d 40G -c 4"
if multipass list | grep "$VM_NAME"
then
echo "Y-stack appears to be running already" && exit
fi
# "jammy 22.04.." is currently the version our nodes run. Remove "jammy" to get the latest LTS
multipass launch jammy -n "$VM_NAME" $VM_RESOURCES
# https://medium.com/@mattiaperi/kubernetes-cluster-with-k3s-and-multipass-7532361affa3
K3S_NODEIP_MASTER="$(multipass info $VM_NAME | grep "IPv4" | awk -F' ' '{print $2}')"
YSTACK_PROD_REGISTRY=$YSTACK_PROD_REGISTRY YSTACK_PROD_REGISTRY_REWRITE=$YSTACK_PROD_REGISTRY_REWRITE y-registry-config k3s-yaml \
| multipass transfer - "$VM_NAME:/tmp/registries.yaml"
multipass exec "$VM_NAME" -- sudo bash -cex "
$(cat $YSTACK_HOME/bin/y-ubuntu-swapoff)
mkdir -p /etc/rancher/k3s
mv /tmp/registries.yaml /etc/rancher/k3s/
";
multipass exec "$VM_NAME" -- sudo INSTALL_K3S_EXEC="$INSTALL_K3S_EXEC" bash -cex "$(cat $YSTACK_HOME/bin/y-k3s-install)";
multipass exec "$VM_NAME" -- sudo cat /etc/rancher/k3s/k3s.yaml \
| sed "s|127.0.0.1|$K3S_NODEIP_MASTER|" \
> "$KUBECONFIG.tmp"
KUBECONFIG="$KUBECONFIG.tmp" kubectl config rename-context default $CONTEXTNAME
KUBECONFIG="$KUBECONFIG.tmp" y-cluster-assert-install --context=$CONTEXTNAME
# This list of bases also exists in ../k3s/docker-ystack-proxy/Dockerfile
for base in \
00-ystack-namespace \
10-minio \
20-builds-registry \
21-prod-registry \
22-node-update-hosts \
30-monitoring-nodeport \
40-buildkit; do \
basepath="$YSTACK_HOME/k3s/$base/"
echo "# Applying $basepath ..."
KUBECONFIG="$KUBECONFIG.tmp" kubectl --context=$CONTEXTNAME apply -k $basepath
done
[ "$MONITORING_ENABLE" != "true" ] || for base in \
namespace \
prometheus-operator \
prometheus-now \
alertmanager-main \
kube-state-metrics-now \
node-exporter-now \
; do \
basepath="$YSTACK_HOME/monitoring/$base/"
echo "# Applying $basepath ..."
k apply --server-side=true -k $basepath
done
KUBECONFIG="$KUBECONFIG.tmp" kubectl --context=$CONTEXTNAME -n ystack apply -k $YSTACK_HOME/registry/containerd-config/
y-kubeconfig-import "$KUBECONFIG.tmp"
echo "# Done. Master IP: $K3S_NODEIP_MASTER"