Coursera 笔记

Module 03 · Managing Applications with Kubernetes

Service Binding服务绑定(Service Binding)

Coursera ↗

定义与目标

什么是服务绑定?

服务绑定是应用程序消费外部服务或后端服务(Backing Services)所需的过程。

  • 外部服务包括:REST APIs、数据库、事件总线(event buses)等。

核心目标与角色

角色 目标
配置管理 管理后端服务的配置和凭证(configuration and credentials)。
数据保护 保护敏感数据。
自动提供凭证 自动将服务凭证作为 Kubernetes Secret 提供给您。
应用调用 通过将应用程序绑定到 Deployment 来消费外部服务,应用代码随后使用这些凭证调用相应的服务。

绑定外部服务到 Kubernetes 集群

本节以 IBM Cloud Service 为例,介绍服务绑定的步骤。

步骤概览

服务绑定可以快速为 IBM Cloud 服务创建服务凭证,并将其存储在集群的 Kubernetes Secret 中。

  1. 资源置备 (Provision):置备(provision)服务实例。
  2. 服务绑定 (Bind):将服务绑定到集群,以创建使用公共云服务端点的服务凭证。
  3. 凭证存储 (Store):将凭证存储在 Kubernetes Secret 中。
  4. 应用配置 (Configure):配置您的应用程序以访问 Kubernetes Secret 中的服务凭证。

演示示例:Tone Analyzer Service

以 Tone Analyzer Service 为例进行讲解。该服务使用语言分析来检测给定文本的语气(tone)。

  • 服务提供了 JavaScript SDK。
  • 您将服务绑定到 Deployment,使凭证自动可用。
  • 代码随后使用绑定中的凭证调用 Tone Analyzer Service。

绑定流程与代码验证

步骤 1: 置备服务实例

  • 使用命令行界面(CLI)创建服务实例。
  • 或通过 IBM Cloud 网站上的目录置备服务实例。

步骤 2: 绑定服务到集群

  • 使用 service bind 命令将新创建的服务实例绑定到您的集群。
  • IBM Cloud Service Binding 会自动创建一个包含服务凭证的 Kubernetes Secret。
    • 服务实例的凭证是 Base64 编码的,并以 JSON 格式存储在 Secret 中。

步骤 3: 验证 Secret 对象

服务绑定到集群后,您可以通过以下方式验证 Secret 对象:

  • 使用 Get Secrets 命令,显示 Kubernetes 集群中的所有 Secrets。
  • 通过 Kubernetes Dashboard 用户界面或 IBM Cloud Kubernetes Service 检索相同的 Secrets。

步骤 4: 在应用程序中使用凭证

要访问 Secret 中的数据,您可以选择以下任一方法:

选项 A: 挂载为卷 (Volume Mount)

  • 根据置备规范(Step 1)将 Secret 作为卷(Volume)挂载到 Pod 中。
    • 此操作会在 Volume Mounts 目录中创建一个 JSON 格式的文件,名为 binding。
    • 该 binding 文件包含访问 IBM Cloud 服务所需的所有信息和凭证。

选项 B: 引用为环境变量 (Environment Variables)

  • 在环境变量中引用 Secret。
    • binding.API Key、binding.username 和 binding.password 等环境变量对应于 Watson Tone Analyzer 服务实例的 API Key、用户名和密码。
    • 代码片段示例:一个 Node.js 应用程序在 Express.js 应用程序内部使用这些环境变量来调用服务。

总结要点

  • 将外部服务绑定到您的 Deployment 会自动提供在代码中使用该服务的凭证。
  • 凭证以 Secret 的形式存储,可以通过卷挂载(Volume Mounts)或环境变量(Environment Variables)来消费。
  • 服务绑定管理后端服务的配置和凭证,同时保护敏感数据。
  • 您可以通过以下方式配置应用程序以使用存储在 Secret 中的凭证:
    • 将 Secret 挂载为 Pod 的卷。
    • 在环境变量中引用 Secret。