Kubernetes 中使用 Ingress 进行服务暴露

阅读时长 6 分钟读完

在 Kubernetes 中,使用 Ingress 可以方便地将服务暴露给外部网络,而不需要暴露每个服务的 IP 地址和端口。本文将详细介绍 Kubernetes 中使用 Ingress 进行服务暴露的方法,并提供示例代码。

什么是 Ingress?

Ingress 是 Kubernetes 中的一种资源对象,它允许将多个服务暴露给外部网络,同时提供负载均衡和 HTTPS 支持等功能。Ingress 可以通过定义规则来将请求路由到不同的服务,还可以通过配置 TLS 证书来提供 HTTPS 支持。

如何使用 Ingress?

使用 Ingress 需要满足以下条件:

  • Kubernetes 集群中已经安装了 Ingress Controller。
  • Ingress Controller 已经正确配置并运行。

安装 Ingress Controller

Kubernetes 并没有提供默认的 Ingress Controller,因此需要选择安装一个 Ingress Controller。常见的 Ingress Controller 有 Nginx、Traefik、HAProxy 等。本文以 Nginx Ingress Controller 为例进行介绍。

安装 Nginx Ingress Controller

在 Kubernetes 集群中安装 Nginx Ingress Controller 可以使用 Helm 工具。首先需要添加 Nginx Ingress Controller 的 Helm 仓库:

接下来可以使用 Helm 安装 Nginx Ingress Controller:

安装完成后,可以使用以下命令查看 Ingress Controller 是否正常运行:

如果输出类似以下内容,则表示 Ingress Controller 正常运行:

配置 Ingress

在安装完成 Ingress Controller 后,就可以开始配置 Ingress 了。

创建 Ingress 资源

首先需要创建一个 Ingress 资源对象,例如下面的示例:

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

该示例定义了一个名为 my-ingress 的 Ingress 资源,将请求路由到两个服务。其中,nginx.ingress.kubernetes.io/rewrite-target: / 注解可以将请求路径重写为 /,以便服务可以正确处理请求。

配置服务

需要将服务暴露给 Ingress,可以使用以下示例配置文件:

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

该示例定义了两个名为 service1service2 的服务,它们将在 Ingress 中被暴露。

部署应用程序

创建完 Ingress 和服务后,需要部署应用程序。可以使用以下示例部署文件:

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

该示例定义了两个名为 service1service2 的应用程序,它们将被部署到 Kubernetes 集群中。

验证 Ingress

部署完成后,可以使用以下命令查看 Ingress 是否正常运行:

如果输出类似以下内容,则表示 Ingress 正常运行:

可以使用浏览器访问 http://example.com/service1http://example.com/service2,验证服务是否正常运行。

总结

本文介绍了 Kubernetes 中使用 Ingress 进行服务暴露的方法,并提供了示例代码。使用 Ingress 可以方便地将多个服务暴露给外部网络,同时提供负载均衡和 HTTPS 支持等功能。在实际使用中,需要根据具体情况进行配置和调整。

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

纠错
反馈