Openshift - переменные в конфигурации для разных сред - PullRequest
0 голосов
/ 17 января 2019

В настоящее время я пытаюсь выполнить развертывание в двух разных кластерах openshift, но я хочу использовать только один файл deployconfig. Есть ли хороший способ преодолеть текущую проблему

apiVersion: v1
kind: DeploymentConfig
metadata:
  labels:
    app: my-app
    deploymentconfig: my-app
  name: 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: 172.0.0.1:5000/int-myproject/my-app:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
              protocol: TCP
          env:
            - name: ROUTE_PATH
              value: /my-app
            - name: HTTP_PORT
              value: "8080"
            - name: HTTPS_PORT
              value: "8081"
    restartPolicy: Always
    dnsPolicy: ClusterFirst

Теперь, если вы посмотрите на spec.template.spec.containers [0] .image, есть две проблемы с этим

Nr.1 ​​

172.0.0.1: 5000 / int-myproject / my-app: последний

IP-адрес внутреннего реестра будет отличаться для двух сред

Nr.2

172.0.0.1: 5000 / int-myproject / my-app: последний

Пространство имен также не будет таким же. В этом сценарии я хочу, чтобы это был int-myproject или prod-myproject в зависимости от среды, в которой я хочу выполнить развертывание. Я подумал, может быть, есть способ использовать параметры в yaml и передать их openshift, как-то похоже на это

oc create -f deploymentconfig.yaml --namespace=int-myproject

и есть параметр типа $ {namespace} в моем файле yaml. Есть ли хороший способ добиться этого?

1 Ответ

0 голосов
/ 17 января 2019

Во-первых, чтобы ответить на ваш вопрос, да, вы можете использовать параметры с шаблонами OpenShift и передавать значение и время создания.

Для этого вы добавите необходимые значения шаблона в свой файл yaml, и вместо oc create вы будете использовать oc new-app -f deploymentconfig.yaml --param=SOME_KEY=someValue. Проверьте oc new-app --help для получения дополнительной информации здесь.

Некоторые другие моменты, на которые следует обратить внимание: ЕСЛИ вы ссылаетесь на изображения из внутреннего реестра, вам лучше использовать imagestreams . Они обеспечивают абстракцию для изображений, извлеченных из внутреннего реестра докеров в OpenShift, как это было описано выше.

Наконец, значение пространства имен доступно через нисходящий API в каждом модуле, и вам не нужно (как правило) вводить это вручную.

...