IBM Cloud Docs
使用 Ingress 的容器化应用程序

使用 Ingress 的容器化应用程序

通过 IBM Cloud® App ID,您可以使用 IBM Cloud Kubernetes Service 中的 Ingress 联网功能,以一致的方式来强制实施策略驱动的安全性。 使用这种方法,您可以同时对集群中的所有应用程序执行身份验证和授权策略,而无需更改应用程序代码!

自 2020 年 12 月 1 日起,不推荐使用 Kubernetes Service 定制 Ingress 映像。 本教程已更新为使用社区 Kubernetes Ingress 映像。 要查看此文档的先前版本,请参阅 Kubernetes Service 文档

App ID Kubernetes integration architecture
App ID Kubernetes integration architecture

  1. 用户打开应用程序,并触发了对 Web 应用程序或 API 的请求。
  2. 在 API 流程中,Ingress 控制器会尝试验证提供的令牌。 如果使用网络流,则会启动三段式 OIDC 身份验证流程。
  3. App ID 在认证过程中首先会显示登录窗口小部件。
  4. 用户提供用户名或电子邮件和密码。
  5. Ingress 控制器从 App ID 获取访问权和身份令牌以用于授权。
  6. Ingress 控制器验证并转发到应用程序的每个请求都具有包含令牌的授权头。

准备工作

开始之前,请确保您已满足以下先决条件。

  • 在部署群集的同一区域配置的App ID实例。 服务名称必须仅包含字母数字字符或连字符 (-),并且不能包含空格。

  • 标准 Kubernetes Service 集群,每个可用专区中至少有两个工作程序节点。

  • 以下IBM CloudIAM 角色:

    • 集群:管理员平台角色
    • Kubernetes命名空间:管理器服务角色
    • App ID: 编辑者 平台角色和 编写者 服务角色
  • 以下 CLI:

  • Kubernetes Service 和 Container Registry CLI 插件

为确保集成的最佳性能,建议您始终使用最新版本的IBM Cloud Kubernetes Service应用程序负载平衡器 (ALB)。 默认情况下,群集已启用自动更新。

添加重定向 URL

重定向 URL 是应用程序的回调端点; 用户在成功登录或注销应用程序后发送的位置。 为防止网络钓鱼攻击,App ID 根据您添加到服务的重定向 URL 的允许列表来验证请求的 URL。 通过向允许列表添加 URL,您可以授予 App ID 许可权以将用户转发到该位置。 了解有关重定向 URI 的更多信息

  1. 在 IBM Cloud 控制台中,从资源列表中选择 App ID 实例。

  2. 浏览至 App ID实例的“管理认证”页面。

  3. 身份提供者 选项卡中,确保身份提供者设置为开启。

    如果没有选择提供商,用户将不会通过身份验证,但仍会获得一个访问令牌,用于匿名访问应用程序。

  4. 认证设置 选项卡中,添加重定向 URL,然后单击 + 符号以保存更改。 重定向 URL 的格式应与以下示例类似:

    https://<hostname>/oauth2-<AppIDServiceInstanceName>/callback
    
    • 定制域:

      A URL that is registered with a custom domain might look like: http://mydomain.net/myapp2path/oauth2-myappid/callback. 如果要公开的应用程序在同一个群集中,但处于不同的命名空间,则可以使用通配符指定所有应用程序。 这在开发期间可能很有用,但建议您在生产中使用通配符时谨慎操作。 例如, https://custom_domain.net/*/oauth2-myappid/callback

    • Ingress 子域:

      如果您的应用程序注册了IBM KubernetesIngress 子域,您的回调 URL 可能看起来像这样:https://mycluster.us-south.containers.appdomain.cloud/myapp1path/oauth2-myappid/callback

更新 Ingress 资源

Ingress 资源用于定义要如何公开应用程序。 该资源包含用于定义如何将入局请求路由到应用程序的规则。 要向应用程序添加 App ID 认证,请遵循 IBM Cloud Kubernetes Service 文档 中的步骤。

后续步骤

既然应用程序已在 Kubernetes 集群中运行并且 Ingress 已配置,您可以尝试以下操作: