【问题标题】:How to order the creation of objects in an Openshift template如何在 Openshift 模板中对对象的创建进行排序
【发布时间】:2019-12-03 12:37:56
【问题描述】:
我正在尝试创建一个模板,该模板允许在多个环境中推广应用程序。目前我创建了一个项目,然后将模板导入其中,该模板创建了默认命名空间(我手动创建的项目)中所需的所有对象、我需要的其他项目和允许我通过环境提升 pod 的集群角色。问题是我还希望模板在新创建的项目中创建对象,但这会失败并显示错误消息:
提供的对象的命名空间与请求中发送的命名空间不匹配
我认为这可能是 Openshift 尝试在创建项目的同时创建对象的问题,并且它在尝试创建对象时找不到项目。为了解决这个问题,我尝试使用 service.alpha.openshift.io/dependencies 注释但得到了同样的错误
任何帮助将不胜感激
【问题讨论】:
标签:
kubernetes
openshift
openshift-origin
openshift-3
okd
【解决方案1】:
根据documentation:
如果对象定义的元数据包含固定的命名空间字段值,则该字段将在模板实例化期间从定义中删除。如果命名空间字段包含参数引用,则将执行正常的参数替换,并且将在参数替换将值解析到的任何命名空间中创建对象,假设用户有权在该命名空间中创建对象。
所以只需指定所需的命名空间作为模板的参数。可用示例:
apiVersion: template.openshift.io/v1
kind: Template
metadata:
name: yyy
parameters:
- name: ns3
value: test3
objects:
- apiVersion: v1
kind: Namespace
metadata:
name: ${ns3}
spec:
finalizers:
- kubernetes
- apiVersion: v1
data:
key3: value3
kind: ConfigMap
metadata:
namespace: ${ns3}
name: cm3