我正在尝试创建一个模板,以允许在多个环境中升级应用程序。当前,我创建了一个项目,然后将模板导入该项目,该模板创建了默认名称空间(我手动创建的项目)所需的所有对象,我需要的其他项目以及一个群集角色,允许我在环境中提升容器。问题是我还希望模板在新创建的项目中创建对象,但这失败并显示错误消息:
提供的对象的名称空间与请求中发送的名称空间不匹配
我认为Openshift可能试图在与项目同时创建对象的过程中出现问题,并且在尝试创建对象时找不到项目。为了解决这个问题,我尝试使用service.alpha.openshift.io/dependencies
批注,但出现了相同的错误
任何帮助将不胜感激
答案 0 :(得分:1)
如果对象定义的元数据包含固定的名称空间字段值,则在模板实例化期间,该字段将从定义中删除。如果名称空间字段包含参数引用,则假定用户有权在该名称空间中创建对象,则将执行常规参数替换,并在参数替换将值解析为的任何名称空间中创建对象。
因此,只需指定所需的名称空间作为模板的参数即可。可用示例:
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