132 lines
2.8 KiB
YAML
132 lines
2.8 KiB
YAML
# 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: |
|
|
<html><body style="background-color:#0000; text-align:center; padding-top:50px;">
|
|
<h1 style="color:#006064;">我是网站 1 (蓝色)</h1>
|
|
<p>部署在 K3s 集群中</p>
|
|
</body></html>
|
|
index-green.html: |
|
|
<html><body style="background-color:#4a148c; text-align:center; padding-top:50px;">
|
|
<h1 style="color:#1b5e20;">我是网站 2 (绿色)</h1>
|
|
<p>我有 3 个副本,正在为您提供高可用服务!</p>
|
|
</body></html>
|
|
---
|
|
# 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
|