加密应用中的指标

借助 Google Distributed Cloud (GDC) 网闸隔离配置的监控组件,您可以使用双向传输层安全协议 (mTLS) 对传输中的应用指标进行加密和身份验证。在 MonitoringTarget 自定义资源上配置 mTLS 可验证指标服务器和监控流水线的身份,从而确保跨项目工作负载的指标收集安全。

准备工作

如需管理 MonitoringTarget 自定义资源,您必须拥有必要的权限。

申请 IAM 组织角色

请与您的 IAM 组织管理员联系,申请获得以下角色:

  • MonitoringTarget PA Creator (monitoringtarget-pa-creator):创建 MonitoringTarget 自定义资源。
  • MonitoringTarget PA Editor (monitoringtarget-pa-editor):修改 MonitoringTarget 自定义资源。
  • MonitoringTarget PA Viewer (monitoringtarget-pa-viewer):查看 MonitoringTarget 自定义资源。

申请 IAM 项目角色

请与您的 IAM 项目管理员联系,申请获得以下角色:

  • MonitoringTarget Editor (monitoringtarget-editor):修改项目命名空间中的 MonitoringTarget 自定义资源。
  • MonitoringTarget Viewer (monitoringtarget-viewer):查看项目命名空间中的 MonitoringTarget 自定义资源。

获得必要权限后,请先完成以下步骤,然后再启用指标加密:

  1. 部署指标服务器。
  2. 从工作负载中收集指标。
  3. 确保您的 MonitoringTarget 自定义资源显示 Ready 状态,如以下示例所示:

    apiVersion: monitoring.gdc.goog/v1
    kind: MonitoringTarget
    # [...]
    status:
      conditions:
      - lastTransitionTime: "2023-10-27T15:27:51Z"
        message: ""
        observedGeneration: 1
        reason: Ready
        status: True
        type: Ready
    
  4. 在信息中心内查询和查看指标,以确认指标服务器是否在发送预期数据。

装载证书

您的工作负载需要使用在 MonitoringTarget 自定义资源上启用 mTLS 时自动生成的证书。使用以下模板为此证书添加卷和卷装载:

apiVersion: apps/v1
kind: Deployment # or StatefulSet
metadata:
  name: "SERVICE_NAME"
spec:
  template:
    spec:
      containers:
        - name: "CONTAINER_NAME"
          volumeMounts:
          - mountPath: "/etc/ssl/MONITORING_TARGET_NAME-cert"
            name: "MONITORING_TARGET_NAME-cert"
            readOnly: true
      volumes:
      - name: "MONITORING_TARGET_NAME-cert"
        secret:
          secretName: "MONITORING_TARGET_NAME-cert"
  # [...]

替换以下内容:

  • SERVICE_NAME:Deployment 或 StatefulSet 对象的名称。
  • CONTAINER_NAME:要添加卷装载的容器的名称。
  • MONITORING_TARGET_NAME:您的 MonitoringTarget 自定义资源的名称。密钥名称基于此名称。例如,my-mon-target 资源会创建 my-mon-target-cert 密钥名称。

提供指标

您的指标服务器必须通过启用了 mTLS 的 HTTP 服务器提供指标。在以下两种情况之一中,您可能需要加密指标:

  • 对于您拥有的应用:修改源代码以支持 mTLS,并使用 mTLS 证书配置指标服务器。
  • 对于您不拥有的应用:请参阅应用文档,了解如何启用 HTTPS 指标端点。应用必要的配置,例如配置命令行参数或部署 config 文件。

启用 mTLS 指标收集

将以下标签添加到 MonitoringTarget 自定义资源的 metadata 部分,以启用加密指标的收集:

monitoring.gdc.goog/enable-mtls: "true"

自定义资源必须如以下示例所示:

  apiVersion: monitoring.gdc.goog/v1
  kind: MonitoringTarget
  metadata:
    namespace: my-project-namespace
    name: "SERVICE_NAME"
    labels:
      monitoring.gdc.goog/enable-mtls: "true" # Enable mTLS metrics collection
  spec:
    # [...]

如需验证您是否已启用 mTLS 身份验证,请检查您的 MonitoringTarget 自定义资源是否显示证书和证书 Secret 的 Ready 状态,如以下示例所示:

apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
# [...]
status:
  conditions:
  - lastTransitionTime: "2023-11-09T11:15:10Z"
    message: "admin,user-vm-1,user-vm-2,org-1-system"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: Ready
  - lastTransitionTime: "2023-11-09T11:14:43Z"
    message: "Certificate is ready"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: CertificateReady
  - lastTransitionTime: "2023-11-09T11:15:10Z"
    message: "Successfully created secret"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: CertificateSecretReady