首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用templage时,在Deploymentconfig中删除Openshift ImageChange触发器

使用templage时,在Deploymentconfig中删除Openshift ImageChange触发器
EN

Stack Overflow用户
提问于 2019-01-21 15:36:47
回答 1查看 636关注 0票数 1

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

  • ImageStream
  • BuildConfig
  • 服务
  • 路由
  • Deploymentconfig

我想这条路径是不相关的,但这是目前为止的样子(为了更好地概括,我将把对象分开发布,但它们都是模板中的项目)。

ImageStream

代码语言:javascript
复制
- kind: ImageStream 
    apiVersion: v1
    metadata:
      labels:
        app: my-app
      name: my-app
      namespace: ${IMAGE_NAMESPACE}

BuildConfig

代码语言:javascript
复制
- 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}

服务

代码语言:javascript
复制
- 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

现在,在DeploymentConfig中已经很奇怪的是,在spec.template.spec.containers.image下,我必须指定到存储库的完整路径才能使其工作,否则我就会得到一个拖放映像的错误。(尽管文档上说我的应用程序:最新的是正确的)

代码语言:javascript
复制
- kind: DeploymentConfig
    apiVersion: v1
    metadata:
      labels:
        app: my-app
        deploymentconfig: my-app
      name: my-app
      namespace: ${IMAGE_NAMESPACE}
      selfLink: /oapi/v1/namespaces/${IMAGE_NAMESPACE}/deploymentconfigs/my-app
    spec:
      selector:
        app: my-app
        deploymentconfig: my-app
      strategy:
        type: Rolling
        rollingParams:
          intervalSeconds: 1
          maxSurge: 25%
          maxUnavailability: 25%
          timeoutSeconds: 600
          updatePeriodSeconds: 1
      replicas: 1
      template:
        metadata:
          labels:
            app: my-app
            deploymentconfig: my-app
        spec:
          containers:
            - name: my-app-container
              image: "${REPOSITORY_IP}:${REPOSITORY_PORT}/${IMAGE_NAMESPACE}/my-app:latest"
              imagePullPolicy: Always
              ports:
                - containerPort: 8080
                  protocol: TCP
                - containerPort: 8081
                  protocol: TCP
              env:
                - name: MONGODB_USERNAME
                  valueFrom:
                    secretKeyRef:
                      name: my-app-database
                      key: database-user
                - name: MONGODB_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: my-app-database
                      key: database-password
                - name: MONGODB_DATABASE
                  value: "myapp"
                - name: ROUTE_PATH
                  value: /my-app
                - name: MONGODB_AUTHDB
                  value: "myapp"
                - name: MONGODB_PORT
                  value: "27017"
                - name: HTTP_PORT
                  value: "8080"
                - name: HTTPS_PORT
                  value: "8082"
        restartPolicy: Always
        dnsPolicy: ClusterFirst
        triggers:
          - type: ImageChange
            imageChangeParams:
              automatic: true
              from: 
                kind: ImageStreamTag
                name: 'my-app:latest'
                namespace: ${IMAGE_NAMESPACE}
              containerNames:
                - my-app-container
          - type: ConfigChange

我使用以下方法部署应用程序

代码语言:javascript
复制
oc process -f ./openshift/template.yaml ..Parameters... | oc apply -f -

但是当我使用oc新应用程序时,结果是一样的。

奇怪的是。应用程序将被部署并运行良好,但是图像更改不会产生任何影响。所以我导出了DeploymentConfig,发现它缺少了ImageChangeTrigger,触发器部分是

代码语言:javascript
复制
triggers:
  - type: ConfigChange

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

为此,填写名称空间,应用程序和标签(最新),并点击应用所有的工作,它应该。我只是不明白为什么一开始就忽略了扳机。如果有人知道我错在哪里就太好了

我使用的版本是

主管: v3.9.0

kubernetes: v1.6.1

openshift v3.6.173.0.140

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 12:07:57

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

代码语言:javascript
复制
    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

一定是

代码语言:javascript
复制
    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

因此,触发器必须与模板和策略处于相同的级别。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54293217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档