一、前提条件
·已创建腾讯云 TKE 标准集群(支持 CVM 节点、超级节点架构)。
·部署环境已安装 Docker、containerd(按需)等工具。
·具备集群管理员权限,可执行镜像构建、Pod 创建、Daemonset 配置等操作。
二、方式一:在集群 CVM 节点部署 Agent 服务
参考 数据安全审计 Agent 部署,直接在 TKE 集群的 CVM 节点执行 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.shsh /CapAgent/bin/start.sh
5. 验证部署:查看 Pod IP 与数据安全审计平台 Agent 列表中的部署 IP 一致,且 Agent 状态为 “运行中”。
·在集群详情页面,单击 Pod,查看 Pod IP 。
·在数据安全审计 > Agent 管理页面,单击 Agent 列表,查看数据安全审计平台 Agent 列表中的部署 IP。
七、步骤1:开启资产审计开关
1. 登录 数据安全审计控制台,在左侧导航栏中,单击数据资产。
2. 在数据资产页面,选择需要开启审计的资产,并启用该资产的 Agent 审计权限。
八、步骤2:准备 Agent 镜像
1. 在左侧导航栏中,单击系统管理 > Agent 管理,进入 Agent 部署页面。选择并下载 Agent 。
2. 创建 Dockerfile,内容如下:
FROM ccr.ccs.tencentyun.com/qcloud/centos:7COPY dsaagent_innernet_linux_20241231_14_47_34.zip /RUN yum install -y unzip crontabs cronieRUN unzip /dsaagent_innernet_linux_20241231_14_47_34.zipRUN cd /CapAgent/bin && chmod +x *.shRUN echo '#/bin/sh' >> /start.shRUN echo 'cd /CapAgent/bin && ./start.sh' >> /start.shRUN echo 'sleep inf' >> /start.shRUN chmod +x /start.shWORKDIR /CapAgent
3. 执行 docker build 构建镜像:
# docker build -t 镜像名 -f Dockerfile .docker build -t agent-centos -f Dockerfile .
4. 执行 docker tag 指定上传的镜像仓库:
# docker tag 镜像名:tag 镜像仓库/镜像名:tagdocker 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/v1kind: DaemonSetmetadata: 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-2dde6574d48dspec: 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: RollingUpdatestatus: 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,实时监听数据库访问流量。