55 lines
2.1 KiB
YAML
55 lines
2.1 KiB
YAML
# 对应文档:docs/04-01-k3s-nodejs-高级部署.md
|
||
# 累积:基线(Deployment + Service + Ingress)
|
||
apiVersion: apps/v1 # Deployment API 版本
|
||
kind: Deployment # 工作负载:Deployment
|
||
metadata: # Deployment 元信息
|
||
name: nodejs-demo # Deployment 名称
|
||
namespace: default # 命名空间
|
||
spec: # Deployment 规格
|
||
replicas: 1 # 副本数
|
||
selector: # Deployment 选择器
|
||
matchLabels: # 标签匹配集合
|
||
app: nodejs-demo # 匹配 app=nodejs-demo 的 Pod
|
||
template: # Pod 模板
|
||
metadata: # Pod 元信息
|
||
labels: # Pod 标签
|
||
app: nodejs-demo # 与 selector.matchLabels 对齐
|
||
spec: # Pod 规格
|
||
containers: # 容器列表
|
||
- name: nodejs-demo # 容器名
|
||
image: node:18-alpine # Node.js 镜像
|
||
command: ["node", "-e", "require('http').createServer((req,res)=>res.end('Hello World from Node.js')).listen(3000)"] # 直接运行内联 Node.js HTTP 服务
|
||
ports: # 容器端口
|
||
- containerPort: 3000 # 应用监听端口
|
||
---
|
||
apiVersion: v1 # Service API 版本
|
||
kind: Service # Service 资源
|
||
metadata: # Service 元信息
|
||
name: nodejs-demo # Service 名称
|
||
namespace: default # 命名空间
|
||
spec: # Service 规格
|
||
selector: # 选择后端 Pod
|
||
app: nodejs-demo # 选中 app=nodejs-demo
|
||
ports: # 端口映射
|
||
- port: 80 # Service 暴露端口
|
||
targetPort: 3000 # 转发到容器端口
|
||
---
|
||
apiVersion: networking.k8s.io/v1 # Ingress API 版本
|
||
kind: Ingress # Ingress 资源
|
||
metadata: # Ingress 元信息
|
||
name: nodejs-demo # Ingress 名称
|
||
namespace: default # 命名空间
|
||
annotations: # Traefik 注解
|
||
traefik.ingress.kubernetes.io/router.entrypoints: web # 使用 web(HTTP) 入口
|
||
spec: # Ingress 规则
|
||
rules: # 规则列表
|
||
- http: # HTTP 路由
|
||
paths: # 路径列表
|
||
- path: /node # 匹配路径前缀
|
||
pathType: Prefix # 前缀匹配
|
||
backend: # 后端目标
|
||
service: # 后端 Service
|
||
name: nodejs-demo # Service 名称
|
||
port: # Service 端口
|
||
number: 80 # 端口号
|