如何导入在另一台服务器上创建的状态?
How to import state created on another server?
我使用 kops 设置我的 Kubernetes 集群,我是从本地机器上这样做的。所以我的 .kube
目录存储在我的本地机器上,但我设置 kops
用于 s3
.
中的状态存储
我现在正在设置我的 CI 服务器,我想从那个框中 运行 我的 kubectl
命令。我该如何将现有状态导入该服务器?
.kube/config
几乎不是 "state",它只是一个客户端配置,所以可以只获取它的内容(或者它的一部分,如果你有更多的本地上下文)并使用另一台机器。除非您想为 CI 创建一个专用用户 (key/cert),在这种情况下您需要创建一个单独的凭据,如果您使用 key/cert 他们需要为不同的证书 "subject" 以便用户可以被识别为不同的用户
为了运行kubectl
命令,您将需要集群的apiServerURL和相关的凭据进行身份验证。这些数据按照惯例存储在 ~/.kube/config
文件中。您也可以通过kubectl config view
命令查看。
为了 运行 kubectl
在您的 CI 服务器上,您需要确保 ~/.kube/config
文件包含 kubectl
客户端的所有信息需要。
对于 kops,一个简单朴素的解决方案是:
1) 在您的 CI 服务器上安装 kops、kubectl
2) 在您的 CI 服务器上配置 AWS 访问凭证(通过 IAM 角色或简单的环境变量),确保它可以访问您的 s3 状态存储路径
3) 为 kops 设置环境变量以访问您的集群:
export NAME=${YOUR_CLUSTER_NAME}
export KOPS_STATE_STORE=s3://${YOUR_CLUSTER_KOPS_STATE_STORE}
4) 使用 kops export 命令获取 运行ning kubectl
所需的 kubecfg
kops export kubecfg ${YOUR_CLUSTER_NAME}
见https://github.com/kubernetes/kops/blob/master/docs/cli/kops_export.md
现在 CI 服务器上的 ~/.kube/config
文件应该包含 kubectl
访问集群所需的所有信息。
请注意,这将使用您的 CI 服务器上的默认管理员帐户。要实现更安全的 CI/CD 环境,您应该创建一个绑定到所需权限范围(例如命名空间或类型或资源)的服务帐户,并将其凭据放在您的 CI 服务器计算机上。
我使用 kops 设置我的 Kubernetes 集群,我是从本地机器上这样做的。所以我的 .kube
目录存储在我的本地机器上,但我设置 kops
用于 s3
.
我现在正在设置我的 CI 服务器,我想从那个框中 运行 我的 kubectl
命令。我该如何将现有状态导入该服务器?
.kube/config
几乎不是 "state",它只是一个客户端配置,所以可以只获取它的内容(或者它的一部分,如果你有更多的本地上下文)并使用另一台机器。除非您想为 CI 创建一个专用用户 (key/cert),在这种情况下您需要创建一个单独的凭据,如果您使用 key/cert 他们需要为不同的证书 "subject" 以便用户可以被识别为不同的用户
为了运行kubectl
命令,您将需要集群的apiServerURL和相关的凭据进行身份验证。这些数据按照惯例存储在 ~/.kube/config
文件中。您也可以通过kubectl config view
命令查看。
为了 运行 kubectl
在您的 CI 服务器上,您需要确保 ~/.kube/config
文件包含 kubectl
客户端的所有信息需要。
对于 kops,一个简单朴素的解决方案是:
1) 在您的 CI 服务器上安装 kops、kubectl
2) 在您的 CI 服务器上配置 AWS 访问凭证(通过 IAM 角色或简单的环境变量),确保它可以访问您的 s3 状态存储路径
3) 为 kops 设置环境变量以访问您的集群:
export NAME=${YOUR_CLUSTER_NAME}
export KOPS_STATE_STORE=s3://${YOUR_CLUSTER_KOPS_STATE_STORE}
4) 使用 kops export 命令获取 运行ning kubectl
所需的 kubecfg kops export kubecfg ${YOUR_CLUSTER_NAME}
见https://github.com/kubernetes/kops/blob/master/docs/cli/kops_export.md
现在 CI 服务器上的 ~/.kube/config
文件应该包含 kubectl
访问集群所需的所有信息。
请注意,这将使用您的 CI 服务器上的默认管理员帐户。要实现更安全的 CI/CD 环境,您应该创建一个绑定到所需权限范围(例如命名空间或类型或资源)的服务帐户,并将其凭据放在您的 CI 服务器计算机上。