From 9878210c3e1dea48fbebbc29f4ff5437eb6f19a9 Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Wed, 6 Mar 2024 22:46:26 +0800 Subject: [PATCH] add fluxcd_all_in_one.sh k3s_all_in_one.sh --- scripts/fluxcd_all_in_one.sh | 30 ++++++++++++ scripts/k3s_all_in_one.sh | 93 ++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 scripts/fluxcd_all_in_one.sh create mode 100644 scripts/k3s_all_in_one.sh diff --git a/scripts/fluxcd_all_in_one.sh b/scripts/fluxcd_all_in_one.sh new file mode 100644 index 0000000..67b18eb --- /dev/null +++ b/scripts/fluxcd_all_in_one.sh @@ -0,0 +1,30 @@ +helm repo add stable https://charts.onwalk.net +helm repo update +kubectl create namespace gitops-system || true +helm upgrade --install fluxcd stable/flux2 --version 2.12.1 -n gitops-system -f fluxcd-values.yaml + +cat > cluster-config.yaml << EOF +apiVersion: source.toolkit.fluxcd.io/v1beta2 +kind: GitRepository +metadata: + name: stable + namespace: gitops-system +spec: + interval: 1m0s + ref: + branch: main + url: https://github.com/svc-design/gitops.git +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: cluster + namespace: gitops-system +spec: + interval: 1m0s + sourceRef: + kind: GitRepository + name: stable + path: ./clusters/k3s-local + prune: true +EOF diff --git a/scripts/k3s_all_in_one.sh b/scripts/k3s_all_in_one.sh new file mode 100644 index 0000000..9d5431d --- /dev/null +++ b/scripts/k3s_all_in_one.sh @@ -0,0 +1,93 @@ +#!/bin/sh + +function get_local_ip() { + local_ip=$(hostname -I | awk '{print $1}') + echo "$local_ip" +} + +function setup_k3s() { + local disable_proxy="--disable-kube-proxy" + local disable_cni="--flannel-backend=none --disable-network-policy" + local default="--disable=traefik,servicelb --data-dir=/opt/rancher/k3s --kube-apiserver-arg service-node-port-range=0-50000" + + sudo mkdir -pv /opt/rancher/k3s + + ping -c 1 google.com > /dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "当前主机在国际网络上" + curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=$version sh -s - $default + else + echo "当前主机在大陆网络上" + curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_VERSION=$version INSTALL_K3S_MIRROR=cn sh -s - $default + fi + mkdir -pv ~/.kube/ && sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config +} + +function setup_helm() +{ + ping -c 1 google.com > /dev/null 2>&1 + if [ $? -eq 0 ]; then + echo "当前主机在国际网络上" + curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash + else + echo "当前主机在大陆网络上" + case `uname -m` in + x86_64) ARCH=amd64; ;; + aarch64) ARCH=arm64; ;; + loongarch64) ARCH=loongarch64; ;; + *) echo "un-supported arch, exit ..."; exit 1; ;; + esac + sudo rm -rf helm.tar.gz* /usr/local/bin/helm || echo true + sudo wget --no-check-certificate https://mirrors.onwalk.net/tools/linux-${ARCH}/helm.tar.gz && sudo tar -xvpf helm.tar.gz -C /usr/local/bin/ + sudo chmod 755 /usr/local/bin/helm + fi +} + +function setup_k3s_ingress() { + local ingress_ip=$(get_local_ip) + + cat > value.yaml < nginx-cm.yaml << EOF +apiVersion: v1 +kind: ConfigMap +metadata: + name: nginx-nginx-ingress + namespace: ingress +data: + use-ssl-certificate-for-ingress: "false" + external-status-address: $ingress_ip + proxy-connect-timeout: 10s + proxy-read-timeout: 10s + client-header-buffer-size: 64k + client-body-buffer-size: 64k + client-max-body-size: 1000m + proxy-buffers: 8 32k + proxy-body-size: 1024m + proxy-buffer-size: 32k + proxy-connect-timeout: 10s + proxy-read-timeout: 10s +EOF + + helm repo add nginx-stable https://helm.nginx.com/stable || echo true + helm repo up + kubectl create namespace ingress || echo true + helm upgrade --install nginx nginx-stable/nginx-ingress --version=0.15.0 --namespace ingress -f value.yaml + kubectl apply -f nginx-cm.yaml + kubectl patch svc nginx-nginx-ingress -n ingress --patch-file nginx-svc-patch.yaml +} + +# Main script +setup_k3s +setup_helm +setup_k3s_ingress