Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Contents

Table of Contents

Anchor
_heading=h.gjdgxs
_heading=h.gjdgxs
Document Details

...

Anchor
_heading=h.30j0zll
_heading=h.30j0zll
Introduction

This document outlines the steps to install and update K3s servers and how to deploy and backup Synergy services.

Anchor
_heading=h.1fob9te
_heading=h.1fob9te
Register Server – Reseller 1

...

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

...

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.23.9+k3s1" K3S_KUBECONFIG_MODE="644" sh -s - server --node-name=local-01

...

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.

...

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

...

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.

...

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.

...