所有指标数据都必须在传输过程中加密,以确保安全。Google Distributed Cloud (GDC) 气隙设备的监控组件通过双向传输层安全协议 (mTLS) 提供传输中加密和身份验证。mTLS 方法会验证网络连接中双方的身份,确认他们拥有自己所声称的身份。
本页面介绍了如何为指标服务器设置 mTLS。
准备工作
如需管理 MonitoringTarget 自定义资源,请向管理员请求必要的权限。
所需 IAM 角色
请与您的项目 IAM 管理员联系,以请求以下角色:
- MonitoringTarget Creator (
monitoringtarget-creator):在项目命名空间中创建MonitoringTarget自定义资源。 - MonitoringTarget Editor (
monitoringtarget-editor):在项目命名空间中修改或删除MonitoringTarget自定义资源。 - MonitoringTarget Viewer (
monitoringtarget-viewer):在项目命名空间中查看MonitoringTarget自定义资源。
获得必要的权限后,请完成以下步骤,然后再启用指标加密:
- 部署指标服务器。
- 从工作负载收集指标。
确保
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在信息中心内查询和查看指标 以确认指标服务器正在发送预期的数据。
装载证书
您的工作负载需要使用在 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自定义资源的名称。Secret 名称基于此名称。例如,my-mon-target资源会创建my-mon-target-certSecret 名称。
提供指标
您的指标服务器必须从启用 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