Nasazení aplikace pomocí Kubernetes

Nasazení aplikací pomocí Kubernetes zahrnuje několik klíčových kroků, aby byla vaše aplikace správně nakonfigurována, nasazena a spravována v Kubernetes clusteru. Níže je uveden přehled a krok za krokem návod, který vám pomůže pochopit tento proces.

1. Předpoklady

2. Kontejnerizace vaší aplikace

Ujistěte se, že je vaše aplikace kontejnerizována. Obvykle vytvoříte Docker image vaší aplikace.

        
            # Vytvořte Dockerfile pro vaši aplikaci
            FROM nginx:alpine
            COPY . /usr/share/nginx/html
            
            # Vytvořte Docker image
            docker build -t your-image-name:tag .
            
            # Nahrajte image do kontejnerového registru (např. Docker Hub, Google Container Registry, AWS ECR)
            docker tag your-image-name:tag your-docker-hub-username/your-image-name:tag
            docker push your-docker-hub-username/your-image-name:tag
        
    

3. Vytvoření Kubernetes manifestů

Kubernetes používá YAML soubory k definování požadovaného stavu vaší aplikace. Mezi běžné manifesty patří Deployment, Service a ConfigMap.

Deployment manifest

Definuje, jak je vaše aplikace nasazena, včetně počtu replik, kontejnerového image a dalších konfigurací.

        
            apiVersion: apps/v1
            kind: Deployment
            metadata:
              name: my-app-deployment
            spec:
              replicas: 3
              selector:
                matchLabels:
                  app: my-app
              template:
                metadata:
                  labels:
                    app: my-app
                spec:
                  containers:
                  - name: my-app
                    image: your-image-name:tag
                    ports:
                    - containerPort: 80
        
    

Service manifest

Exponuje vaši aplikaci na síti, buď interně v rámci clusteru, nebo externě.

        
            apiVersion: v1
            kind: Service
            metadata:
              name: my-app-service
            spec:
              selector:
                app: my-app
              ports:
                - protocol: TCP
                  port: 80
                  targetPort: 80
              type: LoadBalancer
        
    

4. Aplikace manifestů

Použijte kubectl pro aplikaci těchto manifestů do vašeho Kubernetes clusteru.

        
            kubectl apply -f deployment.yaml
            kubectl apply -f service.yaml
        
    

5. Ověření nasazení

Zkontrolujte stav vašeho nasazení a služeb, abyste se ujistili, že vše běží správně.

        
            kubectl get deployments
            kubectl get services
            kubectl get pods
        
    

6. Škálování a aktualizace

Škálování: Upravte počet replik změnou pole replicas v manifestu Deployment nebo pomocí příkazu kubectl scale.

        
            kubectl scale deployment my-app-deployment --replicas=5
        
    

Aktualizace: Aktualizujte vaši aplikaci provedením změn v manifestech a jejich opětovným použitím pomocí kubectl apply.

7. Úklid

Pro odstranění zdrojů můžete použít kubectl delete.

        
            kubectl delete -f deployment.yaml
            kubectl delete -f service.yaml
        
    

Příklad workflow

Pojďme si projít příklad:

1. Dockerfile:

        
            FROM nginx:alpine
            COPY . /usr/share/nginx/html
        
    

2. Build a push Docker image:

        
            docker build -t my-nginx-app:v1 .
            docker tag my-nginx-app:v1 your-docker-hub-username/my-nginx-app:v1
            docker push your-docker-hub-username/my-nginx-app:v1
        
    

3. Kubernetes manifesty:

deployment.yaml:

        
            apiVersion: apps/v1
            kind: Deployment
            metadata:
              name: nginx-deployment
            spec:
              replicas: 3
              selector:
                matchLabels:
                  app: nginx
              template:
                metadata:
                  labels:
                    app: nginx
                spec:
                  containers:
                  - name: nginx
                    image: your-docker-hub-username/my-nginx-app:v1
                    ports:
                    - containerPort: 80
        
    

service.yaml:

        
            apiVersion: v1
            kind: Service
            metadata:
              name: nginx-service
            spec:
              selector:
                app: nginx
              ports:
                - protocol: TCP
                  port: 80
                  targetPort: 80
              type: LoadBalancer
        
    

4. Nasazení do Kubernetes:

        
            kubectl apply -f deployment.yaml
            kubectl apply -f service.yaml
        
    

5. Ověření:

        
            kubectl get deployments
            kubectl get services
            kubectl get pods
        
    

Dodržováním těchto kroků můžete úspěšně nasadit svou aplikaci pomocí Kubernetes.