更新时间:2025-09-08 GMT+08:00

为第三方私网集群安装Agent

操作场景

本指导适用于在不能访问公网的第三方私网集群上安装Agent。按照本指导配置完成后,HSS将自动在集群节点上安装Agent,并能够随集群扩容自动为新节点安装Agent,在集群缩容时同步卸载Agent。

前提条件

第三方私网集群已创建专线连接,与云上VPC实现了网络互通。如何创建专线连接请参见云专线入门指引

约束与限制

  • 集群编排平台限制:1.19及以上Kubernetes。
  • 节点操作系统限制:Linux系统。
  • 节点规格要求:CPU必须2核及以上,内存必须4GiB及以上,系统盘必须40GiB及以上,数据盘必须100GiB及以上。
  • 私网集群接入限制:目前仅华北-北京一、华北-北京四、华东-上海一、华东-上海二、华南-广州、中国-香港、亚太-新加坡、西南-贵阳一、亚太-雅加达、中东-利雅得、亚太-曼谷区域支持第三方云集群或自建集群通过私网接入HSS。
  • Agent不兼容Galera 3.34和MySQL 5.6.51或更早版本的集群。

步骤一:创建ECS

  1. 登录管理控制台,进入购买弹性云服务器页面。
  2. 根据页面提示,设置弹性云服务器参数。

    建议参考表1所示设置部分参数,其余参数请结合实际情况按需配置。

    表1 购买弹性云服务器参数说明

    参数名称

    参数说明

    取值样例

    计费模式

    弹性云服务器的付费方式。

    • 包年/包月:预付费模式,先付费再使用。根据订单的购买周期计费。
    • 按需计费:后付费模式,先使用再付费。根据实际使用时长秒级计费,按小时结算。
    • 竞价计费:后付费模式,先使用再付费,相对于按需计费有一定的折扣。包含竞价模式和竞享模式,根据实际使用时长秒级计费,按小时结算。

    按需计费

    CPU架构

    选择CPU架构,支持选择“x86计算”“鲲鹏计算”

    x86计算

    实例

    • 搜索规格:输入vCPUs、内存或规格名称直接搜索规格。

      当实例选择“规格类型选型”方式时,支持搜索规格。

    • 通过列表选择规格:通过实例类型和规格代系名称在列表中选择已上线的规格。

    通用计算型,2vCPUs,4GiB

    镜像

    镜像是一个包含了操作系统及必要配置的弹性云服务器模板,使用镜像可以创建弹性云服务器。

    公共镜像,EulerOS 2.5 64bit(40GIB)

    系统盘

    系统盘用于存储云服务器的操作系统,创建云服务器时自带系统盘,且系统盘自动初始化。

    超高IO

  3. 单击“立即购买”,在提示框中单击“同意并立即购买”,支付完成后,云服务器将自动创建,并默认开机。
  4. 在弹性云服务器列表中,查看创建成功的服务器,并记录私网IP地址。

步骤二:搭建nginx

  1. 登录步骤一:创建ECS创建好的服务器。
  2. 执行以下命令,进入temp目录。

    cd /temp

  3. 执行以下命令,创建install_nginx.sh文件。

    vi install_nginx.sh

  4. 按“i”键进入编辑模式,并将以下内容复制粘贴到install_nginx.sh文件。

    #!/bin/bash
    
    yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
    wget http://www.nginx.org/download/nginx-1.21.0.tar.gz
    tar zxf nginx-1.21.0.tar.gz -C /usr/src/
    cd /usr/src/nginx-1.21.0/
    useradd -M -s /sbin/nologin nginx
    ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-file-aio \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_flv_module \
    --with-http_ssl_module \
    --with-stream \
    --with-pcre && make && make install
    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    nginx

  1. 粘贴完成后,按Esc键,输入以下命令,按回车键退出,完成配置。

    :wq!

  2. 执行以下命令,安装nginx。

    bash /temp/install_nginx.sh

  3. 执行以下命令,修改nginx配置文件。

    cat <<END >> /usr/local/nginx/conf/nginx.conf
    stream {
      upstream backend_hss_anp {
        server {{anp后端地址}}:8091 weight=5 max_fails=3 fail_timeout=30s;
      }
      server {
        listen 8091 so_keepalive=on;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass backend_hss_anp ;
      }
    }
    END

    “{{anp后端地址}}”请参考表2,修改为实际地址后,再执行命令。

    表2 anp后端地址

    区域

    anp后端地址

    贵阳一、曼谷、上海二、广州、北京四、北京二、上海一

    hss-proxy.区域代码.myhuaweicloud.com

    其他区域

    hss-anp.区域代码.myhuaweicloud.com

    区域代码请参见地区和终端节点

  4. 执行以下命令,使nginx配置生效。

    nginx -s reload

步骤三:准备kubeconfig文件

