Kubernetes: オンデマンドで永続ボリュームに対して aws s3 sync/rsync を実行する

Kubernetes: オンデマンドで永続ボリュームに対して aws s3 sync/rsync を実行する

Kubernetes で、オンデマンドでコンテナ上でジョブを実行するようにトリガーする方法はありますか?

ユースケースは、コンテナをオンデマンドで S3 から永続ボリュームに同期できるようにすることです。アプリケーションの現在のアーキテクチャでは、新しいコンテンツが S3 に追加され、Chef で管理されているサーバーのグループに同期されます。Kubernetes で実行されているコンテナでチームがこの機能をトリガーできるようにする方法が必要です。

答え1

実際、Kubernetesは、1回限りのプロセスなどの自動化されたタスクワークロードのための柔軟なメカニズムを表しています。求人そして、次のような定期的なプロセスCronジョブbatch/v1Kubernetes APIオブジェクトに含まれるモデルしたがって、@Tim からの解決策は私にとって非常に適切です。

aws-cliボード上のポッドを起動して、マップされたデバイス間の同期アクションをトリガーすることは可能だと思います。ポリ塩化ビニルdocker-kubectl-awscliこのコンテナにインポートしてS3ストレージをターゲットにします。そのためには、必要なバイナリを移植した独自のイメージを作成するか、または、翻訳者

次のジョブは、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

特定のKubernetesに保存されているaws-cli対応する環境変数をAWS_ACCESS_KEY_ID提供する必要があります。AWS_SECRET_ACCESS_KEY秘密オブジェクト。

答え2

プロジェクトを見てみましょう:https://github.com/nuvo/skbnkube2iamの機能も使用できます

関連情報