Kubernetes:按需针对持久卷运行 aws s3 sync/rsync

Kubernetes:按需针对持久卷运行 aws s3 sync/rsync

Kubernetes 中是否有办法按需触发作业在我的容器上运行?

用例是能够让容器按需从 S3 同步到持久卷。在应用程序的当前架构中,新内容被添加到 S3 并同步到由 Chef 管理的一组服务器。我需要一种方法让团队能够在 Kubernetes 上运行的容器中触发此功能。

答案1

实际上,Kubernetes 代表了一种灵活的机制,用于自动化任务工作负载,例如一次性流程工作以及诸如此类的周期性过程CronJobs,包含在batch/v1Kubernetes API 对象中模型,因此@Tim 的解决方案对我来说相当不错。

我认为你可能可以在板上启动一些带有 的吊舱aws-cli,以触发映射之间的同步操作PVC进入此容器并定位到 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

您必须提供存储在特定 Kubernetes 中的aws-cli相应AWS_ACCESS_KEY_ID环境变量AWS_SECRET_ACCESS_KEY秘密对象。

答案2

看一下项目:https://github.com/nuvo/skbn. 它还可以使用 kube2iam 功能

相关内容