# 对应文档: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 # 端口号