1

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

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

我认为这可能是 Openshift 尝试在创建项目的同时创建对象的问题,并且在尝试创建对象时找不到项目。为了解决这个问题,我尝试使用service.alpha.openshift.io/dependencies注释但得到了同样的错误

任何帮助将不胜感激

4

1 回答 1

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
于 2020-01-20T20:34:22.327 回答