我目前正在为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: ClusterIPDeploymentConfig
现在,在DeploymentConfig中已经很奇怪的是,在spec.template.spec.containers.image下,我必须指定到存储库的完整路径才能使其工作,否则我就会得到一个拖放映像的错误。(尽管文档上说我的应用程序:最新的是正确的)
- 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我使用以下方法部署应用程序
oc process -f ./openshift/template.yaml ..Parameters... | oc apply -f -但是当我使用oc新应用程序时,结果是一样的。
奇怪的是。应用程序将被部署并运行良好,但是图像更改不会产生任何影响。所以我导出了DeploymentConfig,发现它缺少了ImageChangeTrigger,触发器部分是
triggers:
- type: ConfigChange起初,我认为这是因为当我尝试应用DeploymentConfig时,构建可能还没有准备好,所以我首先创建了一个构建,等待它完成。之后,我部署了应用程序的其余部分(服务、路由、DeploymentConfig)。然而,结果是一样的。如果我使用Webgui并将DeploymentConfig更改为

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

我使用的版本是
主管: v3.9.0
kubernetes: v1.6.1
openshift v3.6.173.0.140
发布于 2019-01-24 12:07:57
答案很简单。原来,这只是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因此,触发器必须与模板和策略处于相同的级别。
https://stackoverflow.com/questions/54293217
复制相似问题