Под планированием в Openshift / Kubernetes - PullRequest
0 голосов
/ 03 марта 2020

Я хотел бы применить ежедневное расписание к модулю, чтобы оно создавалось в 9 часов утра и уничтожалось в 9 часов вечера.

Я считаю, что это возможно при использовании двух почти идентичных наборов CronJobs с соответствующими графиками. ,

Задания создают модуль, который выполняет следующие команды утром и вечером соответственно:

...
command: ["oc scale dc my-dc",  "--replicas=1"] # The command to execute in the pod
...
...
command: ["oc scale dc my-dc",  "--replicas=0"] # The command to execute in the pod
...

Для выполнения этих команд я планирую использовать это изображение, так как оно приходит с установленным интерфейсом командной строки Openshift: https://hub.docker.com/r/ebits/openshift-client

Кто-нибудь может посоветовать какие-либо рекомендации для выполнения этой задачи? Есть какие-то аспекты, которые я не учел?

Спасибо

1 Ответ

0 голосов
/ 06 марта 2020

Я поделюсь методом, который работал для меня.

CronJob, который я написал, создает контейнер на основе этого изображения (не забудьте указать версию Openshift с помощью правильного тега) и запускает типичные oc команды для входа и масштабирования D C, упомянутого выше.

Для меня было непросто понять правильный синтаксис выполнения команд в контейнере после создания.

В любом случае, ниже я включил определение контейнера, указанное в файле yaml CronJob:

...
spec:
  containers:
    - name: oc-cli
      image: 'registry.access.redhat.com/openshift3/ose-cli:v3.11.153' # <===== SPECIFY YOUR OPENSHIFT VERSION
      command:
        - /bin/sh
        - '-c'
        - >-
          oc login https://<LOGIN URL>/
          --insecure-skip-tls-verify -u <LOGIN USERNAME> -p <LOGIN PASSWORD> ; oc scale
          dc/example --replicas=1 -n cronjob-test ;
...

Явное написание пароля может быть проблемой, поэтому я добавил Secret и сделал ссылку на него в том же CronJob, так что что секретные данные были частью переменных среды:

...
spec:
  containers:
    - name: oc-cli
      image: 'registry.access.redhat.com/openshift3/ose-cli:v3.11.153' # <===== SPECIFY YOUR OPENSHIFT VERSION
      command:
        - /bin/sh
        - '-c'
        - >-
          oc login $OC_URL --insecure-skip-tls-verify -u $OC_USER -p
          $OC_PASSWORD ; oc scale dc/example --replicas=5 -n
          cronjob-test ;
      env:
        - name: OC_USER
          valueFrom:
            secretKeyRef:
              name: oc-login-credentials
              key: username
        - name: OC_PASSWORD
          valueFrom:
            secretKeyRef:
              name: oc-login-credentials
              key: password
        - name: OC_URL
          valueFrom:
            secretKeyRef:
              name: oc-login-credentials
              key: url
...

К сожалению, документация Red Hat по этому вопросу не очень полезна, поскольку в ней приведен только один пример.

Kubernetes 'Документы были немного более полезными вместо этого.

...