
# 为第三方私网集群安装Agent
#### 操作场景
本指导适用于在不能访问公网的第三方私网集群上安装Agent。按照本指导配置完成后，HSS将自动在集群节点上安装Agent，并能够随集群扩容自动为新节点安装Agent，在集群缩容时同步卸载Agent。这种场景常见于企业私有数据中心、局域网内部集群环境下，为第三方私网集群安装Agent，可以提升内部威胁扩散，保护内部资产，防止横向移动攻击，满足合规要求。
#### 前提条件
第三方私网集群已创建专线连接，与云上VPC实现了网络互通。如何创建专线连接请参见[云专线入门指引](https://support.huaweicloud.com/qs-dc/zh-cn_topic_0145790541.html)。
#### 约束与限制
- 集群编排平台限制：1.19及以上Kubernetes。
- 节点操作系统限制：Linux系统。
- 节点规格要求：CPU必须2核及以上，内存必须4GiB及以上，系统盘必须40GiB及以上，数据盘必须100GiB及以上。

- 私网集群接入限制：目前仅华北-北京一、华北-北京四、华东-上海一、华东-上海二、华南-广州、中国-香港、亚太-新加坡、西南-贵阳一、亚太-雅加达、中东-利雅得区域支持第三方云集群或自建集群通过私网接入HSS。
- Agent不兼容Galera 3.34和MySQL 5.6.51或更早版本的集群。
 
 #### 步骤一：创建ECS
1. 登录管理控制台，进入[购买弹性云服务器](https://console.huaweicloud.com/ecm/?locale=zh-cn#/ecs/createVm)页面。
2. 根据页面提示，设置弹性云服务器参数。 
   建议参考[表1]所示设置部分参数，其余参数请结合实际情况按需配置。关于购买弹性云服务器更详细的参数介绍请参见[自定义购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
    表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
   ```
   
   

5. 粘贴完成后，按Esc键，输入以下命令，按回车键退出，完成配置。 
   :wq!
   
   
6. 执行以下命令，安装nginx。 
   bash /temp/install_nginx.sh
   
   
7. 执行以下命令，修改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]，修改为实际地址后，再执行命令。
    表2anp后端地址 
   | 区域                        | anp后端地址                          |
   |:---|:---|
   | 贵阳一、曼谷、上海二、广州、北京四、北京二、上海一 | hss-proxy.区域代码.myhuaweicloud.com |
   | 其他区域                      | hss-anp.区域代码.myhuaweicloud.com   |
   | 区域代码请参见[地区和终端节点](https://developer.huaweicloud.com/endpoint)。 ||
      
   
   
8. 执行以下命令，使nginx配置生效。 
   nginx -s reload
   
   
 
 #### 步骤三：准备kubeconfig文件
kubeconfig文件用于将集群的操作权限授权给HSS，方式一配置的kubeconfig文件包含集群管理员权限，方式二生成的kubeconfig文件仅包含HSS所需权限，如果您担心过度授权的问题，请通过方式二准备kubeconfig文件。
- **方式一：配置默认的kubeconfig文件**
  1. 按以下操作创建HSS的专属命名空间。
     1. 登录任一集群节点。
     
     2. 创建hss.yaml文件，并将以下内容复制到hss.yaml文件中。
        ```
        {"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文件中。
        ```
        {"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文件中。
        ```
        #!/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. [登录企业主机安全控制台](https://console.huaweicloud.com/hss/?locale=zh-cn)。
2. 在控制台左上角，单击![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002384023862.png)图标，选择区域或项目。
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复制镜像上传命令   
      ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002200537944.png "点击放大")
      命令执行后界面回显如[图 镜像仓上传成功]所示，表示上传成功。
      图2镜像仓上传成功   
      ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002200697744.png "点击放大") 
   
   
   
   
8. 在"容器资产接入与安装"对话框中，单击"下一步"。
9. 配置集群接入信息，并单击"生成命令"。接入信息相关参数说明如[表 配置接入信息参数说明]所示。
   
   图3配置集群接入信息   
   ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002200695012.png "点击放大")
    表4配置接入信息参数说明 
   | 参数名称         | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   |:---|:---|
   | 集群名称         | 填写接入的集群名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 服务商          | 选择集群所属的服务商。目前支持接入以下服务商的集群： - 阿里云  - 腾讯云  - AWS  - 微软云  - 自建  - IDC自建   |
   | 服务器组（可选）     | 为服务器选择一个服务器分组，以便按分组管理服务器。 您可以在下拉框中选择已有服务器组，或者单击"新建服务器组"新建组，新建完成后，单击![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002514814599.png)刷新分组列表，即可选择新建的服务器组。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 上传kubeconfig | 添加并上传根据[步骤三：准备kubeconfig文件]配置好的kubeconfig文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 选择Context    | 上传kubeconfig文件后，HSS会自动解析出Context。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 选择有效期        | 上传kubeconfig文件后，HSS会自动解析出有效期。您可以选择最终有效期以前的时间，在选择的有效期到期后，您需要重新接入该资产。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      
   
   
10. 执行以下操作为集群安装集群连接组件（ANP-Agent），建立HSS和集群的连接。 
    1. 在"容器资产接入与安装"对话框中，单击"复制命令"。
       图4复制命令   
       ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002235700529.png "点击放大") 
    
    2. 登录到任一节点目录，执行复制的命令，创建集群拉取私有镜像的凭证。
    
    3. 在"容器资产接入与安装"对话框中，单击"下载Yaml文件"，下载生成的命令文件。
       图5下载Yaml文件   
       ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002200700236.png "点击放大") 
    
    4. 将文件拷贝到任一节点目录下。
    
    5. 执行以下命令，安装集群连接组件（ANP-Agent）。
       ```
       kubectl apply -f proxy-agent.yaml
       ```
       
    
    6. 执行以下命令，查询集群连接组件（ANP-Agent）是否安装成功。
       ```
       kubectl get pods -n hss | grep proxy-agent
       ```
       界面回显如[图 集群Agent安装成功]所示，表示集群连接组件（ANP-Agent）安装成功。
       图6ANP-Agent安装成功   
       ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002235620661.png "点击放大") 
    
    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成功   
       ![](https://support.huaweicloud.com/usermanual-hss2.0/zh-cn_image_0000002200540452.png "点击放大") 
    
    
    
    
11. 在"容器资产接入与安装"对话框中，单击"下一步"。
12. 配置Agent相关参数。参数说明如[表 Agent配置参数说明]所示。
    
     表5Agent配置参数说明 
    | 参数名称        | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    |:---|:---|
    | 配置规则        | 选择Agent配置规则。 - "默认规则"：容器运行时的sock地址为通用地址，Agent将默认安装在没有配置污点的节点上。  - "自定义"：如果您的容器运行时sock地址非通用地址需要修改，或仅需要在指定的节点上安装Agent，可选择该规则。**如果容器运行时的sock地址不正确，可能导致集群接入HSS后，部分HSS功能不能正常使用。建议全选所有运行时类型**。                                                                                                                                                            |
    | 资源管理配置      | 根据选择的Agent配置规则类型不同，其可以配置的资源参数项不同。 - 当"配置规则"选择"默认配置"时，您可以选择Agent资源的"默认配置"方式或"自适应"方式。  - 当"配置规则"选择"自定义"时，Agent资源的配置仅支持"自定义"方式。                                                                                                                                                                                                                       |
    | 高级配置        | "配置规则"选择"自定义"时，支持配置以下参数。 - 节点选择器配置 填写需要安装Agent的节点标签的"键"和"值"，单击"确认添加"。不添加任何节点标签时，默认在所有没有配置污点的节点上安装Agent。   - 容忍度配置 如果在进行"节点选择器配置"时，添加了配有污点的节点标签，则请填写污点的"键"和值以及污点的效果，单击"确认添加"，允许在该节点上安装Agent。    |
    | 开启Agent自动升级 | 该选项默认为展开状态，是否开启该功能，根据您的业务需要来定。开启后，每日00:00～06:00，企业主机安全将自动升级低版本的Agent为最新版（包括但不限于新增功能、优化缺陷等），以便为您提供更好的服务。 - 当"配置规则"选择"默认配置"时，该选项默认已开启，您无法关闭该功能。  - 当"配置规则"选择"自定义"时，该选项默认已开启，但您可以根据业务需要选择关闭。                                                                                                                                                                |
       
    
    
13. 配置完成，单击"确定"，开始安装HSS Agent。
14. 在集群列表中，查看集群状态为"运行中"，表示集群接入HSS成功。
 
#### 相关操作
在为集群安装Agent成功后，请为其[开启防护](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0260.html)。
#### 常见问题
- [集群连接组件（ANP-Agent）部署失败](https://support.huaweicloud.com/hss2.0_faq/hss_01_0645.html)
- [集群权限异常](https://support.huaweicloud.com/hss2.0_faq/hss_01_0646.html)
- [上传镜像到私有镜像仓失败](https://support.huaweicloud.com/hss2.0_faq/hss_01_0667.html)
 
