一、Ingress YAML
对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP
可以提供负载均衡、SSL 终结和基于名称的虚拟托管。
Ingress
公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由
Ingress
可为Service
提供外部可访问的 URL、负载均衡流量、终止 SSL/TLS,以及基于名称的虚拟托管。
Ingress controller
通常负责通过负载均衡器来实现Ingress
,尽管它也可以配置>边缘路由器或其他前端来帮助处理流量。
以上官方解释说白了就是
ingress
在管理 HTTP、HTTPS 这些需要流量转发的规则。
而Ingress controller
是在和kubernetes API
进行沟通实时获取后端service
,pod
等资源状态。
最终ingress
和Ingress controller
绑定,动态的将规则或配置写入到服务中。
-
查看
Ingress
相关 yaml 字段说明, 与pod.metadata
相同
kubectl explain Ingress
-
Ingress 的
ingress.meatdata
字段, 与pod.metadata
相同
kubectl explain Ingress.meatdata
-
Ingress 的
Ingress.spec
字段
kubectl explain Ingress.spec
字段 | 值类型 | 说明 |
---|---|---|
defaultBackend |
Object |
|
ingressClassName |
string |
绑定到指定的 ingressClass 。ingressClass.metadata.name 的值 |
rules |
[]Object |
定义规则: host :定义请求的域名http : 指向后端的 http 选择器列表; |
tls |
[]Object |
加密规则(HTTPS 是在 HTTP 协议基础上实施 TLS 加密)host :定义请求的域名secretName :secret 资源名 |
kubectl explain Ingress.spec.rules.http.path
字段 | 值类型 | 说明 |
---|---|---|
backend |
Object |
定义后端 |
path |
string |
要被代理的路径 |
* pathType |
string |
path 的匹配方式 Prefix :基于以 / 分隔的 URL 路径前缀匹配。匹配区分大小写,并且对路径中的元素逐个完成。 路径元素指的是由 / 分隔符分隔的路径中的标签列表。Exact :精确匹配 URL 路径,且区分大小写 |
-
kubectl explain Ingress.spec.rules.http.path.backend
定义后端
字段 | 值类型 | 说明 |
---|---|---|
resource |
Object |
指向同一命名空间中的另一个 Kubernetes 资源,将其作为 Ingress 对象 |
service |
Object |
指定要使用的四层代理* name : Service 的名字 port : 设置端口号。这里是 Service 的端口号number :端口号name : 名字 |
示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx
namespace: default
spec:
ingressClassName: nginx # 指定 ingressClass 的名字
rules:
- host: xx.xxx.com # 将要被访问的域名
http:
paths: # 定义路径类型
- backend: # 定义后端
service: # 定义 service 服务
name: xxxxxx # Service 服务的名字
prot: # 设置端口号。这里是 Service 的端口号
number: 8080 # 端口号
path: / # 指定代理的路径
pathTpye: Prefix # path 匹配方式
创建成功后,会把 Service
这个后端的信息,写入到 ingress-controller
里面
二、IngressClasses YAML
Ingress
可以由不同的控制器实现,通常使用不同的配置。
每个Ingress
应当指定一个类,也就是一个对IngressClass
资源的引用。
IngressClass
资源包含额外的配置,其中包括应当实现该类的控制器(Ingress Controller
)名称。
IngressClass.spec
字段 | 值类型 | 说明 |
---|---|---|
controller |
string |
Ingress Controller 的名字 |
parameters |
指向控制器中包含额外配置的自定义资源的链接Object
|
apiGroup : 被引用资源的组* kind : 被引用资源的类型* name : 被引用资源的名称namespace : 被引用资源的命名空间scope : 否引用集群或者命名空间范围的资源 |
示例:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginx
namespace: ingress-nginx
spec:
controller: k8s.io/ingress-nginx # 定义 ingress controller 名字
网友评论