Есть ли в Kubernetes способ запустить задание в моих контейнерах по запросу?
Вариант использования - иметь возможность синхронизировать контейнеры с S3 на постоянный том по запросу. В текущей архитектуре приложения новый контент добавляется в S3 и синхронизируется с группой серверов, которыми управляет Chef. Мне нужно, чтобы команда могла активировать эту функцию в контейнерах, работающих в Kubernetes.
Фактически, Kubernetes представляет собой гибкий механизм для автоматизированных рабочих нагрузок задач, таких как одноразовые процессы. Вакансии и периодические процессы типа CronJobs, которые входят в batch/v1
Объект Kubernetes API модель, поэтому решение от @Tim для меня вполне приличное.
Я предполагаю, что вы могли бы развернуть какой-нибудь модуль с aws-cli
на доске, чтобы запустить действие синхронизации между отображенными ПВХ в этот контейнер и целевое хранилище S3. Для этого вы можете создать собственный образ, портированный с необходимым бинарным файлом, или использовать готовое решение вроде docker-kubectl-awscli
изображение поддерживается @ Expert360.
Следующее задание будет выполнено aws s3 sync
внутри конкретного контейнера и запустить действие синхронизации между целевыми сторонами:
apiVersion: batch/v1
kind: Job
metadata:
name: backup-s3
spec:
template:
spec:
containers:
- name: kubectl-aws
image: expert360/kubectl-awscli:v1.11.2
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: aws-s3-key
key: aws-access-key-id
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: aws-s3-access-key
key: aws-secret-access-key
command: [ "/bin/bash", "-c", "aws s3 sync s3://my-bucket/ /data/backup" ]
volumeMounts:
- name: backup-aws
mountPath: /data/backup
volumes:
- name: backup-aws
persistentVolumeClaim:
claimName: backup-aws-claim
restartPolicy: Never
Вы должны поставить aws-cli
с соответствующими AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
переменные среды, хранящиеся в конкретном Kubernetes Секрет объекты.
Загляните в проект: https://github.com/nuvo/skbn. Он также может использовать функции kube2iam