kubeconfig文件用于将集群的操作权限授权给HSS,方式一配置的kubeconfig文件包含集群管理员权限,方式二生成的kubeconfig文件仅包含HSS所需权限,如果您担心过度授权的问题,请通过方式二准备kubeconfig文件。

  • 方式一:配置默认的kubeconfig文件
    1. 按以下操作创建HSS的专属命名空间。
      1. 登录任一集群节点。
      2. 创建hss.yaml文件,并将以下内容复制到hss.yaml文件中。
        1
        {"metadata":{"name":"hss"},"apiVersion":"v1","kind":"Namespace"}
        
      3. 执行以下命令,创建HSS的专属命名空间。
        kubectl apply -f hss.yaml
    2. 在$HOME/.kube/config路径下,找到并下载“config”文件。
    3. 将文件名称“config”修改为“config.yaml”,增加.yaml的后缀。
  • 方式二:生成HSS专用的kubeconfig文件
    1. 创建HSS的专属命名空间和服务账号。
      1. 登录任一集群节点。
      2. 创建hss-account.yaml文件,并将以下内容复制到hss-account.yaml文件中。
        1
        {"metadata":{"name":"hss"},"apiVersion":"v1","kind":"Namespace"}{"metadata":{"name":"hss-user","namespace":"hss"},"apiVersion":"v1","kind":"ServiceAccount"}{"metadata":{"name":"hss-user-token","namespace":"hss","annotations":{"kubernetes.io/service-account.name":"hss-user"}},"apiVersion":"v1","kind":"Secret","type":"kubernetes.io/service-account-token"}
        
      3. 执行以下命令,创建HSS的专属命名空间和服务账号。
        kubectl apply -f hss-account.yaml
    2. 生成kubeconfig文件。
      1. 创建gen_kubeconfig.sh文件,并将以下内容复制到gen_kubeconfig.sh文件中。
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        #!/bin/bash
        
        KUBE_APISERVER=`kubectl config view  --output=jsonpath='{.clusters[].cluster.server}' | head -n1 `
        CLUSTER_NAME=`kubectl config view -o jsonpath='{.clusters[0].name}'`
        kubectl get secret hss-user-token -n hss -o yaml |grep ca.crt: | awk '{print $2}' |base64 -d >hss_ca_crt
        
        kubectl config set-cluster ${CLUSTER_NAME} --server=${KUBE_APISERVER}  --certificate-authority=hss_ca_crt  --embed-certs=true --kubeconfig=hss_kubeconfig.yaml
        kubectl config set-credentials hss-user --token=$(kubectl describe secret hss-user-token -n hss | awk '/token:/{print $2}') --kubeconfig=hss_kubeconfig.yaml
        kubectl config set-context hss-user@kubernetes --cluster=${CLUSTER_NAME} --user=hss-user --kubeconfig=hss_kubeconfig.yaml
        kubectl config use-context hss-user@kubernetes --kubeconfig=hss_kubeconfig.yaml
        
      2. 执行以下命令,生成名称为“hss_kubeconfig.yaml”的kubeconfig文件
        bash gen_kubeconfig.sh

