Door een applicatie te containeriseren, bundel je jouw applicatie samen met alle dependencies die nodig zijn om jouw applicatie uit te voeren. Zo kun je jouw applicatie eenvoudig op ieder platform dat containers ondersteunt hosten.
Wanneer je je applicatie gecontaineriseerd hebt en die publiekelijk of op een private container image registry host, wil je die natuurlijk kunnen gebruiken, bijvoorbeeld op een Kubernetes-platform. Hoe dat werkt via een Kubernetes Deployment op basis van een .yaml-object, laten we in deze handleiding zien.
Als je al eerder een Kubernetes Deployment via een .yaml-object hebt gemaakt, zal het deployen van je eigen container image vanaf je eigen repository weinig verrassingen met zich meebrengen.
Stap 1
Staat jouw container image op Docker Hub? Ga dan door naar stap 2.
Host je je container image op een private registry, dan heb je een 'secret' nodig als je die niet al hebt aangemaakt bij het aanmaken van die private registry. Ga in dat laatste geval ook door naar stap 2.
Een secret bewaart gevoelige informatie zoals inloggegevens die gebruikt worden door Pods om services te bereiken, bijvoorbeeld een database. Voor deze handleiding maak je een secret om de inloggegevens voor je private container registry op te slaan. Er zijn meerdere manieren om een secret te maken, maar allicht de eenvoudigste is met Kubectl.
Voer het volgende commando uit op de computer waarop je je Kubernetes-cluster beheert en vervang de volgende gegevens (let op de scrollbalk):
- mijnkey: Een naam voor je secret. Het is handig om een naam te gebruiken die aangeeft waar de secret voor dient, bijvoorbeeld my_harbor_server.
- PRIVATE_SERVER: De hostname van je Harbor-server.
- USER: Een gebruiker met toegangsrechten tot je Harbor-server.
- PASSWORD: Het wachtwoord van deze gebruiker.
- mail@example.com: Het mailadres van de gebruiker.
kubectl create secret docker-registry mijnkey --docker-server=PRIVATE_SERVER --docker-username=USER --docker-password=PASSWORD --docker-email=mail@example.com
Je vindt hier meer informatie over secrets en hier meer informatie over het maken en beheren van secrets met behulp van Kubectl.
Stap 2
Maak op de computer waarvandaan je je Kubernetes-cluster beheert een .yaml-bestand voor je Deployment aan, bijvoorbeeld:
nano my-website.yaml
Stap 3
Hoe de inhoud het bestand eruit ziet hangt eraf van of je de container op een eigen image registry host, of publiekelijk op Docker Hub:
Privé registry:
Geef het bestand de volgende inhoud, waarbij je de volgende waardes aanpast:
- 'my-website': Vervang door de naam van jouw applicatie zoals je die naar jouw eigen registry hebt gepushed in de vorige paragraaf.
- replicas: Verander naar het aantal pods dat je wilt aanmaken
- image: Pas dit aan naar het webadres waar jouw image zich bevindt, zie bijvoorbeeld onze Harbor-handleiding.
- imagePullSecrets: Pas aan naar de secret die je hebt aangemaakt in stap 1 om de image op jouw registry te kunnen bereiken.
- Voor meer opties voor het aanpassen van de onderstaande deployment, zie onze handleiding over het maken van je eigen Kubernetes .yaml-objecten.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-website
spec:
replicas: 1
selector:
matchLabels:
app: my-website
template:
metadata:
labels:
app: my-website
spec:
containers:
- name: my-website
image: adresvanjouwregistry.nl/my-website:latest
ports:
- containerPort: 80
Publieke registry:
Geef het bestand de volgende inhoud, waarbij je de volgende waardes aanpast:
- 'my-website': vervang door de naam van jouw applicatie zoals je die naar Docker Hub hebt gepushed.
- replicas: verander naar het aantal pods dat je wilt aanmaken
- image: pas de waarde aan naar de naam van jouw container image
- Voor meer opties voor het aanpassen van de onderstaande deployment, zie onze handleiding over het maken van je eigen Kubernetes .yaml-objecten.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-website
spec:
replicas: 1
selector:
matchLabels:
app: my-website
template:
metadata:
labels:
app: my-website
spec:
containers:
- name: my-website
image: my-website:latest
ports:
- containerPort: 80
Stap 4
Maak de deployment aan met het commando:
kubectl apply -f my-website.yaml
Vervang hier my-website.yaml door de naam van het bestand dat je in stap 1 hebt aangemaakt.
Gefeliciteerd! Je gecontaineriseerde applicatie wordt nu op jouw Kubernetes-cluster gehost. Let wel dat voor het exposen van jouw applicatie aan de buitenwereld je een loadbalancer-service nodig hebt, zie deze handleiding.