使用kops从编辑后的YAML文件生成Terraform配置的方法咨询
kops从编辑后的YAML文件生成Terraform配置的方法咨询
我完全理解你的痛点——用kops create cluster没法覆盖所有API配置(比如实例的spot相关设置),编辑好自定义YAML后却找不到直接生成Terraform配置的途径,之前先创建集群再修改的流程又慢又折腾人。这里有个更高效的方案,不用实际在云环境中创建资源就能完成:
第一步:先生成初始的集群YAML模板(如果还没的话),用
--dry-run参数避免实际创建云资源:kops create cluster --name mycluster.example.com --state s3://my-kops-state-store --dry-run -o yaml > custom-cluster.yaml然后按照你的需求编辑
custom-cluster.yaml,比如添加实例组的spot实例配置等API级别的自定义项。第二步:将编辑好的YAML导入到kops的状态存储中(推荐用本地状态存储,速度会更快):
# 初始化本地状态存储 kops create state store --state file://./kops-state # 导入编辑后的自定义YAML kops replace -f custom-cluster.yaml --state file://./kops-state第三步:基于导入的自定义配置生成Terraform文件:
kops update cluster --name mycluster.example.com --state file://./kops-state --target=terraform --out=./terraform-config
这个流程的核心是直接操作kops的状态存储,不用在云环境中创建任何实际资源,速度会比你之前的方法快很多。
另外,关于你提到的--set flag无法设置实例组字段的问题,确实是因为kops create cluster的--set参数只能作用于顶层的Cluster对象,实例组属于嵌套的子资源,所以直接编辑YAML或者后续用kops edit ig <实例组名>修改会更直接,而上面的导入方法刚好能完美适配你编辑后的YAML配置。
如果你的状态存储用的是S3,只需要把file://./kops-state替换成你的S3路径即可,效果是一样的。
备注:内容来源于stack exchange,提问作者mentics
相关产品推荐
相关产品推荐

