在Kubernetes中,Ingress是一种API对象,用于定义在集群的边缘配置外部访问。Ingress允许你定义一组规则,这些规则指定了如何将外部请求路由到集群内的服务。它可以实现主机名的路由、路径的路由以及TLS终止等功能。以下是一些关于Kubernetes Ingress的关键概念:

创建Ingress对象:

下面是一个简单的Ingress对象的示例,其中定义了一个基本的规则:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

在这个例子中,当访问my-app.example.com时,Ingress将流量路由到名为my-service的服务的80端口。

主机名路由和路径路由:

  •  主机名路由: 你可以使用host字段指定主机名,这样Ingress将根据主机名进行路由。不同的主机名可以路由到不同的服务。


  •  路径路由: 通过定义paths字段,你可以指定不同的路径规则,将流量路由到集群内的不同服务。在上述示例中,path: /表示根路径的路由。


TLS终止:

你还可以通过Ingress实现TLS终止,以提供加密的传输。以下是一个支持TLS的Ingress对象的示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80
  tls:
  - hosts:
    - my-app.example.com
    secretName: my-tls-secret

在这个例子中,tls字段定义了一个TLS密钥对,通过secretName引用了一个Kubernetes中的Secret对象,其中包含了SSL证书和私钥。

启用Ingress控制器:

要使Ingress工作,你需要在Kubernetes集群中启用Ingress控制器。不同的云平台和部署环境可能有不同的Ingress控制器实现。一些流行的Ingress控制器包括NGINX Ingress Controller、Traefik、HAProxy Ingress等。

示例中使用Ingress:

使用kubectl创建Ingress对象:
kubectl apply -f my-ingress.yaml

请注意,实际部署中,你需要根据自己的需求和环境调整Ingress规则,以适应你的应用程序的路由和访问需求。Ingress提供了强大的灵活性,可以根据主机名、路径和TLS证书等条件,将流量动态路由到不同的服务,使得在Kubernetes中管理和配置外部访问变得更加简便。


转载请注明出处:http://www.zyzy.cn/article/detail/9734/Kubernetes