Update k3s.sh
This commit is contained in:
parent
73613bc44d
commit
32a755de16
|
@ -55,6 +55,12 @@ common_extra_args="--kubelet-arg containerd=/run/k3s/containerd/containerd.sock"
|
||||||
server_extra_args="--no-deploy servicelb --no-deploy traefik --kube-controller-manager-arg bind-address=0.0.0.0 --kube-proxy-arg metrics-bind-address=0.0.0.0 --kube-scheduler-arg bind-address=0.0.0.0 --etcd-expose-metrics true"
|
server_extra_args="--no-deploy servicelb --no-deploy traefik --kube-controller-manager-arg bind-address=0.0.0.0 --kube-proxy-arg metrics-bind-address=0.0.0.0 --kube-scheduler-arg bind-address=0.0.0.0 --etcd-expose-metrics true"
|
||||||
agent_extra_args="--node-label worker=true"
|
agent_extra_args="--node-label worker=true"
|
||||||
|
|
||||||
|
# Create Grafana admin credentials
|
||||||
|
|
||||||
|
grafana_user="adminuser" # desired grafana username
|
||||||
|
grafana_password="adminpassword" # Generates a random 12-character password
|
||||||
|
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
# HELPER FUNCTIONS #
|
# HELPER FUNCTIONS #
|
||||||
#############################################
|
#############################################
|
||||||
|
@ -291,8 +297,7 @@ echo -e " \033[32;5mBe patient as it downloads and configures a number of pods i
|
||||||
echo -e " \033[32;5mInstalling Longhorn - It can take a while for all pods to deploy...\033[0m"
|
echo -e " \033[32;5mInstalling Longhorn - It can take a while for all pods to deploy...\033[0m"
|
||||||
kubectl apply -f https://raw.githubusercontent.com/JamesTurland/JimsGarage/main/Kubernetes/Longhorn/longhorn.yaml
|
kubectl apply -f https://raw.githubusercontent.com/JamesTurland/JimsGarage/main/Kubernetes/Longhorn/longhorn.yaml
|
||||||
kubectl get pods \
|
kubectl get pods \
|
||||||
--namespace longhorn-system \
|
--namespace longhorn-system
|
||||||
--watch
|
|
||||||
|
|
||||||
# Step 17: Print out confirmation
|
# Step 17: Print out confirmation
|
||||||
|
|
||||||
|
@ -300,3 +305,109 @@ kubectl get nodes
|
||||||
kubectl get svc -n longhorn-system
|
kubectl get svc -n longhorn-system
|
||||||
|
|
||||||
echo -e " \033[32;5mHappy Kubing! Access Longhorn through Rancher UI\033[0m"
|
echo -e " \033[32;5mHappy Kubing! Access Longhorn through Rancher UI\033[0m"
|
||||||
|
|
||||||
|
# Step 18: Download and modify values.yaml for Prometheus
|
||||||
|
|
||||||
|
# Ensure yq is installed
|
||||||
|
if ! command -v yq &> /dev/null; then
|
||||||
|
echo "yq is not installed. Installing yq..."
|
||||||
|
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && chmod +x /usr/bin/yq
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e " \033[32;5mSetting up Prometheus...\033[0m"
|
||||||
|
|
||||||
|
# Download values.yaml
|
||||||
|
wget https://raw.githubusercontent.com/techno-tim/launchpad/master/kubernetes/kube-prometheus-stack/values.yml -O values.yaml
|
||||||
|
|
||||||
|
# Get master node IPs
|
||||||
|
master_ips=$(for node in "${!nodes[@]}"; do
|
||||||
|
if [ "$(get_node_type $node)" == "master" ]; then
|
||||||
|
echo "$(get_node_ip $node)"
|
||||||
|
fi
|
||||||
|
done | sort -u)
|
||||||
|
|
||||||
|
echo '------'
|
||||||
|
echo 'Master IPs: '
|
||||||
|
echo $master_ips
|
||||||
|
echo '------'
|
||||||
|
|
||||||
|
# Function to update endpoints in values.yaml
|
||||||
|
update_endpoints() {
|
||||||
|
local component=$1
|
||||||
|
echo "Updating endpoints for $component"
|
||||||
|
|
||||||
|
# Create the new endpoints content
|
||||||
|
local new_endpoints=""
|
||||||
|
for ip in $master_ips; do
|
||||||
|
new_endpoints+=" - $ip\n"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Use awk to replace the endpoints section
|
||||||
|
awk -v component="$component" -v new_endpoints="$new_endpoints" '
|
||||||
|
$0 ~ "^" component ":" {
|
||||||
|
print $0
|
||||||
|
in_component = 1
|
||||||
|
next
|
||||||
|
}
|
||||||
|
in_component && /^[a-z]/ {
|
||||||
|
in_component = 0
|
||||||
|
}
|
||||||
|
in_component && /^ *endpoints:/ {
|
||||||
|
print " endpoints:"
|
||||||
|
print new_endpoints
|
||||||
|
skip = 1
|
||||||
|
next
|
||||||
|
}
|
||||||
|
skip && /^[^ ]/ {
|
||||||
|
skip = 0
|
||||||
|
}
|
||||||
|
!skip { print }
|
||||||
|
' values.yaml > values.yaml.tmp && mv values.yaml.tmp values.yaml
|
||||||
|
|
||||||
|
echo "Updated $component endpoints"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Update endpoints for different components
|
||||||
|
components=("kubeControllerManager" "kubeEtcd" "kubeScheduler" "kubeProxy")
|
||||||
|
for component in "${components[@]}"; do
|
||||||
|
update_endpoints "$component"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create Grafana admin credentials
|
||||||
|
echo -e " \033[32;5mCreating Grafana admin credentials...\033[0m"
|
||||||
|
|
||||||
|
# Create Kubernetes secret for Grafana
|
||||||
|
kubectl create namespace monitoring --dry-run=client -o yaml | kubectl apply -f -
|
||||||
|
kubectl create secret generic grafana-admin-credentials \
|
||||||
|
--from-literal=admin-user=$grafana_user \
|
||||||
|
--from-literal=admin-password=$grafana_password \
|
||||||
|
-n monitoring \
|
||||||
|
--dry-run=client -o yaml | kubectl apply -f -
|
||||||
|
|
||||||
|
echo -e " \033[32;5mGrafana admin credentials created. Username: $grafana_user, Password: $grafana_password\033[0m"
|
||||||
|
echo -e " \033[32;5mPlease make note of these credentials and store them securely.\033[0m"
|
||||||
|
|
||||||
|
# Update Grafana admin credentials in values.yaml
|
||||||
|
yq eval '.grafana.admin.existingSecret = "grafana-admin-credentials"' -i values.yaml
|
||||||
|
yq eval '.grafana.admin.userKey = "admin-user"' -i values.yaml
|
||||||
|
yq eval '.grafana.admin.passwordKey = "admin-password"' -i values.yaml
|
||||||
|
|
||||||
|
# Verify the changes
|
||||||
|
for component in "${components[@]}"; do
|
||||||
|
echo "Endpoints for ${component}:"
|
||||||
|
yq eval ".${component}.endpoints" values.yaml
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e " \033[32;5mvalues.yaml has been updated with master node IPs\033[0m"
|
||||||
|
|
||||||
|
# Step 19: Install Prometheus using Helm
|
||||||
|
echo -e " \033[32;5mInstalling Prometheus...\033[0m"
|
||||||
|
|
||||||
|
# Add prometheus-community helm repo
|
||||||
|
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
|
||||||
|
helm repo update
|
||||||
|
|
||||||
|
# Install kube-prometheus-stack
|
||||||
|
helm install prometheus prometheus-community/kube-prometheus-stack -f values.yaml --namespace monitoring --create-namespace
|
||||||
|
|
||||||
|
echo -e " \033[32;5mPrometheus has been installed!\033[0m"
|
||||||
|
|
Loading…
Reference in New Issue