Containers hebben getransformeerd hoe we toepassingen implementeren, schalen en beheren door code en afhankelijkheden te verpakken in een gestandaardiseerde eenheid die consistent kan draaien in elke omgeving. Wanneer gebruikt in cloudomgevingen, bieden containers:
- Portabiliteit over ontwikkeling, testen en productie.
- Schaalbaarheid om snel aan te passen aan verkeer en vraag.
- Efficiëntie met verminderde overhead in vergelijking met traditionele virtuele machines.
In deze zelfstudie zullen we een volledige opstelling van een op de cloud gehoste gecontaineriseerde toepassing doorlopen, met de volgende onderwerpen:
- Basisprincipes van containers en waarom ze ideaal zijn voor de cloud.
- Het opzetten van een gecontaineriseerde toepassing met Docker.
- Het implementeren van de container naar een cloudprovider (met Google Cloud Platform als voorbeeld).
- Het schalen en beheren van uw container in de cloud.
Containerbasics: Hoe containers passen in cloudworkflows
Containers omvatten alle bibliotheken en afhankelijkheden die nodig zijn om een toepassing uit te voeren. In tegenstelling tot traditionele virtuele machines, waarbij elk een besturingssysteem heeft, delen containers het hostbesturingssysteem, waardoor ze lichtgewicht en efficiënt zijn.
Waarom containers voor de cloud?
- Snelle opstarttijden betekenen sneller schalen om variabel verkeer aan te kunnen.
- Consistentie over verschillende omgevingen zorgt ervoor dat de code zich hetzelfde gedraagt vanaf de laptops van ontwikkelaars tot aan de productie.
- Efficiënt gebruik van resources maakt een hoge dichtheid van implementaties op dezelfde infrastructuur mogelijk.
Kerncomponenten van cloud containerisatie
- Container Engine: Beheert en voert containers uit (bijv. Docker, containerd).
- Orkestratie: Zorgt voor betrouwbaarheid, schaalbaarheid en load balancing van apps (bijv. Kubernetes, ECS).
- Register: Slaat containerafbeeldingen op voor toegang over verschillende omgevingen (bijv. Docker Hub, GCR).
Opzetten van een gecontaineriseerde Docker-applicatie
We beginnen met het containeriseren van een eenvoudige Node.js-applicatie.
Stap 1: Maak de applicatie
1. Initialiseer een Node.js-project in een projectmap:
mkdir cloud-container-app && cd cloud-container-app
npm init -y
2. Maak een basisserverbestand, app.js
:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Cloud Container!');
});
app.listen(3000, () => {
console.log('App running on port 3000');
});
3. Voeg Express toe aan het project:
npm install express
Stap 2: Maak een Dockerfile
Deze Dockerfile specificeert hoe de app verpakt moet worden in een Docker-container.
# Use the Node.js image as a base
FROM node:14
# Set working directory
WORKDIR /app
# Copy files and install dependencies
COPY . .
RUN npm install
# Expose the app’s port
EXPOSE 3000
# Start the application
CMD ["node", "app.js"]
Stap 3: Bouw en test de Docker-image lokaal
1. Bouw de Docker-image:
docker build -t cloud-container-app .
2. Voer de container lokaal uit:
docker run -p 3000:3000 cloud-container-app
3. Bezoek `http://localhost:3000` in je browser. Je zou “Hallo, Cloud Container!” moeten zien weergegeven.
Het Container uitrollen naar Google Cloud Platform (GCP)
In deze sectie gaan we de containerafbeelding naar Google Container Registry (GCR) pushen en deze uitrollen naar Google Kubernetes Engine (GKE).
Stap 1: Stel een GCP-project in
1. Maak een GCP-project aan. Ga naar de [Google Cloud Console] (https://console.cloud.google.com) en maak een nieuw project aan.
2. Schakel de Kubernetes Engine en Container Registry API’s in voor je project.
Stap 2: Push de afbeelding naar Google Container Registry
1. Tag de Docker-afbeelding voor Google Cloud:
docker tag cloud-container-app gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
2. Push de afbeelding naar GCR:
docker push gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
Stap 3: Maak een Kubernetes-cluster
1. Initialiseer een GKE-cluster:
gcloud container clusters create cloud-container-cluster --num-nodes=2
2. Configureer kubectl
om verbinding te maken met je nieuwe cluster:
gcloud container clusters get-credentials cloud-container-cluster
Stap 4: Rol de gecontaineriseerde app uit naar GKE
1. Maak een k8s-deployment.yaml
bestand aan om de uitrol en service te definiëren:
apiVersion apps/v1
kind Deployment
metadata
name cloud-container-app
spec
replicas2
selector
matchLabels
app cloud-container-app
template
metadata
labels
app cloud-container-app
spec
containers
name cloud-container-app
image gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
ports
containerPort3000
---
apiVersion v1
kind Service
metadata
name cloud-container-service
spec
type LoadBalancer
selector
app cloud-container-app
ports
protocol TCP
port80
targetPort3000
2. Rol de applicatie uit naar GKE:
kubectl apply -f k8s-deployment.yaml
3. Verkrijg het externe IP om toegang te krijgen tot de app:
kubectl get services
Schalen en beheren van containers in GKE
Stap 1: Schaal de uitrol
Om het aantal replicas aan te passen (bijv. om hogere verkeersvolumes aan te kunnen), gebruik je de volgende opdracht:
kubectl scale deployment cloud-container-app --replicas=5
GKE zal automatisch de app schalen door replica’s toe te voegen en de belasting te verdelen.
Stap 2: Logs Monitoren en Beheren
1. Gebruik de onderstaande opdracht om logs voor een specifieke pod in Kubernetes te bekijken:
kubectl logs <POD_NAME>
2. Schakel het GKE-dashboard in om de podstatus en het gebruik van resources te monitoren en implementaties visueel te beheren.
Conclusie: Containers benutten voor schaalbare cloud-implementaties
Deze zelfstudie behandelde:
- Het containeriseren van een Node.js-app met behulp van Docker.
- Implementatie op Google Kubernetes Engine (GKE) voor schaalbare, beheerde hosting.
- Effectief beheren en schalen van containers in de cloud.
Met containers in de cloud krijgen uw applicaties schaalbaarheid, draagbaarheid en efficiëntie – zodat ze klaar zijn om aan de vraag te voldoen, zich snel aan te passen en consistent te blijven in verschillende omgevingen.
Source:
https://dzone.com/articles/a-step-by-step-guide-to-deploying-containers-in-the-cloud