#cloud-config %{ if length(extra_ssh_keys) > 0 } ssh_authorized_keys: %{ for ssh_key in extra_ssh_keys } - ${ssh_key} %{ endfor } %{ endif } write_files: - path: /opt/k3s/run_k3s.sh permissions: "0755" owner: root:root content: | #!/bin/bash set -x if [ ${db_engine} == "postgres" ]; then STORAGE_ENDPOINT="postgres://${db_username}:${db_password}@${db_address}:5432/${db_name}" elif [ ${db_engine} == "mysql" ]; then STORAGE_ENDPOINT="mysql://${db_username}:${db_password}@(${db_address})/${db_name}" elif [ ${db_engine} == "etcd" ]; then IFS=',' read -r -a private_ips <<< "${db_address}" for i in "$${!private_ips[@]}"; do STORAGE_ENDPOINT=$STORAGE_ENDPOINT"http://$${private_ips[i]}:2379", done STORAGE_ENDPOINT=$${STORAGE_ENDPOINT%?} fi while true; do if [ ${db_engine} == "embedded-etcd" ]; then curl -sfL https://get.k3s.io | K3S_CLUSTER_SECRET="${k3s_cluster_secret}" \ INSTALL_K3S_VERSION="${install_k3s_version}" \ INSTALL_K3S_EXEC="${k3s_server_args} --cluster-cidr=10.0.0.0/8 --no-deploy traefik --no-deploy servicelb --tls-san ${lb_address} %{ if master_index != 0 } --server https://${lb_address}:6443 %{ else } --cluster-init %{ endif }" sh - else curl -sfL https://get.k3s.io | K3S_CLUSTER_SECRET="${k3s_cluster_secret}" \ INSTALL_K3S_VERSION="${install_k3s_version}" \ INSTALL_K3S_EXEC="${k3s_server_args} --cluster-cidr=10.0.0.0/8 --no-deploy traefik --no-deploy servicelb --tls-san ${lb_address} %{ if use_ha == "true" } --datastore-endpoint=$STORAGE_ENDPOINT %{ endif }" sh - fi if [ $? -eq 0 ]; then break fi sleep 1 done runcmd: - echo "net.ipv4.neigh.default.gc_interval = 3600" >> /etc/sysctl.conf - echo "net.ipv4.neigh.default.gc_stale_time = 3600" >> /etc/sysctl.conf - echo "net.ipv4.neigh.default.gc_thresh3 = 16384" >> /etc/sysctl.conf - echo "net.ipv4.neigh.default.gc_thresh2 = 8192" >> /etc/sysctl.conf - echo "net.ipv4.neigh.default.gc_thresh1 = 4096" >> /etc/sysctl.conf - echo "fs.file-max = 12000500" >> /etc/sysctl.conf - echo "fs.nr_open = 20000500" >> /etc/sysctl.conf - echo "net.ipv4.tcp_mem = '10000000 10000000 10000000'" >> /etc/sysctl.conf - echo "net.ipv4.tcp_rmem = '1024 4096 16384'" >> /etc/sysctl.conf - echo "net.ipv4.tcp_wmem = '1024 4096 16384'" >> /etc/sysctl.conf - echo "net.core.rmem_max = 16384" >> /etc/sysctl.conf - echo "net.core.wmem_max = 16384" >> /etc/sysctl.conf - ulimit -n 20000000 - echo "# " >> /etc/security/limits.d/limits.conf - echo " * soft nofile 20000" >> /etc/security/limits.d/limits.conf - echo " * hard nofile 20000" >> /etc/security/limits.d/limits.conf - sysctl -p - apt-get update - apt-get install -y git vim software-properties-common resolvconf linux-headers-$(uname -r) - echo "nameserver 1.1.1.1" > /etc/resolvconf/resolv.conf.d/tail - echo "RateLimitIntervalSec=0" >> /etc/systemd/journald.conf - echo "RateLimitBurst=0" >> /etc/systemd/journald.conf - systemctl restart systemd-journald.service - systemctl start resolvconf %{ if master_index != 0 } - sleep 20 %{ endif } - /opt/k3s/run_k3s.sh %{ if debug != 0 } - sed -i 's/bin\/k3s/bin\/k3s --debug/g' /etc/systemd/system/k3s.service - systemctl daemon-reload - systemctl restart k3s %{ endif }