diff --git a/docs/index.rst b/docs/index.rst index 082dbdae91af60c29b0bbc0986ae42bcfd2eab43..fa8f3ea2648fb70e47fc76e21dfd8dd7352021ff 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -26,7 +26,7 @@ For more information, go to `the Stackspin website`_. :maxdepth: 2 :caption: Installation - installation/overview + installation/install_cli installation/create_cluster installation/install_stackspin diff --git a/docs/installation/_dns_config.rst b/docs/installation/_dns_config.rst new file mode 100644 index 0000000000000000000000000000000000000000..dc2de1afab70e68e1cec164c6ae2cf817188fafb --- /dev/null +++ b/docs/installation/_dns_config.rst @@ -0,0 +1,19 @@ +Stackspin secures your connections with https certificates from `Let's Encrypt +<https://letsencrypt.org>`__. In order to do this, DNS entries need to be +created before you start the installation. + +Stackspin needs two DNS records that point to your cluster. Create these two DNS +records: + +- An ``A`` record ``stackspin.example.org`` pointing to the cluster's IP address, +- A ``CNAME`` record ``*.stackspin.example.org`` pointing to ``stackspin.example.org``. + +.. Note:: + + It is also possible to host Stackspin on a domain (with + no dedicated subdomain). That does imply that the included WordPress site + will be hosted on your root domain ``example.org``. In that case, make these + DNS records instead: + + - An ``A`` record ``example.org`` pointing to the VPS's IP address, + - A ``CNAME`` record ``*.example.org`` pointing to ``example.org``. diff --git a/docs/installation/_install_on_a_vps.rst b/docs/installation/_install_on_a_vps.rst new file mode 100644 index 0000000000000000000000000000000000000000..623c8e7fbfe7b5447631f12d9b69354d3e1a3483 --- /dev/null +++ b/docs/installation/_install_on_a_vps.rst @@ -0,0 +1,78 @@ +We recommend manually installing Stackspin on a Greenhost VPS as explained +below. However, if you plan on installing many Stackspin instances, click +the tab *"ADVANCED: Use the Greenhost API"* to learn how to automatically create +VPSs and DNS records and install Stackspin on them. + +This document describes how you can use Stackspin's CLI to install +`k3s`_, a lightweight Kubernetes distribution on a virtual +private server. + +For Stackspin we will set up a "single-node" kubernetes cluster. This means +everything runs on the same VPS. Support for "multi-node" clusters (a +Kubernetes cluster on more than one VPS) will come in the future. + +.. tab-set:: + + .. tab-item:: Manually install on a VPS + + .. include:: _manual_install.rst + + .. tab-item:: ADVANCED: Use the Greenhost API + + .. include:: _use_greenhost_api.rst + +.. _configure_dns: + +**Step 2: DNS Configuration** + +.. include:: _dns_config.rst + +**Step 3: Create Kubernetes cluster** + +Before you continue, make sure your DNS configuration is propagated. You +can do this by making sure ``ping`` shows your VPS's IP address: + +.. code:: bash + + $ ping stackspin.example.org + # Example output of the command: + PING stackspin.example.org (1.2.3.4) 56(84) bytes of data. + 64 bytes from 1.2.3.4 (1.2.3.4): icmp_seq=1 ttl=62 time=9.43 ms + 64 bytes from 1.2.3.4 (1.2.3.4): icmp_seq=2 ttl=62 time=52.5 ms + ... + +If you've never logged into this machine before, you might need to accept the +SSH hostkey before you can start the installation process. To be sure, log into +your VPS once before you continue: + +.. code:: bash + + $ ssh root@stackspin.example.org + +If necessary, check your hostkey fingerprint and type ``yes`` to continue. You +should get a shell on your VPS. Type ``exit`` to quit the shell and continue on +your provisioning machine. + +Run the ``install`` command with the CLI to completely configure your VPS for +Stackspin. + +:: + + $ python -m stackspin stackspin.example.org install + + +This will take a few minutes. It tries to connect to your VPS as the root +user, then installs `k3s`_. In addition it installs command line tools +`kubectl`_ (Kubernetes cli tool), `flux`_ (used for automated updates) and +`velero`_ (Kubernetes resources and persistent volumes backup) so you can +manage the Kubernetes cluster from a shell on the VPS. + +.. _kubectl: https://kubernetes.io/docs/reference/kubectl/overview +.. _flux: https://fluxcd.io +.. _k3s: https://k3s.io/ +.. _velero: https://velero.io + +.. Note:: + It is possible to re-run the ``install`` command with a newer version + of the installation script. Refer to the :ref:`upgrade_guide` for + details. diff --git a/docs/installation/_install_on_existing_cluster.rst b/docs/installation/_install_on_existing_cluster.rst new file mode 100644 index 0000000000000000000000000000000000000000..74461986c6dd9c226c42919348c9b079e0819ef9 --- /dev/null +++ b/docs/installation/_install_on_existing_cluster.rst @@ -0,0 +1,22 @@ +.. Note:: + - Installation on an existing Kubernetes cluster ist still experiental and + might not work depending on the setup of your cluster/cloud provider. + We'll be happy to recieve feedback from your experiences though altough + we cannot guarrente ! + +**Prerequisites** + +- A single-node Kubernetes cluster +- A ``kube_config.yml`` file for API access + +**Configure DNS** + +.. include:: _dns_config.rst + +**Setup** + +- Create a directory containing your cluster configuration, i.e. + ``mkdir -p clusters/stackspin.example.org`` +- Copy your ``kube_config.yml`` file inside your cluster config directory + and rename it to ``kube_config_cluster.yml``: + ``cp kube_config.yml clusters/stackspin.example.org/kube_config_cluster.yml`` diff --git a/docs/installation/_manual_install.rst b/docs/installation/_manual_install.rst new file mode 100644 index 0000000000000000000000000000000000000000..261cb4052d6e8dd81e7e8333cf05cadd93e6c245 --- /dev/null +++ b/docs/installation/_manual_install.rst @@ -0,0 +1,52 @@ +**Prerequisites** + +These instructions assume you have a VPS or other kind of server +ready that meets the following requirements: + +- Debian 11 (bullseye) installed +- A public IP address +- The ability to create DNS records for this IP +- 6 cores and 12 GB of RAM +- At least 25GB of disk space for installation, plus more for + application data. We recommend starting with at least 30GB. +- Root ssh access + +You'll need the machine's *IP address*. + +This guide assumes the VPS's IP address is ``1.2.3.4`` and we +install on the domain ``stackspin.example.org``. Substitute these +two variables with your IP address and the (sub)domain you want +Stackpin to be available on. + +.. _create_cluster: + +**Step 1: Create cluster configuration** + +To create a config for your cluster, use the ``create`` subcommand of the +Stackspin CLI. First, choose a name (we chose ``stackspin.example.org``) for +your cluster. Then run the following command to get information about +the ``create`` subcommand: + +:: + + $ python -m stackspin stackspin.example.org create --help + +Create the initial Stackspin configuration for your VPS by running the +following command: + +:: + + $ python -m stackspin stackspin.example.org create \ + stackspin.example.org \ + --ip-address 1.2.3.4 + +This configures your cluster under the fully qualified domain name (FQDN) +``stackspin.example.org``, To break down the command: + +- the first, positional argument ``stackspin.example.org`` tells the cluster the domain + it will be hosted on. This should be a (subdomain of a) domain you own. +- ``--ip-address 1.2.3.4`` tells the script the IP address of your VPS. This + will be used to find the VPS during the installation procedure. + +The configuration has now been written to the ``clusters/stackspin.example.org`` on +your provisioning machine. diff --git a/docs/installation/_use_greenhost_api.rst b/docs/installation/_use_greenhost_api.rst new file mode 100644 index 0000000000000000000000000000000000000000..2ba2699fbdf86c35ca92ea369cfd0e8dc2dfce02 --- /dev/null +++ b/docs/installation/_use_greenhost_api.rst @@ -0,0 +1,86 @@ +**Prerequisites** + +Before you can start, you need the following things: + +1. An API key with Customer rights. + + .. raw:: html + + <details> + <summary><a>Read how to get an API key</a></summary> + <p> + <ol> + <li>In the Cosmos service centre, click your webmaster account name on + the top right corner</li> + <li>Go to "User settings"</li> + <li>Click "API keys"</li> + <li>Click "New API key"</li> + <li>Click "Generate new key"</li> + <li>Give the key "Customer", "CloudCustomer" or "API" access rights. You + will need "Customer" rights if you want to automatically generate DNS + rules. If you do not have this right, you have to `manually set the + right DNS rules <#dns-entries>`__ + later.</li> + <li>Copy the generated key and run export it to this variable in a + terminal:</li> + </ol> + </p> + </details> + + Make sure the Stackspin CLI can use your token by storing it in a + ``COSMOS_API_TOKEN`` variable. + + .. code:: bash + + $ export COSMOS_API_TOKEN=<paste your API key here> + + In *the same terminal*, you can now use the ``create`` subcommand + +2. An SSH key ID from the Cosmos Service Centre's "VPS Cloud" section. This SSH + key will get Root access on the VPS. + + - You can find your SSH key ID by going to VPS Cloud -> SSH keys and + checking the link under "Show key". The numerical part is your SSH + key ID. + + - You can also use the API to list ssh keys and find it there. + Read the `Greenhost API + documentation <https://service.greenhost.net/cloud/ApiDoc#/default>`__ + for more information* + +3. The ability to create DNS records that point to the VPS that gets created + +**Step 1: Create VPS and cluster configuration** + +We'll use the ``create`` subcommand of the Stackspin CLI to create a VPS +and a corresponding configuration file on the provisioning machine. + +Here is an example of a complete creation command: + +:: + + $ python -m stackspin stackspin.example.org create \ + --create-droplet \ + --create-hostname stackspin.example.org \ + --ssh-key-id 112 \ + --create-domain-records \ + --subdomain stackspin \ + example.org + +Let's break down the arguments: + +- ``--create-droplet``: Use the Greenhost API to create a new VPS +- ``--create-hostname stackspin.example.org``: Create a VPS with hostname ``stackspin.example.org`` +- ``--ssh-key-id 112``: Use SSH key ID 112 (you can find your SSH key ID in + the `Cosmos Service Centre <https://service.greenhost.net>`__ under *VPS Cloud* -> *Installation SSH Keys*. Hover over a button there to see the ID in the URL it uses. +- ``--create-domain-records``: Use the Greenhost API to create DNS records If + you do this, you can skip *Step 2: DNS Configuration*. The following records + are automatically created: + + - An ``A`` record ``stackspin.example.org`` pointing to the VPSs IP address + - A ``CNAME`` record ``*.stackspin.example.org`` pointing to ``stackspin.example.org``. + +- ``--subdomain stackspin``: Only needed when you use ``--create-domain-records`` so + the Greenhost API can find your domain. Instead of using positional argument + ``stackspin.example.org`` you need to provide. If you want to host Stackspin + on a root domain, you can omit the ``subdomain`` argument. diff --git a/docs/installation/create_cluster.rst b/docs/installation/create_cluster.rst index 58b5195b5d6fd4fb61e2d55e172f0b7d606e7a9f..a62bd9b6e3fbfa48623d555671c465e504c97ce7 100644 --- a/docs/installation/create_cluster.rst +++ b/docs/installation/create_cluster.rst @@ -1,238 +1,22 @@ .. _create_kubernetes_cluster: -=========================== -Create a kubernetes cluster -=========================== +========================================= +Create and configure a kubernetes cluster +========================================= -This document describes how you can use Stackspin to install -`k3s`_, a lightweight Kubernetes distribution on a virtual -private server. +Below, choose whether you want to install Stackspin on a VPS or an existing +Kubernetes cluster. We recommend manually installing it on a VPS, this is the +most tested solution. -For Stackspin we will set up a "single-node" kubernetes cluster. This means -everything runs on the same VPS. Support for "multi-node" clusters (a -Kubernetes cluster on more than one VPS) will come in the future. +.. tab-set:: -Prerequisites -============= + .. tab-item:: A. Install on a VPS -During these instructions, you are asked to create a VPS, or have a -bare metal server ready. The server should meet these requirements: + .. include:: _install_on_a_vps.rst -- Debian 11 (bullseye) installed -- A public IP address -- The ability to create DNS records for this IP -- 6 cores and 12 GB of RAM -- At least 25GB of disk space for installation, plus more for - application data. We recommend starting with 30GB. -- Root ssh access + .. tab-item:: B. Install on existing cluster -- ``ssh-agent`` to give you access to your VPS + .. include:: _install_on_existing_cluster.rst -In this guide, we will create a cluster with IP address ``1.2.3.4`` on domain -``stackspin.example.org``. Substitute these two variables with your IP address and -your domain. - -.. _create_config: - -Step 1: Create cluster configuration -==================================== - -To create a config for your cluster, use the ``create`` subcommand of the -Stackspin CLI. First, choose a name (we chose ``stackspin.example.org``) for -your cluster. Then run the following command to get information about -the ``create`` subcommand: - -:: - - $ python -m stackspin stackspin.example.org create --help - -If you want the installation script to automatically create a VPS for you, check -:ref:`setup-with-greenhost-api`. -Otherwise, continue here. - -If you want to install Stackspin on a non-Greenhost VPS, we assume -you already have a machine with a world-facing IP address. Make sure -that your VPS meets our `prerequisites <#prerequisites>`__. You'll need -its *hostname* and its *IP address*. - -Create the initial Stackspin configuration for your VPS by running the -following command: - -:: - - $ python -m stackspin stackspin.example.org create \ - stackspin.example.org \ - --ip-address 1.2.3.4 - -This configures your cluster under the fully qualified domain name (FQDN) -``stackspin.example.org``, To break down the command: - -- the first, positional argument ``stackspin.example.org`` tells the cluster the domain - it will be hosted on. This should be a (subdomain of a) domain you own. -- ``--ip-address 1.2.3.4`` tells the script the IP address of your VPS. This - will be used to find the VPS during the installation procedure. - -The configuration has now been written to the ``clusters/stackspin.example.org`` on -your provisioning machine. - -.. _configure_dns: - -Step 2: Configure DNS -===================== - -Next, make sure that you have two DNS records that point to your -cluster. Create these two DNS records: - -- An ``A`` record ``stackspin.example.org`` pointing to the VPS's IP address, -- A ``CNAME`` record ``*.stackspin.example.org`` pointing to ``stackspin.example.org``. - -.. Note:: - It is also possible to host Stackspin on a domain (with - no dedicated subdomain). That does imply that the included WordPress site - will be hosted on your root domain ``example.org``. In that case, make these - DNS records instead: - - - An ``A`` record ``example.org`` pointing to the VPS's IP address, - - A ``CNAME`` record ``*.example.org`` pointing to ``example.org``. - -Stackspin will fetch https certificates with `Let's -Encrypt <https://letsencrypt.org>`__ by default. In order to do this DNS -entries need to be created. - -.. _create_cluster: - -Step 3: Create cluster -====================== - -You're almost ready to start the Stackspin installation script. -First, make sure your DNS configuration is propagated. To do so, make -sure 'ping' shows your VPS's IP address: - -:: - - $ ping stackspin.example.org - -The ``install`` command will try to log into your machine as the ``root``\ user -using SSH. - -Run the ``install`` command with the CLI to completely configure your VPS for -Stackspin. - -:: - - $ python -m stackspin stackspin.example.org install - - -This will take a few minutes. It installs `k3s`_, a lightweight -Kubernetes and useful tools like `kubectl`_ (Kubernetes cli tool), `krew`_ -(a kubectl plugin manager), `flux`_ (used for automated updates) and `velero`_ -(Kubernetes resources and persistent volumes backup) on it. - -.. _kubectl: https://kubernetes.io/docs/reference/kubectl/overview -.. _flux: https://fluxcd.io -.. _k3s: https://k3s.io/ -.. _krew: https://krew.sigs.k8s.io -.. _velero: https://velero.io - -.. Note:: - It is possible to re-run the ``install`` command with a newer version of the - installation script. This usually updates k3s and can have other benefits. - -Now you have a single-node k3s/Kuberetes cluster running and can continue with +Now that you have a Kuberetes cluster running you can continue to :ref:`install_stackspin`. - -Advanced installation -===================== - -.. _setup-with-greenhost-api: - -Cluster creation with the Greenhost API ---------------------------------------- - -- Before you can start, you need to have an API key with Customer - rights. - - 1. In the Cosmos service centre, click your webmaster account name on - the top right corner - 2. Go to "User settings" - 3. Click "API keys" - 4. Click "New API key" - 5. Click "Generate new key" - 6. Give the key "Customer", "CloudCustomer" or "API" access rights. You - will need "Customer" rights if you want to automatically generate DNS - rules. If you do not have this right, you have to `manually set the - right DNS rules <#dns-entries>`__ - later. - 7. Copy the generated key and run export it to this variable in a - terminal: - - :: - - $ export COSMOS_API_TOKEN=<paste your API key here> - - 8. In *the same terminal*, you can now use the ``create`` subcommand - -- There are two ways to let the installation program know which VPS to use: - - 1. Based on an already existing `Greenhost <https://greenhost.net>`__ - VPS, using the ``--droplet-id`` argument. - - Find the ID of your VPS either in the Greenhost Cosmos interface (it is - the numeric part of the URL in the "Manage VPS" screen). - - 2. By creating a new VPS through the API, using the ``--create-droplet`` - argument. - - In that case, make sure to also provide the ``--create-hostname`` and - ``--ssh-key-id`` arguments. - - You can find your SSH key ID by going to VPS Cloud -> SSH keys and - checking the link under "Show key". The numerical part is your SSH - key ID. - - *Note: You can also use the API to list ssh keys and find it there. - Read the `Greenhost API - documentation <https://service.greenhost.net/cloud/ApiDoc#/default>`__ - for more information* - -- In both cases you need to provide the ``DOMAIN_NAME`` positional - argument. - - If you use a subdomain (e.g. ``stackspin.yourdomain.com``), use the - ``--subdomain`` command as follows: - - :: - - $ python -m stackspin stackspin.example.org create --subdomain stackspin example.org - -- Here is an example of a complete creation command: - - :: - - $ python -m stackspin stackspin.example.org create \ - --create-droplet \ - --create-hostname stackspin.example.org \ - --ssh-key-id 112 \ - --create-domain-records \ - --subdomain stackspin \ - example.org - - Let's break down the arguments: - - - ``--create-droplet``: Use the Greenhost API to create a new VPS - - ``--create-hostname stackspin.example.org``: Create a VPS with hostname ``stackspin.example.org`` - - ``--ssh-key-id 112``: Use SSH key ID 112 (you can find your SSH key ID in - the `Cosmos Service Centre <https://service.greenhost.net>`__ under *VPS Cloud* -> *Installation SSH Keys*. Hover over a button there to see the ID in the URL it uses. - - ``--create-domain-records``: Use the Greenhost API to create DNS records - If you do this, you can skip :ref:`configure_dns`. The following records are - created: - - - An ``A`` record ``stackspin.example.org`` pointing to the VPSs IP address - - A ``CNAME`` record ``*.stackspin.example.org`` pointing to ``stackspin.example.org``. - - - ``--subdomain stackspin``: Only needed when you use ``--create-domain-records`` so - the Greenhost API can find your domain. Instead of using positional argument - ``stackspin.example.org`` you need to provide - -You can now continue to :ref:`configure_dns`, or :ref:`create_cluster` if you used the API to -create the DNS records. diff --git a/docs/installation/overview.rst b/docs/installation/install_cli.rst similarity index 82% rename from docs/installation/overview.rst rename to docs/installation/install_cli.rst index 969558b50aeae3104957128551742a8a4d770aef..4cb34dfb609a6152109abb25f54d5a2727af18d2 100644 --- a/docs/installation/overview.rst +++ b/docs/installation/install_cli.rst @@ -15,16 +15,13 @@ Installation overview please do not use a server that functions as anything other than a testing ground. -.. note:: - You should also have a trusted machine to run the installer on, i.e. your - laptop. We call this the ``provisioning machine``. - All commands in these installation instructions need to be - run this provisioning machine that is *not* the server that will run - Stackspin, unless specified otherwise. - Setup ===== +This page will guide you through the installation of the "Stackspin CLI". The +CLI can be used to set up Stackspin on a different machine that is connected to +the internet. It also functions as a starting point for running tests. + Common prerequisites -------------------- @@ -37,6 +34,15 @@ Stackspin on an existing cluster, these are the common prerequisites: virtualenv <https://docs.python.org/3/tutorial/venv.html>`__ to make sure we do not change any of your other projects. Install virtualenv by running ``pip3 install --user venv`` or ``apt install python3-venv``. +- You need a recent version of Pip. If you run into problems during ``pip + install`` you might need to run ``pip install --upgrade pip``. + +.. note:: + You should also have a trusted machine to run the installer on, i.e. your + laptop. We call this the ``provisioning machine``. + All commands in these installation instructions need to be + run this provisioning machine that is *not* the server that will run + Stackspin, unless specified otherwise. Clone the Stackspin git repository ------------------------------------- @@ -49,8 +55,8 @@ and checkout the latest release branch (currently ``v0.7``): $ git clone -b v0.7 https://open.greenhost.net/stackspin/stackspin.git $ cd stackspin -Create a python virtual environment ------------------------------------ +Create a python virtual environment (Optional) +---------------------------------------------- Create a python virtual environment called "env" that uses python 3. This makes sure we do not change any of your other python projects. The @@ -95,11 +101,8 @@ directory of the git repository. In this tutorial, we're using $ python -m stackspin stackspin.example.org --help -Installation options -==================== +Kubernetes Cluster +================== -1. If you want to create a Kubernetes cluster from scratch on a dedicated server - or virtual machine please start with :ref:`create_kubernetes_cluster` and - then continue with :ref:`install_stackspin`. -#. If you want to install Stackspin on an existing Kubernetes cluster you can - skip the above instructions and start with :ref:`install_stackspin`. +The next chapter, :ref:`create_kubernetes_cluster`, will explain setting up +and/or configuring a Kubernetes cluster to install Stackspin on. diff --git a/docs/installation/install_stackspin.rst b/docs/installation/install_stackspin.rst index c38b8762317c05bfb5e083545579479f895e34f5..d39c4e34bdc41a91369acaf502e6912223378e0f 100644 --- a/docs/installation/install_stackspin.rst +++ b/docs/installation/install_stackspin.rst @@ -1,51 +1,20 @@ .. _install_stackspin: -==================== +================= Install Stackspin -==================== - -This guide explains how to install Stackspin either on an existing Kubernetes -cluster that you have setup entirely yourself, or on a cluster you created -following the Stackspin :ref:`create_kubernetes_cluster` guide. -Please choose one of the below options: - -.. tab-set:: - - .. tab-item:: A. Install on cluster created with Stackspin cli - - If you followed the :ref:`create_kubernetes_cluster` guide to setup a - Kubernetes cluster using the Stackspin CLI tool you're all set and - can continue by following the steps below. - - .. tab-item:: B. Install on existing cluster - - .. Note:: - - Installation on an existing Kubernetes cluster ist still experiental and - might not work depending on the setup of your cluster/cloud provider. - We'll be happy to recieve feedback from your experiences though altough - we cannot guarrente ! - - **Prerequisites**: - - - A single-node Kubernetes cluster - - A ``kube_config.yml`` file for API access +================= - **Configure DNS**: Please follow :ref:`configure_dns` how to setup the DNS records for Stackspin. - - **Setup**: - - - Create a directory containing your cluster configuration, i.e. - ``mkdir -p clusters/stackspin.example.org`` - - Copy your ``kube_config.yml`` file inside your cluster config directory - and rename it to ``kube_config_cluster.yml``: - ``cp kube_config.yml clusters/stackspin.example.org/kube_config_cluster.yml`` - - Continue by following the steps below. +This guide explains how to install Stackspin on the Kubernetes cluster you have +configured in the previous step. .. _flux_config: -Flux configuration -================== +Step 1: Flux configuration +========================== + +Flux will run inside your Stackspin cluster to install and upgrade applications. +It needs to be configured once, using the ``flux`` command line tool and scripts +provided by us in the Stackspin repository. .. _flux_prerequisites: @@ -53,36 +22,40 @@ Prerequisites ------------- - ``kubectl`` (`installation instructions <https://kubernetes.io/docs/tasks/tools/#kubectl>`__) -- ``flux version 0.22.0`` `Download flux_0.22.0_linux_amd64.tar.gz <https://github.com/fluxcd/flux2/releases/download/v0.22.0/flux_0.22.0_linux_amd64.tar.gz>`_ +- ``flux version 0.22.0`` (`Download flux_0.22.0_linux_amd64.tar.gz <https://github.com/fluxcd/flux2/releases/download/v0.22.0/flux_0.22.0_linux_amd64.tar.gz>`_) + +Configuration +------------- Copy the file ``install/.flux.env.example`` to your cluster dir ``clusters/stackspin.example.org/.flux.env``. This file contains the last bit of -information you need to configure. You **have to** configure the following -values. The rest are optional. +information you need to configure. Make sure not to put any quotes around your +values, because that can make the resulting yaml files invalid. + +Cluster information +~~~~~~~~~~~~~~~~~~~ -- ``ip_address``: The IP address of your cluster -- ``domain``: The FQDN of your cluster -- ``admin_email``: a valid email address for the system administrator of your - cluster. +.. code:: -Make sure not to put any quotes around your values, because that can make the -resulting yaml files invalid. + # The IP address of your cluster + ip_address=1.2.3.4 + # The FQDN of your cluster + domain=stackspin.example.org + # The system administrator's email address. Alerts are sent to this address + admin_email=admin@example.org Outgoing email --------------- +~~~~~~~~~~~~~~ -You need to provide email smtp settings so the single sign on system can send -emails with password recovery links. -Apps like Nextcloud, Zulip and Alertmanager will also be able to send -email notifications. +Stackspin uses SMTP to send emails. This is essential for finishing account +setups with password recovery links. Additionally, apps like Nextcloud, Zulip +and Alertmanager will be able to send email notifications from the email address +configured here. -.. Note:: - Stackspin does not set up an email server for you. In order to enable - outgoing emails you need to provide an already existing email account. +Because Stackspin does not include an email server, you need to search your +(external) email provider's helpdesk for SMTP configuration details. -Stackspin uses SMTP to send emails. Search your email provider's helpdesk -for SMTP configuration details and enter them in the -``clusters/stackspin.example.org/.flux.env`` file as follows: +Edit the ``clusters/stackspin.example.org/.flux.env`` file as follows: .. code:: @@ -106,8 +79,8 @@ for SMTP configuration details and enter them in the .. _backups-with-velero: -Backups with Velero -------------------- +Backups with Velero (Optional) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You can enable `Velero <https://velero.io>`__, a program that runs on your cluster and uploads backups of your cluster and user data to an @@ -138,7 +111,7 @@ the installation procedure, you have to install the ``velero`` application. .. _install_core_apps: -Step 1: Install core applications +Step 2: Install core applications ================================= Before you can start, you need to execute a few commands from the installation @@ -179,7 +152,7 @@ the `git repository <https://open.greenhost.net/stackspin/stackspin>`__. .. _install_additional_apps: -Step 2: Install additional applications +Step 3: Install additional applications ======================================= After the script completes, you can install applications by running the other @@ -203,16 +176,19 @@ specific application releases by running ``watch flux get helmreleases .. _validate_setup: -Step 3: Validate setup +Step 4: Validate setup ====================== +Once the installation has been completed, you should be able to log in on +https://dashboard.stackspin.example.org (as always: replace +*stackspin.example.org* with your domain). To get the Admin password, run: + Because Stackspin is still under development, we would like you to -follow our `testing instructions <testing.html>`__ to make sure -that the setup process went well. +follow our :ref:`testing_guide` to make sure that the setup process went well. .. _let_us_know: -Step 4: Let us know! +Step 5: Let us know! ==================== We would love to hear about your experience installing Stackspin. If you diff --git a/docs/testing.rst b/docs/testing.rst index 6d98d81d77fbebf2e4897c0abaf49ee9c20ee1fa..b082635c681a3cba5e6413ca7e6973c3c7f3cfe4 100644 --- a/docs/testing.rst +++ b/docs/testing.rst @@ -1,3 +1,5 @@ +.. _testing_guide: + Testing guide ============= diff --git a/docs/upgrading.rst b/docs/upgrading.rst index e699f467a115ea63e30ca5e9dd8fef51a2746e86..e446057722b70c27e4467a9529a9942fa734fff2 100644 --- a/docs/upgrading.rst +++ b/docs/upgrading.rst @@ -1,5 +1,7 @@ -Upgrading -========= +.. _upgrade_guide: + +Upgrade guide +============= Upgrading to 0.8.0 (not released yet) -------------------------------------