云安全中心资产中心为您提供容器资产安全风险管理功能。您可以将K8s自建集群接入云安全中心,在云安全中心控制台统一管理您的容器资产。本文介绍接入K8s自建集群的具体操作。

版本限制说明

仅旗舰版支持该功能,其他版本用户需要升级到旗舰版才可使用该功能。购买和升级云安全中心服务的具体操作,请参见购买云安全中心升级与降配。各版本的功能详情,请参见功能特性

限制条件

  • 您最多可接入10个K8s自建集群。
  • 自建K8s集群网络类型为VPC时,仅支持接入华东1(杭州)、华北2(北京)、华东2(上海)、华南1(深圳)和中国香港地域。
    说明 自建K8s集群网络类型为公网时,无地域限制。

接入K8s自建集群

  1. 登录云安全中心控制台
  2. 在左侧导航栏,单击资产中心
  3. 资产中心页面,单击容器页签。
  4. 容器页签右上角,单击自建集群接入
  5. 自建集群接入面板,单击自建集群接入
  6. 接入自建K8s集群面板,配置相关参数。
    参数 说明
    集群名称 输入自建K8s集群的名称,该名称可包含大小写字母、数字和下划线(_)、短划线(-)。
    自建K8s集群版本 选择自建K8s集群的版本。支持选择以下版本:
    • V1.21
    • V1.20
    • V1.19
    • V1.18
    • V1.17
    • V1.16
    集群所在地域 选择自建K8s集群所在的地域。
    网络类型 选择自建K8s集群的网络类型。支持选择以下类型:
    • 公网
    • VPC
    集群所在VPC 选择自建K8s集群所在VPC。
    ApiServerIp 输入自建K8s集群API Server的地址。
    K8s配置信息 上传K8s配置文件。您需要在服务器上生成K8s配置文件后,才能上传该配置文件。生成K8s配置文件的具体操作,请参见生成K8s配置文件
  7. 单击确定
    完成K8s自建集群的接入后,集群的信息您可以在自建集群管理面板查看已接入的集群。

生成K8s配置文件

在生成K8s配置文件前,您的服务器需要满足以下前提条件:
  • 已在服务器上搭建K8s集群。
  • 已安装Docker。
  • 如果您的集群有设置访问控制策略,确认您已将容器对应的地域加入到访问控制白名单中。
    地域及其对应的地址池IP段信息如下:
    地域名称 所在城市 地域ID 地址池IP段
    华东1 杭州 cn-hangzhou 100.104.177.0/26
    华东2 上海 cn-shanghai 100.104.7.192/26
    华北1 青岛 cn-qingdao 100.104.87.192/26
    华北2 北京 cn-beijing 100.104.20.128/26
    华北3 张家口 cn-zhangjiakou 100.104.187.64/26
    华北5 呼和浩特 cn-huhehaote 100.104.36.0/26
    华南1 深圳 cn-shenzhen 100.104.9.192/26
    西南1 成都 cn-chengdu 100.104.69.0/26
    中国香港 香港 cn-hongkong 100.104.111.128/26
    亚太东北1 东京 ap-northeast-1 100.104.69.0/26
    亚太东南1 新加坡 ap-southeast-1 100.104.41.128/26
    亚太东南5 雅加达 ap-southeast-5 100.104.193.128/26
    美国西部1 硅谷 us-west-1 100.104.145.64/26
    美国东部1 弗吉尼亚 us-east-1 100.104.36.0/26
  1. 使用root用户登录K8s集群所在服务器。
  2. 创建用户。
    1. 执行以下命令创建ClusterRole。
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
          name: ${userName}-cluster-reader
      rules:
      - apiGroups:
        - ""
        resources:
        - "*"
        verbs:
        - get
        - list
        - watch
    2. 执行以下命令创建ClusterRoleBinding。
      注意 执行本步骤及以下所有步骤中的命令时,您需要将<UserName>替换成您的用户名称。
      apiVersion: rbac.authorization.k8s.io/v1beta1
      kind: ClusterRoleBinding
      metadata:
          name: ${userName}-read-all
      roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: ${userName}-cluster-reader
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: ${userName}
  3. 创建证书。
    1. 执行以下命令创建User私钥。
      openssl genrsa -out <UserName>.key 2048
    2. 执行以下命令创建证书签署请求。
      openssl req -new -key <UserName>.key -out <UserName>.csr -subj "/O=K8s/CN=<UserName>"
    3. 执行以下命令签署证书。
      openssl x509 -req -in <UserName>.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out <UserName>.crt -days 365
  4. 创建集群配置文件。
    1. 执行以下命令创建集群配置。
      kubectl config set-cluster k8s --server=
      https://192.168.XX.XX:6443 --certificate-authority=ca.crt --embed-certs=true --kubeconfig=/root/<UserName>.conf
    2. 执行以下命令创建用户配置。
      kubectl config set-credentials <UserName> --client-certificate=<UserName>.crt --client-key=<UserName>.key --embed-certs=true --kubeconfig=/root/<UserName>.conf
    3. 执行以下命令创建context配置。
      kubectl config set-context <UserName>@<ClusterName> --cluster=k8s --user=<UserName> --kubeconfig=/root/<UserName>.conf
      注意 执行本步骤及以下所有步骤中的命令时,您需要将<ClusterName>替换成您的集群名称。
    4. 执行以下命令切换context。
      kubectl config use-context <UserName>@<ClusterName> --kubeconfig=/root/<UserName>.conf
    5. 执行以下命令查看config文件。
      kubectl config view --kubeconfig=/root/<UserName>.conf
  5. 执行以下命令验证kubeconfig文件是否可用。
    mkdir -p /home/<UserName>/.kube
    cp <UserName>.conf /home/<UserName>/.kube/config
    kubectl get pod -n kube-system

    上述命令执行完成后,如果命令窗口可以正常显示Pod的信息,说明云安全中心可以访问该集群,即生成的kubeconfig文件是可用的。否则说明kubeconfig文件不可用。

接入混合云第三方镜像仓库

如果您的第三方镜像服务是通过线下IDC+云上VPC的混合云方式来部署的,您需要先配置流量的转发规则,再完成接入镜像仓库。操作流程如下:

  1. 指定一台ECS服务器,将其访问流量转发到第三方镜像服务所在的IDC服务器上。

    示例:将执行转发任务的ECS服务器中A端口的流量,转发至第三方镜像服务所在的IDC服务器192.168.XX.XX的B端口。

    • CentOS 7命令:
      • 使用firewallcmd:
        firewall-cmd --permanent --add-forward-port=port=<A端口>:proto=tcp:toaddr=<192.168.XX.XX>:toport=<B端口>
      • 使用iptables:
        1. 开启端口转发。
          # echo "1" > /proc/sys/net/ipv4/ip_forward                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
        2. 设置端口转发。
          # iptables -t nat -A PREROUTING -p tcp --dport <A端口> -j DNAT --to-destination <192.168.XX.XX>:<B端口>
    • Windows命令:
      netsh interface portproxy add v4tov4 listenport=<端口A> listenaddress=* connectaddress=<192.168.XX.XX> connectport=<端口B> protocol=tcp
  2. 将第三方镜像仓库接入到云安全中心。

    接入第三方镜像仓库时,配置项IP必须填写您已配置了转发规则的VPC的地址。详细操作说明,请参见接入公有云第三方镜像仓库(私有镜像仓库)