Unverified Commit e864933b authored by Derek Nola's avatar Derek Nola Committed by GitHub
Browse files

Add Upgrade Playbook (#236)



* Highlight node reqs.

Signed-off-by: default avatarDerek Nola <derek.nola@suse.com>

* Add upgrade playbook

Signed-off-by: default avatarDerek Nola <derek.nola@suse.com>

* Move PR template

Signed-off-by: default avatarDerek Nola <derek.nola@suse.com>

---------

Signed-off-by: default avatarDerek Nola <derek.nola@suse.com>
parent fd6f288b
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -22,7 +22,12 @@ on processor architecture:
## System requirements

Deployment environment must have Ansible 2.4.0+
Server and agent nodes must have passwordless SSH access

All nodes in inventory must have:
- Passwordless SSH access
- Root access (or a user with equivalent permissions) 

It is also recommended that all nodes disable firewalls and swap. See [K3s Requirements](https://docs.k3s.io/installation/requirements) for more information.

## Usage

@@ -59,6 +64,15 @@ Start provisioning of the cluster using the following command:
ansible-playbook playbook/site.yml -i inventory.yml
```

## Upgrading

A playbook is provided to upgrade k3s on all nodes in the cluster. To use it, update `k3s_version` with the desired version in `inventory.yml` and run:

```bash
ansible-playbook playbook/upgrade.yml -i inventory.yml
```


## Kubeconfig

After successful bringup, the kubeconfig of the cluster is copied to the control-node and set as default (`~/.kube/config`).

playbook/upgrade.yml

0 → 100644
+18 −0
Original line number Diff line number Diff line
---

# Servers should be restarted sequientally to avoid etcd learner issues
# Agents have no such limitation
- name: Upgrade K3s Servers
  hosts: server
  gather_facts: true
  become: true
  serial: 1
  roles:
    - role: upgrade

- name: Upgrade K3s Agents
  hosts: agent
  gather_facts: true
  become: true
  roles:
    - role: upgrade
+39 −0
Original line number Diff line number Diff line
---
- name: Set var defaults
  when: systemd_dir is undefined
  ansible.builtin.set_fact:
    systemd_dir: /etc/systemd/system

# with_fileglob doesn't work with remote_src, it tries to find the file on the
# local control-plane instead of the remote host. Shell supports wildcards.
- name: Save current K3s service
  ansible.builtin.shell:
    cmd: "cp {{ systemd_dir }}/k3s*.service /tmp/"
  changed_when: true

- name: Install new K3s Version
  ansible.builtin.command:
    cmd: /usr/local/bin/k3s-install.sh
  environment:
    INSTALL_K3S_SKIP_START: "true"
    INSTALL_K3S_VERSION: "{{ k3s_version }}"
  changed_when: true

- name: Restore K3s service
  ansible.builtin.shell:
    cmd: "mv /tmp/k3s*.service {{ systemd_dir }}/"
  changed_when: true

- name: Restart K3s service [server]
  when: "'server' in group_names"
  ansible.builtin.systemd:
    state: restarted
    daemon_reload: true
    name: k3s

- name: Restart K3s service [agent]
  when: "'agent' in group_names"
  ansible.builtin.systemd:
    state: restarted
    daemon_reload: true
    name: k3s-agent