代码之家  ›  专栏  ›  技术社区  ›  djt

如何导入在另一台服务器上创建的状态?

  •  13
  • djt  · 技术社区  · 7 年前

    我使用kops设置了Kubernetes集群,并在本地机器上进行了设置。所以我的 .kube 目录存储在本地计算机上,但我安装了 kops 用于中的状态存储 s3 .

    我现在正在设置CI服务器,我想运行 kubectl 来自该框的命令。如何将现有状态导入该服务器?

    2 回复  |  直到 4 年前
        1
  •  18
  •   Chaoyu    6 年前

    要运行 kubectl 命令,则需要群集的apiServer URL和相关凭据进行身份验证。按照惯例,这些数据存储在 ~/.kube/config 文件您也可以通过 kubectl config view 命令

    为了运行 库贝特尔 在CI服务器上,您需要确保 ~/.kube/配置 文件包含以下所有信息: 库贝特尔 客户需求。

    对于kops,一个简单的简单解决方案是:

    1) 在CI服务器上安装kops、kubectl

    2) 在CI服务器上配置AWS访问凭据(通过IAM角色或env VAR),确保它可以访问s3状态存储路径

    3) 为KOP设置环境变量以访问群集:

      export NAME=${YOUR_CLUSTER_NAME}
      export KOPS_STATE_STORE=s3://${YOUR_CLUSTER_KOPS_STATE_STORE}
    

    4) 使用kops export命令获取运行kubectl所需的kubecfg

      kops export kubecfg ${YOUR_CLUSTER_NAME}
    

    看见 https://github.com/kubernetes/kops/blob/master/docs/cli/kops_export.md

    现在 ~/.kube/配置 CI服务器上的文件应包含所有信息 库贝特尔 需要访问群集。

    请注意,这将使用CI服务器上的默认管理员帐户。要实现更安全的CI/CD环境,您应该创建一个绑定到所需权限范围(例如命名空间、类型或资源)的服务帐户,并将其凭据放在CI服务器计算机上。

        2
  •  0
  •   Radek 'Goblin' Pieczonka    7 年前

    .kube/config 它几乎不是一个“状态”,它只是一个客户端配置,因此可以只获取它的内容(如果本地有更多上下文,也可以是它的一部分)并在另一台机器上使用。也就是说,除非您想为CI创建一个专用用户(密钥/证书),在这种情况下,您需要创建一个单独的凭据,如果您使用密钥/证书,它们需要用于不同的证书“主题”,以便可以将用户识别为不同的用户

    推荐文章