Ошибка при запуске команды на cron заданиях kubernetes

Я пытаюсь настроить cronjobs в моем кластере kubernetes, у меня есть микросервис, который импортирует данные из другого API в мою базу данных. Я хочу запускать эту команду каждые 10 минут. У меня есть следующий манифест cronjob

apiVersion: v1
items:
- apiVersion: batch/v1beta1
  kind: CronJob
  metadata:
    labels:
      chart: cronjobs-0.1.0
    name: cron-cronjob1
    namespace: default
  spec:
    concurrencyPolicy: Forbid
    failedJobsHistoryLimit: 1
    jobTemplate:      
      spec:
        template:
          metadata:          
            labels:
              app: cron
              cron: cronjob1
          spec:
            containers:
              command: ["/usr/local/bin/php"]
              args: ["artisan bulk:import"]
              env:
              - name: DB_CONNECTION
                value: postgres
              - name: DB_HOST
                value: postgres
              - name: DB_PORT
                value: "5432"
              - name: DB_DATABASE
                value: xxx
              - name: DB_USERNAME
                value: xxx
              - name: DB_PASSWORD
                value: xxxx
              - name: APP_KEY
                value: xxxxx
              image: registry.xxxxx.com/xxxx:2ecb785-e927977
              imagePullPolicy: IfNotPresent
              name: cronjob1
              ports:
              - containerPort: 80
                name: http
                protocol: TCP              
            imagePullSecrets:
            - name: xxxxx
            restartPolicy: OnFailure          
            terminationGracePeriodSeconds: 30
    schedule: '* * * * *'
    successfulJobsHistoryLimit: 3

Я получаю следующую ошибку, когда планировщик cronjob раскручивает модуль

Не удалось открыть входной файл: ремесленник навалом: импорт

Как решить это?

2 ответа

Вот исправление

   args:
      - "/bin/bash"
      - "-c"
      - "/var/www/html/artisan bulk:import"

Предполагаемый файл artisan существует и php может выполнить это:

command: ["/usr/local/bin/php"]
args: ["artisan", "bulk:import"]

Таким образом, php будет передано два аргумента вместо одного, который, как предполагает php, является файлом для выполнения.

Другие вопросы по тегам