步骤四:为第三方私网集群安装Agent

  1. 登录企业主机安全控制台
  2. 在控制台左上角,单击图标,选择区域或项目。
  3. 在左侧导航栏,选择安装与配置 > 容器安装与配置,进入“容器安装与配置”页面。
  4. “集群”页签,单击“安装容器安全Agent”,弹出“容器资产接入与安装”对话框。
  5. 选择“非CCE集群(私网接入)”,并单击“开始配置”
  6. 配置镜像仓信息,并单击“生成命令”。相关参数说明如表 配置镜像仓信息所示。

    表3 配置镜像仓信息

    参数名称

    参数说明

    三方镜像仓库地址

    填写三方镜像仓库地址。

    地址示例:hub.docker.com

    镜像仓类型

    选择镜像仓的类型。当前支持选择的类型如下:

    • Harbor
    • Quay
    • Jfrog
    • 其他

    组织名称

    填写镜像仓组织名称。

    镜像仓用户名

    填写镜像仓用户名。

    镜像仓密码

    填写镜像仓密码。

    高级配置

    • 镜像架构

      如果您需要指定容器使用的镜像架构类型,可设置该参数,不设置则保持默认,默认容器使用多架构镜像。

    • Anp代理地址

      填写步骤一:创建ECS创建的服务器私网IP地址。

    • Hostguard代理地址

      专线服务器的私网IP地址(10180端口)。

    • 容器名称

      在接入集群资产时,ANP-Agent和Hostguard(HSS Agent)将以容器的形式运行在节点上,为了方便标识这两个容器,您可以设置一个易区分的名称。

    • DNS配置

      Kubernetes配置Pod的DNS,使运行中的容器可以通过名称而非IP查找Service。

      您可以为ANP-Agent和Hostguard(HSS Agent)的Pod设置一个DNS,方便查找。

      以下是不同取值的解释:

      • Default:Pod从运行所在的节点继承域名解析配置。
      • ClusterFirst:与配置的集群域后缀不匹配的任何DNS查询(例如“www.kubernetes.io”) 都会由DNS服务器转发到上游域名服务器。集群管理员可能配置了额外的存根域和上游DNS服务器。
      • ClusterFirstWithHostNet:对于以hostNetwork方式运行的Pod,应将其DNS策略显式设置为“ClusterFirstWithHostNet”。否则,以hostNetwork方式和“ClusterFirst”策略运行的Pod将会做出回退至“Default”策略的行为。
      • None:当Pod的dnsPolicy设置为“None”时, 列表必须至少包含一个IP地址,否则此属性是可选的。 所列出的服务器将合并到从指定的DNS策略生成的基本域名服务器,并删除重复的地址。

  7. 执行以下操作,将集群连接组件(ANP-Agent)和HSS Agent的镜像上传至您的私有镜像仓。

    1. “容器资产接入与安装”对话框中,单击“集群防护组件镜像压缩包”,下载压缩包到本地,并拷贝压缩包到任一集群节点上。
    2. “容器资产接入与安装”对话框中,单击“复制镜像上传命令”,复制命令,并在集群节点上执行该命令。
      图1 复制镜像上传命令

      命令执行后界面回显如图 镜像仓上传成功所示,表示上传成功。

      图2 镜像仓上传成功

  8. “容器资产接入与安装”对话框中,单击“下一步”
  9. 配置集群接入信息,并单击“生成命令”。接入信息相关参数说明如表 配置接入信息参数说明所示。

    图3 配置集群接入信息
    表4 配置接入信息参数说明

    参数名称

    参数说明

    集群名称

    填写接入的集群名称。

    服务商

    选择集群所属的服务商。目前支持接入以下服务商的集群:

    • 阿里云
    • 腾讯云
    • AWS
    • 微软云
    • 自建
    • IDC自建

    上传kubeconfig

    添加并上传根据步骤三:准备kubeconfig文件配置好的kubeconfig文件。

    选择Context

    上传kubeconfig文件后,HSS会自动解析出Context。

    选择有效期

    上传kubeconfig文件后,HSS会自动解析出有效期。您可以选择最终有效期以前的时间,在选择的有效期到期后,您需要重新接入该资产。

  10. 执行以下操作为集群安装集群连接组件(ANP-Agent),建立HSS和集群的连接。

    1. “容器资产接入与安装”对话框中,单击“复制命令”
      图4 复制命令
    2. 登录到任一节点目录,执行复制的命令,创建集群拉取私有镜像的凭证。
    3. “容器资产接入与安装”对话框中,单击“下载Yaml文件”,下载生成的命令文件。
      图5 下载Yaml文件
    4. 将文件拷贝到任一节点目录下。
    5. 执行以下命令,安装集群连接组件(ANP-Agent)。
      kubectl apply -f proxy-agent.yaml
    6. 执行以下命令,查询集群连接组件(ANP-Agent)是否安装成功。
      kubectl get pods -n hss | grep proxy-agent

      界面回显如图 集群Agent安装成功所示,表示集群连接组件(ANP-Agent)安装成功。

      图6 ANP-Agent安装成功
    7. 执行以下命令,查询集群和HSS是否成功建立连接。
      for a in $(kubectl get pods -n hss| grep proxy-agent | cut -d ' ' -f1); do kubectl -n hss logs $a | grep 'Start serving';done

      界面回显如图 集群连接HSS成功所示,表示集群和HSS建立连接成功。

      图7 集群连接HSS成功

  11. “容器资产接入与安装”对话框中,单击“下一步”
  12. 配置Agent相关参数。参数说明如表 Agent配置参数说明所示。

    表5 Agent配置参数说明

    参数名称

    参数说明

    配置规则

    选择Agent配置规则。

    • 默认规则:容器运行时的sock地址为通用地址,Agent将默认安装在没有配置污点的节点上。
    • 自定义规则:如果您的容器运行时sock地址非通用地址需要修改,或仅需要在指定的节点上安装Agent,可选择该规则。
    说明:
    • 如果容器运行时的sock地址不正确,可能导致集群接入HSS后,部分HSS功能不能正常使用。
    • 在进行容器运行时配置时,建议全选所有运行时类型。

    高级配置(可选)

    配置规则选择“自定义规则”时,支持配置。

    单击展开所有高级配置项,“开启Agent自动升级”项,默认为展开状态。

    • 开启Agent自动升级

      是否开启Agent自动升级,勾选即开启,开启后,每日00:00~06:00,企业主机安全将自动升级低版本的Agent为最新版,以便为您提供更好的服务。

    • 节点选择器配置

      填写需要安装Agent的节点标签的“键”“值”,单击“确认添加”。不添加任何节点标签时,默认在所有没有配置污点的节点上安装Agent。

    • 容忍度配置

      如果在进行“节点选择器配置”时,添加了配有污点的节点标签,则请填写污点的“键”和值以及污点的效果,单击“确认添加”,允许在该节点上安装Agent。

  13. 配置完成,单击确定,开始安装HSS Agent。
  14. 在集群列表中,查看集群状态为“运行中”,表示集群接入HSS成功。

后续操作

在为集群安装Agent成功后,请为其开启防护