Acest curs explorează procesul de CI/CD utilizând Docker și Kubernetes, integrând GitHub Actions și GitLab CI/CD pentru automatizarea livrării aplicațiilor.
CI/CD este o metodă DevOps care automatizează integrarea și livrarea aplicațiilor containerizate.
- Continuous Integration (CI): Automatizarea testării și validării codului.
- Continuous Deployment (CD): Automatizarea livrării în medii de producție.
GitHub Actions permite automatizarea fluxurilor de lucru pentru build, test și deployment.
Exemplu de workflow `.github/workflows/docker-deploy.yml`:
name: Docker Build and Push
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Login to Docker Hub
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
- name: Build and Push Docker Image
run: |
docker build -t myapp:latest .
docker tag myapp:latest mydockerhub/myapp:latest
docker push mydockerhub/myapp:latest
GitLab CI/CD folosește `.gitlab-ci.yml` pentru a defini pipeline-urile de integrare și livrare continuă.
Exemplu de `.gitlab-ci.yml` pentru Docker și Kubernetes:
stages:
- build
- deploy
build:
stage: build
script:
- docker build -t mydockerhub/myapp:latest .
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"
- docker push mydockerhub/myapp:latest
deploy:
stage: deploy
script:
- kubectl apply -f k8s/deployment.yaml
Aplicațiile containerizate pot fi livrate automat către un cluster Kubernetes folosind `kubectl apply`.
Exemplu de fișier `deployment.yaml` pentru Kubernetes:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: mydockerhub/myapp:latest
ports:
- containerPort: 5000
Comenzile pentru deploy în Kubernetes:
# Aplicarea configurației în Kubernetes
kubectl apply -f deployment.yaml
# Verificarea podurilor active
kubectl get pods