Как передать openshift переменную окружения через файл конфигурации jenkins? - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь обновить переменные окружения в openshift через jenkinsfile. Я могу обновить переменные окружения с помощью следующей команды, но проблема с командой заключается в том, что мне нужно ввести все переменные в jenkinsfile, чтобы он не был безопасным, а иногда jenkinsfile выглядит очень длинным и безобразным.

"команда" oc set env dc / prj -e te1 = tes -e tes2 = tes2 Ntes = ntes ""

Обычно для других серверов я обычно добавлял все переменные окружения в файл конфигурации в jenkins и передавал файл конфигурации непосредственно на сервер.

Просто интересно, сделал ли кто-нибудь что-нибудь, где я могу передать все свои переменные окружения через jenkinsfile, используя файл конфигурации jenkins, в контейнеры openshift.

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Я предпочитаю использовать Шаблоны Openshift для развертываний или изменений.Этот способ помогает кодировать инфраструктуру, в основном Инфраструктура как код для управления версиями , и помогает реплицировать то же самое в разных средах.

Например, рассмотрим этот шаблон развертывания :

$ cat deployment.yaml 
apiVersion: v1
items:
- apiVersion: v1
  kind: DeploymentConfig
  metadata:
    annotations:
      openshift.io/generated-by: OpenShiftNewApp
    creationTimestamp: null
    labels:
      app: "${APPLICATION_NAME}"
    name: "${APPLICATION_NAME}"
  spec:
    replicas: 1
    selector:
      app: "${APPLICATION_NAME}"
      deploymentconfig: "${APPLICATION_NAME}"
    strategy:
      resources: {}
      rollingParams:
        intervalSeconds: 1
        maxSurge: 25%
        maxUnavailable: 25%
        timeoutSeconds: 600
        updatePeriodSeconds: 1
      type: Rolling
    template:
      metadata:
        annotations:
          openshift.io/generated-by: OpenShiftNewApp
        creationTimestamp: null
        labels:
          app: "${APPLICATION_NAME}"
          deploymentconfig: "${APPLICATION_NAME}"
      spec:
        containers:
        - env:
           - name: param1
             value: value1
           - name: param2
             value: value2
          image: "${DOCKER_IMAGE}"
          imagePullPolicy: Always
          name: "${APPLICATION_NAME}"
          ports:
            - containerPort: PORT1
              protocol: TCP
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: ${HEALTHCHECK_PATH}
              port: ${LIVENESS_PORT} 
              scheme: HTTPS
            initialDelaySeconds: 300
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 30
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: ${HEALTHCHECK_PATH}
              port: ${READINESS_PORT}
              scheme: HTTPS
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 30
          resources:
            limits:
              cpu: ${CPU_MAX}
              memory: ${MEMORY_MAX}
            requests:
              cpu: ${CPU_DEFAULT}
              memory: ${MEMORY_DEFAULT}
          terminationMessagePath: /dev/termination-log
        dnsPolicy: ClusterFirst
        restartPolicy: Always
        securityContext: {}
        terminationGracePeriodSeconds: 30
    test: false
    triggers:
    - type: ConfigChange
  status: {}
kind: List
metadata: {}

Над шаблоном есть 2 переменные, а конфигурация развертывания создается с помощью команды oc apply -f deployment.yaml.

- name: param1
  value: value1
- name: param2
  value: value2

Так что теперь для обновления переменных среды в Openshift , я предлагаю добавить новую переменную в шаблон следующим образом:

- name: param1
  value: value1
- name: param2
  value: value2
- name: param3
  value: value3

Использовать та же команда oc apply -f deployment.yaml до обновить новые переменные среды или ту же команду можно использовать для обновления существующих параметров.

У Openshift есть интеллект для обновления конфигурации только в случае изменения конфигурации .Таким образом можно обновлять не только переменные окружения , но и любые другие конфигурации, такие как процессор, память, реплики, образы док-станции и т. Д.

Надеюсь, это поможет!

0 голосов
/ 30 апреля 2019

Если вы хотите использовать подход из файла, который вы использовали ранее, вы можете разбить его на два этапа:

  1. Создать файл конфигурации из файла: oc create configmap my-config --from-file=path/to/bar
  2. Установите переменные среды из карты конфигурации: oc set env --from=configmap/my-config dc/prj
...