文档中心>数据安全审计>实践教程>TKE(容器服务)集群部署数审 Agent 实践教程

TKE(容器服务)集群部署数审 Agent 实践教程

最近更新时间:2025-11-18 11:42:32

我的收藏

应用场景

本文档详细介绍数据安全审计 Agent 在腾讯云 TKE(容器服务)集群中的三种部署方式,包括集群 CVM 节点部署、集群 Pod 部署及超级节点 Daemonset 部署,适用于不同网络环境和业务场景,助力快速实现数据资产审计能力。

前提条件

已创建腾讯云 TKE 标准集群(支持 CVM 节点、超级节点架构)。
部署环境已安装 Docker、containerd(按需)等工具。
具备集群管理员权限,可执行镜像构建、Pod 创建、Daemonset 配置等操作。

部署方式

方式一:在集群 CVM 节点部署 Agent 服务

参考 数据安全审计 Agent 部署,直接在 TKE 集群的 CVM 节点执行 Agent 部署命令。

方式二:在集群 Pod 部署 Agent 服务

步骤1:准备 Agent 安装包

1. 登录 数据安全审计控制台,在左侧导航栏中,单击系统管理 > Agent 管理
2. 在 Agent 管理页面,依据实际需求,选择并下载 Agent 安装包。

3. 将安装包上传至 TKE 集群节点。

步骤2:构建含 Agent 的自定义镜像

1. 将 Agent 安装包解压,通过 Dockerfile 文件(需要安装 Docker 服务)添加在镜像中。
FROM mongo:4.2.18-rc0 # FROM 镜像名称:版本
ADD CapAgent/ ./CapAgent # 将解压后的 Agent 目录添加至镜像
2. 执行镜像构建命令。
docker build -f Dockerfile -t monog:4.2.18.

步骤3:镜像导入集群

若是集群运行时组件为 containerd ,可通过 Docker 打包添加在 containerd 中将镜像保存下来。
1. 保存镜像为本地文件。
docker save -o mongo4.2.18.tar
docker.io/library/monog:4.2.18
2. 连接所有 K8S worker node,导入镜像。
ctr -n k8s.io image import
mongo4.2.18.tar
3. 验证镜像导入结果。
ctr -n k8s.io image list | grep mongo4.2.18.tar

步骤4:创建/更新 Pod 并启动 Agent

1. 登录 TKE 控制台,选择目标集群,单击集群名称

2. 在集群详情页面,单击 Pod
3. 在 Pod 配置管理页面,新建或编辑目标 Pod。镜像与镜像版本请填写步骤2步骤3构建的自定义镜像和版本。

4. 进入 Pod 容器终端,执行权限配置及 Agent 启动命令:
chmod 755 /CapAgent/bin/start.sh
sh /CapAgent/bin/start.sh
5. 验证部署:查看 Pod IP 与数据安全审计平台 Agent 列表中的部署 IP 一致,且 Agent 状态为 “运行中”。
集群详情页面,单击 Pod,查看 Pod IP 。

数据安全审计 > Agent 管理页面,单击 Agent 列表,查看数据安全审计平台 Agent 列表中的部署 IP。


方式三:TKE 超级节点上以 Daemonset 方式运行

步骤1:开启资产审计开关

1. 登录 数据安全审计控制台,在左侧导航栏中,单击数据资产
2. 在数据资产页面,选择需要开启审计的资产,并启用该资产的 Agent 审计权限。


步骤2:准备 Agent 镜像

1. 在左侧导航栏中,单击系统管理 > Agent 管理,进入 Agent 部署页面。选择并下载 Agent 。

2. 创建 Dockerfile,内容如下:
FROM ccr.ccs.tencentyun.com/qcloud/centos:7
COPY dsaagent_innernet_linux_20241231_14_47_34.zip /
RUN yum install -y unzip crontabs cronie
RUN unzip /dsaagent_innernet_linux_20241231_14_47_34.zip
RUN cd /CapAgent/bin && chmod +x *.sh
RUN echo '#/bin/sh' >> /start.sh
RUN echo 'cd /CapAgent/bin && ./start.sh' >> /start.sh
RUN echo 'sleep inf' >> /start.sh
RUN chmod +x /start.sh
WORKDIR /CapAgent
3. 执行 docker build 构建镜像:
# docker build -t 镜像名 -f Dockerfile .
docker build -t agent-centos -f Dockerfile .
4. 执行 docker tag 指定上传的镜像仓库:
# docker tag 镜像名:tag 镜像仓库/镜像名:tag
docker tag agent-centos:latest xxx.test.com/xxxx/agent-centos:2412311753
5. 执行 docker push 上传镜像:
# docker push 镜像仓库/镜像名:tag 如
docker push xxx.test.com/xxx/agent-centos:2412311753

步骤3:创建 Daemonset 资源

1. 登录TKE 控制台,选择目标集群,单击集群名称

2. 在集群详情页面,单击工作负载 > Daemonset
3. 在 Daemonset 配置管理页面,单击新建

