Kubernetes Ingress 入门教程

阅读时长 5 分钟读完

什么是 Kubernetes Ingress?

Kubernetes Ingress 是一种 Kubernetes 资源对象,它允许你将 HTTP 和 HTTPS 流量路由到集群内的不同服务。简而言之,它是一种路由管理器,可以帮助你管理流量并将其路由到正确的地方。

Kubernetes Ingress 的优势

使用 Kubernetes Ingress 可以带来以下优势:

  1. 简化流量管理:使用 Ingress 可以将所有的流量管理集中在一个地方,这样可以使得管理流量更加容易。

  2. 灵活性:Ingress 支持多种路由规则,可以根据需要进行配置。例如,可以将流量路由到不同的服务或者根据 URL 路径进行路由。

  3. 安全性:Ingress 可以支持 SSL/TLS 加密,提供更加安全的通信。

如何使用 Kubernetes Ingress?

在使用 Kubernetes Ingress 之前,需要先了解以下一些基本概念:

  1. Ingress Controller:Ingress Controller 是一个运行在 Kubernetes 集群中的 Pod,它监听 Ingress 资源对象的变化,并根据配置进行路由管理。

  2. Ingress Resource:Ingress 资源对象定义了路由规则,包括如何路由流量以及路由到哪个服务。Ingress 资源对象需要使用 YAML 文件进行定义。

下面是一个简单的 Ingress 资源对象的定义示例:

-- -------------------- ---- -------
----------- -------------------------
----- -------
---------
  ----- ---------------
-----
  ------
  - ----- -----------
    -----
      ------
      - ----- -----
        --------
          ------------ ----
          ------------ --
      - ----- -----
        --------
          ------------ ----
          ------------ --

上面的 YAML 文件定义了一个 Ingress 资源对象,它包含了两个路由规则。第一个规则将流量路由到 serviceName 为 app1,servicePort 为 80 的服务上,而第二个规则将流量路由到 serviceName 为 app2,servicePort 为 80 的服务上。

需要注意的是,上面的示例中使用的 Ingress 资源对象是 networking.k8s.io/v1beta1 版本的,而在 Kubernetes 1.19 版本之后,Ingress 资源对象已经升级为 networking.k8s.io/v1 版本。

部署 Ingress Controller

在使用 Ingress 之前,需要先部署 Ingress Controller。目前有多种 Ingress Controller 可供选择,例如 Nginx、Traefik 等。

这里以 Nginx Ingress Controller 为例进行介绍。首先需要创建一个命名空间:

然后使用 Helm 安装 Nginx Ingress Controller:

安装完成后,可以查看 Ingress Controller 的 Pod 是否正常运行:

部署应用

在部署应用之前,需要先创建一个 Service 资源对象,用于将流量路由到应用的 Pod 上。

下面是一个简单的 Service 资源对象的定义示例:

-- -------------------- ---- -------
----------- --
----- -------
---------
  ----- ----
-----
  ---------
    ---- ----
  ------
  - ----- ----
    ----- --
    ----------- --

上面的 YAML 文件定义了一个 Service 资源对象,它将流量路由到 app: app1 的 Pod 上,并将流量转发到端口号为 80 的容器端口。

然后可以部署应用的 Deployment 资源对象,例如:

-- -------------------- ---- -------
----------- -------
----- ----------
---------
  ----- ----
-----
  ---------
    ------------
      ---- ----
  ---------
    ---------
      -------
        ---- ----
    -----
      -----------
      - ----- ----
        ------ ------------
        ------
        - -------------- --

上面的 YAML 文件定义了一个 Deployment 资源对象,它使用最新版本的 nginx 镜像,并将容器端口号设置为 80。

部署 Ingress 资源对象

在创建了 Ingress Controller 和应用之后,可以创建 Ingress 资源对象了。

使用以下命令创建 Ingress 资源对象:

其中,ingress.yaml 是 Ingress 资源对象的定义文件。

测试 Ingress

部署完成后,可以使用浏览器访问 Ingress 的 URL,例如 https://example.com/app1,看是否能够成功访问应用。

总结

本文介绍了 Kubernetes Ingress 的基本概念、优势以及如何使用 Ingress。使用 Ingress 可以帮助我们简化流量管理、提高灵活性以及提供更加安全的通信。同时,本文还介绍了如何部署 Ingress Controller、应用以及 Ingress 资源对象,并提供了相应的示例代码,希望对读者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6586aa3ed2f5e1655d11019a

纠错
反馈