# 1. 创建一个独立的命名空间,保持环境整洁 apiVersion: v1 kind: Namespace metadata: name: demo-space --- # 2. 定义网站内容 (ConfigMap) - 我们直接把 HTML 写在配置里 apiVersion: v1 kind: ConfigMap metadata: name: html-config namespace: demo-space data: index-blue.html: |
部署在 K3s 集群中
index-green.html: |我有 3 个副本,正在为您提供高可用服务!
--- # 3. 部署网站 1 (Blue) apiVersion: apps/v1 kind: Deployment metadata: name: web-blue namespace: demo-space spec: replicas: 1 selector: matchLabels: app: site-blue template: metadata: labels: app: site-blue spec: containers: - name: nginx image: nginx:alpine volumeMounts: - name: html-volume mountPath: /usr/share/nginx/html/index.html subPath: index-blue.html volumes: - name: html-volume configMap: name: html-config --- # 4. 部署网站 2 (Green) - 注意这里 replicas 是 3 apiVersion: apps/v1 kind: Deployment metadata: name: web-green namespace: demo-space spec: replicas: 3 selector: matchLabels: app: site-green template: metadata: labels: app: site-green spec: containers: - name: nginx image: nginx:alpine volumeMounts: - name: html-volume mountPath: /usr/share/nginx/html/index.html subPath: index-green.html volumes: - name: html-volume configMap: name: html-config --- # 5. 定义服务 (Service) - 让集群内部能找到它们 apiVersion: v1 kind: Service metadata: name: service-blue namespace: demo-space spec: selector: app: site-blue ports: - port: 80 --- apiVersion: v1 kind: Service metadata: name: service-green namespace: demo-space spec: selector: app: site-green ports: - port: 80 --- # 6. 定义路由 (Ingress) - 这就是 K3s 的“大门” apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-ingress namespace: demo-space spec: rules: - host: site1.u9.net3w.com http: paths: - path: / pathType: Prefix backend: service: name: service-blue port: number: 80 - host: site2.u9.net3w.com http: paths: - path: / pathType: Prefix backend: service: name: service-green port: number: 80