当前位置: 首页 > news >正文

Ingress使用示例

当需要「一个IP,多个网站」时(基于域名路由)

场景目标

  • 一个IP192.168.100.100 (Ingress Controller的External-IP)

  • 三个域名

    • app1.com -> 转发到 app1-service

    • app2.com -> 转发到 app2-service

    • api.app1.com -> 转发到 api-service

步骤一:部署后端应用和Service

1.部署三个简单的Web应用(例如Nginx)并为它们创建对应的Service。

apiVersion: apps/v1
kind: Deployment
metadata:name: app1-deployment
spec:replicas: 2selector:matchLabels:app: app1template:metadata:labels:app: app1 # Pod标签,会被Service的selector匹配spec:containers:- name: nginximage: nginxports:- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:name: app2-deployment
spec:replicas: 2selector:matchLabels:app: app2template:metadata:labels:app: app2spec:containers:- name: nginximage: nginxports:- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:name: api-deployment
spec:replicas: 2selector:matchLabels:app: apitemplate:metadata:labels:app: apispec:containers:- name: nginximage: nginxports:- containerPort: 80

2. 创建Service (services.yaml)

apiVersion: v1
kind: Service
metadata:name: app1-service # Service名称,Ingress规则会引用这个名字
spec:selector:app: app1 # 选择标签为 app: app1 的Podports:- protocol: TCPport: 80 # Service端口targetPort: 80 # Pod端口type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:name: app2-service
spec:selector:app: app2ports:- protocol: TCPport: 80targetPort: 80type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:name: api-service
spec:selector:app: apiports:- protocol: TCPport: 80targetPort: 80type: ClusterIP

步骤二:编写Ingress规则

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-main-ingressannotations:# 明确指定使用nginx ingress controllerkubernetes.io/ingress.class: "nginx"# 其他常用注解示例:# nginx.ingress.kubernetes.io/rewrite-target: / # 如果需要重写路径# nginx.ingress.kubernetes.io/ssl-redirect: "false" # 关闭强制HTTPS跳转(默认true)
spec:# rules字段定义了所有的路由规则rules:# 规则一:匹配主机名 app1.com- host: app1.comhttp:paths:- path: / # 匹配根路径及其所有子路径pathType: Prefixbackend:service:name: app1-service # 转发到名为app1-service的Serviceport:number: 80 # 转发到该Service的80端口# 规则二:匹配主机名 app2.com- host: app2.comhttp:paths:- path: /pathType: Prefixbackend:service:name: app2-serviceport:number: 80# 规则三:匹配主机名 api.app1.com- host: api.app1.comhttp:paths:- path: /pathType: Prefixbackend:service:name: api-serviceport:number: 80# 您可以继续添加更多规则...# - host: another.example.com#   http:#     paths:#     - path: /#       pathType: Prefix#       backend:#         service:#           name: another-service#           port:#             number: 80

步骤三:测试访问

总结

通过以上配置,我们成功地实现了:

  • 一个入口点192.168.100.100

  • 基于域名的路由

    • 访问 app1.com -> app1-service

    • 访问 app2.com -> app2-service

    • 访问 api.app1.com -> api-service

所有的流量都通过同一个负载均衡器IP进入,然后由Ingress Controller根据HTTP请求头中的 Host 字段智能地转发到不同的后端Service,实现了高效且成本低廉的流量管理。

http://www.dtcms.com/a/390889.html

相关文章:

  • HarmonyOS开源项目分享:识笺——高效学习的卡片应用
  • 揭秘提示词攻击:AI时代的安全新战场
  • vscode安装go插件问题
  • 创作一个简单的编程语言3 加上VLLM后端
  • C语言入门指南:内存操作函数详解
  • React 列表渲染 列表排序 条件渲染 数据渲染 响应式处理
  • 从安卓手机切换到iPhone:好处、缺点及4种方法
  • C++ 篇 类和对象(1)万能工具怎么用?
  • Ansible-copy模块
  • SAPO去中心化训练:多节点协作让LLM训练效率提升94%
  • Stm32 IAP 升级
  • 5G标准学习笔记17------ MDT(Minimization of Drive Tests)路测最小化
  • [Dify] 构建“流程型表单问答”系统:逐步提问逻辑实现
  • 从RAW到JPG到BMP:工业视觉图像格式怎么选?
  • Linux系统Rsync+sersync 实现数据同步
  • 【13/20】缓存与性能优化:Redis 在 Express 中的整合,实现用户数据缓存
  • 如何防止电脑长时间运行过热?定时关机是第一道防线
  • 开源监控利器Prometheus+Grafana在银河麒麟操作系统的落地实践
  • 小程序移动端设计UI(一)预约小程序——东方仙盟练气期
  • Android13 命令启用WLAN详细日志分析
  • 临床AI产品化全流程研究:环境聆听、在环校验与可追溯系统的多技术融合实践(中)
  • 深度解读昇腾CANN动态Shape图调度加速技术
  • linux系统使用ImageMagick注意,只能使用convert命令
  • [Windows] 搜狗拼音一键净化
  • Go语言25个关键字全解析
  • 图像滤波常用总结
  • Go语言设计原则与设计模式
  • (LoRA深度解析)LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS论文精读(逐段解析)
  • 第十四届蓝桥杯青少组C++选拔赛[2022.11.27]第二部分编程题(4、找路线)
  • 知识图谱对自然语言处理深层语义分析的影响与启示:结构化研究报告