如何在Openshift模板中命令对象的创建

时间:2019-12-03 12:37:56

标签: kubernetes openshift openshift-origin openshift-3 okd

我正在尝试创建一个模板,以允许在多个环境中升级应用程序。当前,我创建了一个项目,然后将模板导入该项目,该模板创建了默认名称空间(我手动创建的项目)所需的所有对象,我需要的其他项目以及一个群集角色,允许我在环境中提升容器。问题是我还希望模板在新创建的项目中创建对象,但这失败并显示错误消息:

  

提供的对象的名称空间与请求中发送的名称空间不匹配

我认为Openshift可能试图在与项目同时创建对象的过程中出现问题,并且在尝试创建对象时找不到项目。为了解决这个问题,我尝试使用service.alpha.openshift.io/dependencies批注,但出现了相同的错误

任何帮助将不胜感激

1 个答案:

答案 0 :(得分: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