Kubernetes Ingress
理论学习
Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。
Ingress 资源示例:
apiVersion: networking.k8s.io/v1 # 指定 Kubernetes 中使用的 API 版本
kind: Ingress # 指定对象的类型
metadata: # 包含有关对象的元数据信息
name: minimal-ingress
annotations: # 配置 Nginx Ingress 控制器的重写目标
nginx.ingress.kubernetes.io/rewrite-target: /
spec: # 指定了 Ingress 对象的规范,即其配置
ingressClassName: nginx-example # 指定要使用的 Ingress 控制器的类别或类型
rules: # 定义路由规则
- http:
paths: # 定义了针对特定路径的路由规则列表
- path: /testpath
pathType: Prefix # 指定路径的类型 "Prefix"(前缀匹配) "Exact"(精确匹配)
backend: # 指定后端服务
service:
name: test
port:
number: 80
实战练习
操作步骤
- (标准步骤) 进入题目指定集群
$ kubectl config use-context k8s
- 查看 Ingressclass 名称并记录
$ kubectl get ingressclass
$ vim ingress.yaml
- 在官网上复制默认 Ingress 配置文件并再此基础上修改
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ping
namespace: ing-internal
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /hello
pathType: Prefix
backend:
service:
name: hello
port:
number: 5678
- 应用配置文件创建 Ingress
$ kubectl apply -f ingress.yaml
检查命令
$ kubectl -n ing-internal get ingress # 配置完成后需要等待三分钟才能显示 ADDRESS
$ curl 10.110.140.170/hi
参考链接:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/#default-ingress-class