Installation -Upgrade K3s
Contents
Document Details
Prepared By | Reviewed By | Date | Document Version |
Fernando Cisneros | Artem Kalaitan | 21-June-2022 | V 1 |
Fernando Cisneros | Artem Kalaitan | 14-July-2022 | V 2 |
Fernando Cisneros | Artem Kalaitan | 27-July-2022 | V 3 |
Introduction
This document outlines the steps to install and update K3s servers and how to deploy and backup Synergy services.
Register Server – Reseller 1
Log in into Rancher cluster and click on Import Existing and choose Generic:
Choose an unique name for the cluster and configure 2 labels cluster_name=$CLUSTER_NAME cluster_reseller=$RESELLER_NAME and press Create:
Copy the registration command kubectl apply -f https://....k3s.getvisibility.com/v3/import/fr84....yaml and send it to the client.
Install Server - Client
Requirements
We use Kubernetes, an open-source container orchestration system to manage the application.
At the moment the only Kubernetes distribution supported is K3s (click here for the official documentation) by Suse Linux for both on-premise and cloud deployments. Our plan for the future is to extend the support to Amazon Elastic Kubernetes Service (EKS), Google Kubernetes Engine (GKE) and Azure Kubernetes Service (AKS).
The requirements for the Kubernetes cluster is a single node (1 virtual machine) with the following specs:
CPU cores: 8 (x86_64 processor with speed of 2.3 GHz or more)
RAM: 32GB
Disk: 300GB SSD
OS: we recommend Ubuntu 20.04.4 LTS (Focal Fossa), but you can also use RHEL 8.5, CentOS 7.9 or Suse Linux 15.3. If you are using CentOS or RHEL please refer to the official documentation for additional setup.
Firewall: the K3s server needs ports 80/TCP and 443/TCP to be publicly accessible
In order to download the application artifacts (Docker images and binaries), updates and configuration files, the cluster needs a public internet connection with download speed of 40 Mbps or more and upload speed of 8 Mbps or more. To speed up the initial setup process it is recommended to have a download speed of 100 Mbps or more.
Installation
Ensure the following items are in place and configured:
Domain Name Service (DNS)
Network Time Protocol (NTP)
Software Update Service - access to a network-based repository for software update packages.
Fixed private IPv4 address
Unique static hostname
As root run the following command to install of K3s:
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.23.9+k3s1" K3S_KUBECONFIG_MODE="644" sh -s - server --node-name=local-01 |
Run the registration command:
kubectl apply -f https://....k3s.getvisibility.com/v3/import/dxslsxcf84....yaml |
Monitor the progress of the installation: watch -c "kubectl get deployments -A"
The K3s deployment is complete when elements of all the deployments (coredns, local-path-provisioner, metrics-server, traefik and cattle-cluster-agent) show at least "1" as "AVAILABLE"
In case of errors you can inspect the logs of a pod using kubectl logs , e.g. kubectl logs cattle-cluster-agent-d96d648d8-wjvl9 -n cattle-system
Deploy Synergy – Reseller
Go to Rancher dashboard and wait for the new cluster to become Active:
Click on the cluster name and go to Apps > Charts and install the GetVisibility Essentials Helm chart:
Go to Apps > Charts and install the GetVisibility Monitoring Helm chart:
Install into Project: Default
4. Go to the global menu Continuous Delivery > Clusters and click on Edit config for the cluster:
5. Add 2 labels product=synergy environment=prod and press Save.
Update – Client
Synergy backend services
Updates and custom settings are automatically applied to all Synergy backend services as long as the cluster has access to the public internet and can connect to the management server.
In case there’s no internet connection or the management server is down, the cluster agent will keep trying to reach the management server until a connection can be established.
K3s cluster
To upgrade K3s from an older version to a specific version you can run the following command:
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=vX.Y.Z-rc1 sh - |
Stop the old k3s binary (e.g. systemctl stop k3s) and start it again (e.g. systemctl start k3s). For more details please refer to the official documentation.
Certificates
By default, certificates in K3s expire in 12 months. If the certificates are expired or have fewer than 90 days remaining before they expire, the certificates are rotated when K3s is restarted.
Backup - Client
Consul
Find the IP of the server where Consul is running (in case you have a multi-node cluster):
kubectl get pod/gv-essentials-consul-server-0 -o jsonpath='{.spec.nodeName}' |
Log into the server using SSH and execute the following command to take a snapshot of Consul:
kubectl exec -it gv-essentials-consul-server-0 -- consul snapshot save /consul/data/backup.snap |
Find the path where the snapshot has been save to:
kubectl get pvc/data-default-gv-essentials-consul-server-0 -o jsonpath='{.spec.volumeName}' | xargs -I{} kubectl get pv/{} -o jsonpath='{.spec.hostPath.path}' |
Copy the snapshot file to a safe place.
PostgreSQL
Find the IP of the server where the PostgreSQL master is running (in case you have a multi-node cluster):
kubectl get pod/gv-postgresql-0 -o jsonpath='{.spec.nodeName}' |
Log into the server using SSH and execute the following command to backup all databases:
kubectl exec -it gv-postgresql-0 -- bash -c "pg_dumpall -U gv | gzip > /home/postgres/pgdata/backup.sql.gz" |
Find the path where the backup has been save to:
kubectl get pvc/pgdata-gv-postgresql-0 -o jsonpath='{.spec.volumeName}' | xargs -I{} kubectl get pv/{} -o jsonpath='{.spec.hostPath.path}' |
Copy the backup file to a safe place.
End of Document
1 The registration process will be automated through the Customer Management API