Staging setup
Tweaken van de container images
Maak eventueel extra Dockerfiles aan voor je frontend- en backend-containers. We willen immers dat de containers op staging al in grote mate productie-klaar zijn.
Dat betekent bijvoorbeeld dat je voor de front-end image een multi-stage container zal nodig hebben waarbij de gebuilde files terecht komen in een nginx container.
Ook hier kan de officiele Vue-documentatie helpen.
Pushen naar een registry
Om de containers te kunnen gebruiken op andere servers, pushen we die naar een centrale registry. Jullie gebruiken daarvoor de container registry in jullie project op Gitlab.
# aanmelden op docker hub met je odisee account of een aangemaakt token
docker login registry.gitlab.com
# ofwel: je lokale image taggen met je docker hub username
docker tag <imagename>:<tag> <url_registry>/<username>/<imagename>:<tag>
# ofwel: nieuwe build maken met juiste tag:
docker build -t registry.gitlab.com/(pad) .
# je image pushen naar Gitlab.
docker push registry.gitlab.com/ikdoeict/(pad)
# daarna kan je de container gebruiken op je andere hosts met:
docker run registry.gitlab.com/(pad):<tag>
bij een private container repository zal ook authenticatie nodig zijn, ook straks als je deze container binnen wil halen. Vermijd uiteraard dat je je credentials ergens in cleartext moet achterlaten in de config! Als je de talos-setup goed doorliep, dan zijn de credentials al toegevoegd op de cluster.
Push de containers met de staging-frontend en staging-backend naar de registry. Gebruik daarvoor een duidelijke naamgeving.
Voorbereiden van de hosts
Zorg dat je staging db-host klaar is. Installeer daarop MySQL, zorg voor een user met rechten en test als de remote toegang goed werkt. Het configuratiewerk op deze DB-host doen we exclusief met Ansible.
Deploy de containers naar Kubernetes
Op basis van de voorbeeldconfiguratie van een app op https://gitlab.com/ikdoeict/public/k8s/-/blob/main/examples/single-node-talos/demo-singlenode.yaml?ref_type=heads kan je zelf enkele yaml-files voorzien om de nodige containers te deployen. Die kan je dan steeds via kubectl toepassen op je cluster. (kubectl apply -f xxx) Als dat werkt -en niet vroeger- vorm je dat om naar een Ansible-rol deploy-staging. Gebruik daarvoor de Ansible-modules die specifiek zijn voorzien voor Kubernetes. Denk goed na over de poorten die je intern gebruikt. Extern maak je de stagingomgeving beschikbaar op IPADRES:8000, maar intern kunnen de container en de deployment uiteraard andere poorten gebruiken.