我使用kops设置了Kubernetes集群,而我是在本地计算机上完成的。因此我的.kube
目录存储在本地计算机上,但是我在中设置kops
了状态存储s3
。
我现在正在设置CI服务器,我想kubectl
从该框中运行命令。如何将现有状态导入该服务器?
要运行kubectl
命令,您将需要集群的apiServer URL和相关凭据进行身份验证。这些数据按照约定存储在~/.kube/config
文件中。您也可以通过kubectl config view
命令查看它。
为了kubectl
在CI服务器上运行,您需要确保~/.kube/config
文件包含kubectl
客户端需要的所有信息。
使用kops,一个简单的天真解决方案是:
1)在CI服务器上安装kops,kubectl
2)在CI服务器上配置AWS访问凭证(通过IAM角色或简单地通过env vars),确保其有权访问s3状态存储路径
3)设置env var以便kops访问您的集群:
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/config
CI服务器上的文件应包含kubectl
访问群集所需的所有信息。
请注意,这将使用CI服务器上的默认管理员帐户。为了实现更安全的CI / CD环境,您应该创建绑定到所需权限范围(例如名称空间,类型或资源)的服务帐户,并将其凭据放在CI服务器计算机上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句