4. 在新建 Daemonset 页面,按照提示配置基础信息。
镜像:输入步骤3上传的镜像。
镜像版本(Tag):输入步骤3上传的镜像版本。

5. 单击实例内容器 > 显示高级设置,配置启动参数。
运行命令:/bin/sh
运行参数:-c、/start.sh

6. 取消勾选访问设置 > Service ,确认配置项已填写好后,单击创建 Daemonset 即可。


步骤4:配置超级节点兼容参数

1. 在 Daemonset 页面,选择刚刚新建的 Daemonset 资源,单击操作列更多 > 编辑 yaml

2. 加入如下配置允许在超级节点使用 Daemonset ,详情请参考 容器安全的超级节点上支持运行 DaemonSet
spec:
template:
metadata:
annotations:
eks.tke.cloud.tencent.com/ds-injection: "true"
spec:
tolerations:
- key: eks.tke.cloud.tencent.com/eklet
operator: Exists
effect: NoSchedule

3. 继续加入如下设置(感知并监听网络设备):
spec:
hostNetwork: true #true表示开启hostNetwork,使得Daemonset Pod可以感知到Host机器上的网络设备。
containers:
securityContext:
capabilities:
add:
- NET_ADMIN #- NET_ADMIN表示增加NET_ADMIN能力,用于监听网络设备的流量。

4. 完整 Daemonset yaml 示例:
apiVersion: apps/v1
kind: DaemonSet
metadata:
annotations:
deprecated.daemonset.template.generation: "19"
creationTimestamp: "2024-12-31T07:13:14Z"
generation: 19
labels:
k8s-app: agent-test
qcloud-app: agent-test
managedFields:
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:deprecated.daemonset.template.generation: {}
f:labels:
.: {}
f:k8s-app: {}
f:qcloud-app: {}
f:spec:
f:revisionHistoryLimit: {}
f:selector: {}
f:template:
f:metadata:
f:annotations:
.: {}
f:eks.tke.cloud.tencent.com/ds-injection: {}
f:labels:
.: {}
f:k8s-app: {}
f:qcloud-app: {}
f:spec:
f:affinity: {}
f:containers:
k:{"name":"agent-test"}:
.: {}
f:args: {}
f:command: {}
f:env:
.: {}
k:{"name":"PATH"}:
.: {}
f:name: {}
f:value: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:resources:
.: {}
f:limits:
.: {}
f:cpu: {}
f:memory: {}
f:requests:
.: {}
f:cpu: {}
f:memory: {}
f:securityContext:
.: {}
f:capabilities:
.: {}
f:add: {}
f:privileged: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:dnsPolicy: {}
f:hostNetwork: {}
f:imagePullSecrets:
.: {}
k:{"name":"docker-login"}: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
f:tolerations: {}
f:updateStrategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
manager: tke-platform-api
operation: Update
time: "2024-12-31T09:53:39Z"
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:status:
f:currentNumberScheduled: {}
f:desiredNumberScheduled: {}
f:numberAvailable: {}
f:numberReady: {}
f:observedGeneration: {}
f:updatedNumberScheduled: {}
manager: kube-controller-manager
operation: Update
subresource: status
time: "2024-12-31T09:56:22Z"
name: agent-test
namespace: default
resourceVersion: "1506133824"
uid: 2884870b-5992-4dd1-9a72-2dde6574d48d
spec:
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: agent-test
qcloud-app: agent-test
template:
metadata:
annotations:
eks.tke.cloud.tencent.com/ds-injection: "true"
creationTimestamp: null
labels:
k8s-app: agent-test
qcloud-app: agent-test
spec:
affinity: {}
containers:
- args:
- -c
- /start.sh
command:
- /bin/sh
env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
image: xxx.test.com/xxx/agent-centos:2412311753
imagePullPolicy: IfNotPresent
name: agent-test
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
securityContext:
capabilities:
add:
- NET_ADMIN
privileged: false
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
hostNetwork: true
imagePullSecrets:
- name: docker-login
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoSchedule
key: eks.tke.cloud.tencent.com/eklet
operator: Exists
updateStrategy:
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
type: RollingUpdate
status:
currentNumberScheduled: 4
desiredNumberScheduled: 4
numberAvailable: 4
numberMisscheduled: 0
numberReady: 4
observedGeneration: 19
updatedNumberScheduled: 4
5. 配置完成后单击完成,等待 Daemonset 调度至所有超级节点。

步骤 5:完成部署并验证

1. 配置完成后,等待 Daemonset 调度至所有超级节点。
2. 在集群详情页面,单击工作负载 > Daemonset,查看 Daemonset 状态,确保 “运行 / Pod 数量” 与节点数一致。
3. 数据安全审计 > Agent 管理页面,单击 Agent 列表,确认所有节点对应的 Agent 状态为 “运行中”。
说明:
每个超级节点将自动启动含 Agent 进程的 Pod,实时监听数据库访问流量。