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 ofmyworkspace
)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