应用模板时,在Deploymentconfig中删除Openshift ImageChange触发器

应用模板时,在Deploymentconfig中删除Openshift ImageChange触发器,deployment,kubernetes,openshift,Deployment,Kubernetes,Openshift,我目前正在为OpenShift开发一个模板,当我初始化应用程序时,我的ImageChange触发器被删除。我的模板包含以下对象 图像流 构建配置 服务 路线 部署配置 我猜路线是不相关的,但到目前为止它看起来是这样的(为了更好的概述,我将单独发布对象,但它们都是我模板中的项目) ImageStream - kind: ImageStream apiVersion: v1 metadata: labels: app: my-app na

我目前正在为OpenShift开发一个模板,当我初始化应用程序时,我的ImageChange触发器被删除。我的模板包含以下对象

  • 图像流
  • 构建配置
  • 服务
  • 路线
  • 部署配置
我猜路线是不相关的,但到目前为止它看起来是这样的(为了更好的概述,我将单独发布对象,但它们都是我模板中的项目)

ImageStream

- kind: ImageStream 
    apiVersion: v1
    metadata:
      labels:
        app: my-app
      name: my-app
      namespace: ${IMAGE_NAMESPACE}
BuildConfig

- kind: BuildConfig
    apiVersion: v1
    metadata:
      labels:
        app: my-app
        deploymentconfig: my-app
      name: my-app
      namespace: ${IMAGE_NAMESPACE}
      selfLink: /oapi/v1/namespaces/${IMAGE_NAMESPACE}/buildconfigs/my-app
    spec:
      runPolicy: Serial
      source:
        git:
          ref: pre-prod
          uri: 'ssh://git@git.myreopo.net:port/project/my-app.git'
        sourceSecret:
          name: git-secret
        type: Git
      strategy:
        type: Source
        sourceStrategy:
          env:
            - name: HTTP_PROXY
              value: 'http://user:password@proxy.com:8080'
            - name: HTTPS_PROXY
              value: 'http://user:password@proxy.com:8080'
            - name: NO_PROXY
              value: .something.net
          from:
            kind: ImageStreamTag
            name: 'nodejs:8'
            namespace: openshift
      output:
          to:
            kind: ImageStreamTag
            name: 'my-app:latest'
            namespace: ${IMAGE_NAMESPACE}
服务

- kind: Service
    apiVersion: v1
    metadata:
      name: my-app
      labels:
        app: my-app
    spec:
      selector:
        deploymentconfig: my-app
      ports:
        - name: 8080-tcp
          port: 8080
          protocol: TCP
          targetPort: 8080
      sessionAffinity: None
      type: ClusterIP
DeploymentConfig

- kind: BuildConfig
    apiVersion: v1
    metadata:
      labels:
        app: my-app
        deploymentconfig: my-app
      name: my-app
      namespace: ${IMAGE_NAMESPACE}
      selfLink: /oapi/v1/namespaces/${IMAGE_NAMESPACE}/buildconfigs/my-app
    spec:
      runPolicy: Serial
      source:
        git:
          ref: pre-prod
          uri: 'ssh://git@git.myreopo.net:port/project/my-app.git'
        sourceSecret:
          name: git-secret
        type: Git
      strategy:
        type: Source
        sourceStrategy:
          env:
            - name: HTTP_PROXY
              value: 'http://user:password@proxy.com:8080'
            - name: HTTPS_PROXY
              value: 'http://user:password@proxy.com:8080'
            - name: NO_PROXY
              value: .something.net
          from:
            kind: ImageStreamTag
            name: 'nodejs:8'
            namespace: openshift
      output:
          to:
            kind: ImageStreamTag
            name: 'my-app:latest'
            namespace: ${IMAGE_NAMESPACE}
现在,DeploymentConfig中已经很奇怪的一点是,在spec.template.spec.containers[0].image下,我必须指定存储库的完整路径才能使其正常工作,否则我将在提取映像时出错。(尽管文档上说我的app:latest是正确的)

我使用

oc process -f ./openshift/template.yaml ..Parameters... | oc apply -f -
但当我使用oc新应用程序时,结果是一样的

奇怪的是。应用程序已部署且运行良好,但映像更改不会产生任何影响。因此,我导出了DeploymentConfig,发现它缺少ImageChangeTrigger,而触发器部分仍处于活动状态

triggers:
  - type: ConfigChange
起初,我认为这是因为当我尝试应用DeploymentConfig时,构建可能还没有准备好,所以我先创建了一个构建,然后等待它完成。之后,我部署了应用程序的其余部分(服务、路由、DeploymentConfig)。然而,结果是一样的。如果我使用Webgui并从中更改DeploymentConfig

为此,请填写名称空间、应用程序和标记(最新)并点击apply everything。我只是不明白为什么一开始就忽略了触发器。如果有人知道我错在哪里就好了

我使用的版本是

oc:v3.9.0

kubernetes:v1.6.1


openshift v3.6.173.0.140

好的,答案很简单。原来这只是DeploymentConfig的yaml文件中的缩进错误。而不是

    dnsPolicy: ClusterFirst
    restartPolicy: Always
    terminationGracePeriodSeconds: 30
    triggers:
      - type: ImageChange
        imageChangeParams:
          automatic: true
          containerNames:
            - alpac-studio-container
          from:
            kind: ImageStreamTag
            name: alpac-studio:latest
      - type: ConfigChange
一定是这样

    dnsPolicy: ClusterFirst
    restartPolicy: Always
    terminationGracePeriodSeconds: 30
triggers:
  - type: ImageChange
    imageChangeParams:
      automatic: true
      containerNames:
        - alpac-studio-container
      from:
        kind: ImageStreamTag
        name: alpac-studio:latest
  - type: ConfigChange

因此触发器必须与模板和策略处于同一级别

这主要是由于配置无效。你能将一个工作配置与你的模板进行比较吗?我做了。在它正常工作后,我使用oc导出来比较各种配置,但除了openshift添加的一些注释之外,它们是相同的