为 Private Cloud 连接器配置 Apigee API Hub

本部分详细介绍了 Apigee API Hub for Private Cloud 连接器的配置步骤,包括网络、身份验证和组织专用设置。

所需权限

新的 API Hub API 已与 Apigee API Hub for Private Cloud 连接器集成,用于处理环境和代理软件包的上传,这需要新的 IAM 角色。这是一个手动的一次性步骤,用于授予必要的权限。

如需授予正确的权限,请运行以下 gcloud 命令一次:

  gcloud projects add-iam-policy-binding GCP_PROJECT_NAME \
    --member="serviceAccount:SERVICE_ACCOUNT" \
    --role="roles/apihub.admin"

此命令会将 roles/apihub.admin 角色绑定到指定的服务账号,从而允许连接器执行所需的操作。确保此服务账号与创建插件实例时使用的服务账号相同。

网络和身份验证设置

  1. 将端口列入许可名单:Apigee API Hub for Private Cloud 连接器需要连接到管理服务器才能获取所需的 API 元数据,因此连接器需要能够访问管理服务器端口 8080 和 443。
  2. 基于密钥的 Google Cloud Platform 服务身份验证:Apigee API Hub for Private Cloud 连接器与 Google Cloud 服务通信,需要使用令牌进行身份验证。这是通过使用服务账号密钥创建模拟令牌来实现的。

    • 用于生成令牌的服务账号:创建一个专门用于生成令牌的新服务账号。此服务账号必须具有 Token Creator 角色。
    • 生成并下载服务账号密钥
      • 按照创建服务账号密钥中的步骤为令牌生成服务账号生成 JSON 密钥。
      • 下载此密钥文件(例如,下载到适用于私有云的 Apigee API Hub 连接器虚拟机的 /opt/apigee/keys/uapim.key 中)。
    • 设置 GOOGLE_APPLICATION_CREDENTIALS:启动适用于私有云的 Apigee API Hub 连接器时,您需要通过环境变量提供此文件的路径:
      export $GOOGLE_APPLICATION_CREDENTIALS=/opt/apigee/keys/uapim.key
  3. 管理 API 身份验证 (UAPIM_MGMT_AUTH):Apigee API Hub for Private Cloud 连接器需要凭据才能调用 Apigee Management API。为了安全起见,并实现自动化,请在 Apigee 中使用机器用户,而不是人工用户。

    在 Apigee 中创建机器用户:

    1. 创建用户
      • 在 Apigee 控制台中,创建机器用户(或系统用户)。如需详细了解用户和角色,请参阅自动执行令牌生成流程
      • 分配电子邮件地址(用于标识)和描述性名称(例如,uapim-connector-user)。
    2. 分配角色:向机器用户分配以下角色:
      • Apigee API 管理员:此角色提供对 Management API 的访问权限,允许 Apigee API Hub for Private Cloud 连接器与 Apigee 的管理系统进行交互(例如,提取元数据或管理 API 配置)。

生成采用 Base64 编码的凭据:

  1. 为机器用户生成“用户名:密码”对。
  2. 对凭据进行 Base64 编码:echo -n 'username:password' | base64
  3. 使用 base64 编码的值设置环境变量 $UAPIM_MGMT_AUTH:
    export UAPIM_MGMT_AUTH=USERNAME_PASSWORD

    其中,USERNAME_PASSWORD 是用户名和密码对的 base64 编码值。

    请确保在启动 Apigee API Hub for Private Cloud 连接器之前设置此环境变量。

为 Apigee API Hub for Private Cloud 连接器配置

打开配置文件 /opt/apigee/customer/application/uapim-connector.properties,以指定需要将数据上传到 API Hub 的 Apigee 组织。您可能拥有多个插件实例或多个 API Hub 实例。

  conf_uapim.settings.json={\
    "connectorConfig" : { \
      "org1" : { \
        "runtimeDataPubsub" : "", \
        "metadataPubsub":"", \
        "serviceAccount": "mysa1@in.myfirstProject",\
        "pluginInstanceId":"aaaa" \
      },\
      "org2" : { \
        "runtimeDataPubsub" : "", \
        "metadataPubsub":"",\
        "serviceAccount": "mysa2@in.mySecondProject",\
        "pluginInstanceId":"bbbbb", \
      } 
    },
    "runtimeDataPath":"/the/nfs/mounted/path", \    
    "managementServer": "hostname"
  } 

设置 JSON 的说明

  • connectorConfig 部分
    • 这是一个映射,其中每个键都是一个 Apigee 组织名称(例如,org1、org2)。
    • 每个组织条目都包含以下字段,这些字段是在创建插件的步骤中收到的:
      • runtimeDataPubsub:相应组织的运行时(分析)数据的 Pub/Sub 主题。
      • metadataPubsub:相应组织的 API 元数据的 Pub/Sub 主题。
      • serviceAccount:用于对向相应组织的 Pub/Sub 写入数据进行身份验证的服务账号(例如 mysa1@in.myfirstProject.iam.gserviceaccount.com)。
      • pluginInstanceId:与相应组织关联的插件的唯一实例 ID。
  • runtimeDataPath 部分:提供 NFS 装载的路径,消息处理器会将 Analytics (AX) 数据写入该路径。此路径必须与消息处理器上配置的路径相同。
  • managementServer 部分:Apigee 管理服务器网址的主机名或 IP 地址。
  • 环境变量 UAPIM_MGMT_AUTH:此环境变量在外部设置,包含用于访问管理服务器的 base64 编码的 username:password

添加转发代理配置

在同一文件 /opt/apigee/customer/application/uapim-connector.properties 中添加转发代理配置

  1. conf_http_client_service_jetty.proxy.enabled=true
  2. conf_http_client_service_jetty.proxy.host=
  3. conf_http_client_service_jetty.proxy.port=
  4. conf_http_client_service_jetty.proxy.user=
  5. conf_http_client_service_jetty.proxy.password=

为了使连接器正常工作,它需要连接到以下外部来源:

  • pubsub.googleapis.com:443
  • oauth2.googleapis.com:443
  • iamcredentials.googleapis.com:443

如果连接器无法直接连接到外部来源,但可以通过正向代理连接,则用户需要通过以下配置提供正向代理配置,并确保上述外部来源已列入许可名单。

启动适用于私有云的 Apigee API Hub 连接器

设置完所有配置后,使用 Apigee 服务命令启动 Apigee API Hub for Private Cloud 连接器:

apigee-service edge-uapim-connector start