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

Add HA Server test (#491)



* Add HA Server test
Signed-off-by: default avatarDerek Nola <derek.nola@suse.com>
parent 11728055
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
@@ -103,3 +103,72 @@ jobs:
          docker stop server-node && docker rm -f server-node
          docker stop agent-node && docker rm -f agent-node
          docker network rm k3s-ansible

  test-ha:
    runs-on: ubuntu-latest
    # K3s requires privileged containers to run inside Docker and access to cgrougs.
    env:
      SERVERS: server-node1 server-node2 server-node3
    steps:
      - name: Checkout codebase
        uses: actions/checkout@v6

      - name: Set up Python 3.13.
        uses: actions/setup-python@v4
        with:
          python-version: '3.13.x'

      - name: Install Ansible and dependencies
        run: |
          pip install ansible
          ansible-galaxy collection install -r collections/requirements.yml

      - name: Verify Inventory
        run: ansible-inventory -i tests/ha.yml --list

      - name: Create Docker Network
        run: docker network create k3s-ha-ansible

      - name: Start Docker containers
        run: |
          for SERVER in $SERVERS; do
            docker run -d --name $SERVER \
              --privileged \
              --volume=/sys/fs/cgroup:/sys/fs/cgroup:rw \
              --volume=/lib/modules:/lib/modules:ro \
              --cgroupns=host \
              --network=k3s-ha-ansible \
              geerlingguy/docker-debian12-ansible:latest
          done

      - name: Run Playbook
        env:
          ANSIBLE_FORCE_COLOR: '1'
        run: ansible-playbook playbooks/site.yml -i tests/ha.yml

      - name: Verify K3s is running on servers
        run: docker exec server-node1 k3s kubectl get nodes | grep Ready | wc -l | grep 3

      - name: Modify the k3s_version in inventory for upgrade
        run: |
          sed -i 's/k3s_version: v1.33.4+k3s1/k3s_version: v1.34.1+k3s1/' tests/ha.yml

      - name: Run Upgrade Playbook
        run: ansible-playbook playbooks/upgrade.yml -i tests/ha.yml

      - name: Verify K3s upgraded on all servers
        run: |
          sleep 5 && docker exec server-node1 k3s kubectl get nodes
          for SERVER in $SERVERS; do
            docker exec $SERVER k3s --version | grep v1.34.
          done
        
      - name: Remove K3s from server nodes
        run: ansible-playbook playbooks/reset.yml -i tests/ha.yml

      - name: Stop and remove Docker containers
        run: |
          for SERVER in $SERVERS; do
            docker stop $SERVER && docker rm -f $SERVER
          done
          docker network rm k3s-ha-ansible
 No newline at end of file

tests/ha.yml

0 → 100644
+16 −0
Original line number Diff line number Diff line
---
k3s_cluster:
  children:
    server:
      hosts:
        server-node1:
        server-node2:
        server-node3:
  vars:
    ansible_connection: docker
    ansible_user: root
    ansible_become: true
    k3s_version: v1.33.4+k3s1
    token: "secretha"
    api_endpoint: "server-node1"
    extra_server_args: "--snapshotter=native"