在前一天的文章中,我們已經準備好了一個 Nginx 的靜態網站,並且完成了容器化。今天,我們將繼續練習將這個靜態網站佈署到 Kubernetes 叢集中,並且介紹如何通過 Helm 來管理佈署,以及實現一些自動化管理,提升我們應用的可擴展性和運營效率。
首先,確保已經成功運行 Docker,並且可以使用 kubectl 來操作 Kubernetes。
切換到我們之前創建的 microservices_project/kubernetes
目錄,並運行以下命令來應用佈署 website-deployment.yaml
,這個文件描述了如何在 Kubernetes 叢集中佈署我們的靜態網站,包含了 Nginx 容器的映像以及相關資源的配置。
kubectl apply -f website-deployment.yaml
運行成功後,我們可以通過以下命令查看 Deployment 和 Pod 的狀態,,確認 Nginx 容器是否正常運行。
kubectl get deployments
kubectl get pods
Helm 是 Kubernetes 的包管理工具,通過 Helm 可以將應用的佈署過程模板化,讓佈署、升級、回滾等操作更加方便和自動化。
如果還沒有安裝 Helm,可以參考我們的 Day20 文章 使用 Helm 管理 Kubernetes 的應用佈署,瞭解如何安裝與使用。
在專案目錄中,創建一個新的目錄來存放 Helm Chart
mkdir nginx-website-chart
cd nginx-website-chart
以下命令會自動生成一個基本的 Helm Chart 結構,存放一些預設的模板文件。
helm create website
進入到生成的 Helm Chart 文件夾中,編輯 values.yaml
來適應我們的專案需求。
image:
repository: my-static-website
# This sets the pull policy for images.
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "latest"
replicaCount: 2
在編輯完成 Helm Chart 配置後,可以使用以下命令來佈署:
helm install my-website ./website
這個命令會自動在 Kubernetes 叢集中創建所需的資源,並將靜態網站佈署到叢集中。
我們可以使用以下命令來確認佈署是否成功:
helm list
kubectl get pods
Ingress 提供了一種靈活的方式來管理 HTTP 和 HTTPS 的訪問路徑,我們可以利用它來公開訪問我們的靜態網站。
首先,需要在 Kubernetes 中安裝 Nginx Ingress Controller 或其他適合的 Ingress Controller。安裝方式可以參考 Kubernetes 官方文件。
創建一個名為 website-ingress.yaml
的文件來定義我們的 Ingress 規則
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: website-ingress
spec:
rules:
- host: my-static-website.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: website-service
port:
number: 80
應用 Ingress 配置文件:
kubectl apply -f website-ingress.yaml
這樣我們就可以通過 my-static-website.local
這個域名來訪問我們的靜態網站。
在 Kubernetes 中,使用 Horizontal Pod Autoscaler (HPA) 可以根據流量負載自動調整 Pod 的副本數量,從而應對突發流量的需求。
創建一個 website-hpa.yaml
文件來定義 HPA 的配置
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: website-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: website-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
應用 HPA 配置文件:
kubectl apply -f website-hpa.yaml
這樣,我們的靜態網站可以根據 CPU 的使用率來自動調整副本數量,從而確保在高負載時有足夠的資源支撐應用運行。
在今天的文章中,我們完成了
這些技術都是 DevOps 實踐中不可或缺的部分,能夠有效提升應用的可擴展性與穩定性,有助於我們提高運營效率!