Manage a Kapsule cluster#

Kapsule is a Kubernetes cluster as-a-services managed by Scaleway. We will see here how to start one and integrate it into our Rancher instance so it can be managed by it.

Prerequisites#

  • Have a KUBEFACTORY_WORKSPACE environment variable set. (Let’s say it has a value of myworkspace)

  • Choose a kapsule name, let’s says mykapsule

  • Export it in your terminal so playbooks can rely on its name.

export KUBEFACTORY_KAPSULE_NAME=mykapsule

Create & import in Rancher#

Run:

ansible-playbook playbooks/tf_kapsule.yml
ansible-playbook playbooks/tf_kapsule_import.yml

Stuff up your cluster#

This command will install on your cluster:

ansible-playbook playbooks/tf_kapsule_tooling.yml

After this, you should find a file at host_vars/myworkspace/tf_kapsules_tooling.yml with a single dict kapsules_tooling and an entry for your kapsule instance. Like this:

kapsules_tooling:
# BEGIN -- myworkspace -- mykapsule
  mykapsule:
    load_balancer_ip: "10.10.10.10"
# END -- myworkspace -- mykapsule

Attention

Of course, the value of the ip will be different for you.

Point a DNS to your cluster entry point#

To maximize your chances of successful application deployments and exposition, you must now point a DNS record to your nginx-ingress load balancer.

Edit host_vars/myworkspace/system.yml to make it look like:

# [...]
bind_zone_domains:
  - name: "{{ system_base_domain }}"
    type: master
# [...]
    hosts:
# [...]
      - name: mykapsule
        ip: "{{ kapsules_tooling.mykapsule.load_balancer_ip }}"
# Every CNAME your like
        aliases:
          - ci
          - monitor
          - app

and apply your changes by running:

ansible-playbook playbooks/core_system.yml

CONGRATULATIONS

You now have DNS pointing at a well configured Kapsule cluster. You should be ready to handle applications deployments.


SEASONED SCRIPT - CREATE

export KUBEFACTORY_KAPSULE_NAME=mykapsule &&
ansible-playbook playbooks/tf_kapsule.yml && \
ansible-playbook playbooks/tf_kapsule_import.yml && \
sleep 600 && \
ansible-playbook playbooks/tf_kapsule_tooling.yml

SEASONED SCRIPT - DESTROY

ansible-playbook playbooks/tf_kapsule_tooling.yml -e tf_action=destroy && \
ansible-playbook playbooks/tf_kapsule_import.yml -e tf_action=destroy && \
ansible-playbook playbooks/tf_kapsule.yml -e tf_action=destroy