Kubernetes: 요청 시 영구 볼륨에 대해 aws s3 sync/rsync 실행

Kubernetes: 요청 시 영구 볼륨에 대해 aws s3 sync/rsync 실행

Kubernetes에 요청 시 내 컨테이너에서 실행되는 작업을 트리거하는 방법이 있나요?

사용 사례는 컨테이너가 요청 시 S3에서 영구 볼륨으로 동기화되도록 하는 것입니다. 애플리케이션의 현재 아키텍처에서는 새 콘텐츠가 S3에 추가되고 Chef로 관리되는 서버 그룹에 동기화됩니다. 팀이 Kubernetes에서 실행되는 컨테이너에서 이 기능을 트리거할 수 있는 방법이 필요합니다.

답변1

실제로 Kubernetes는 일회성 프로세스와 같은 자동화된 작업 워크로드를 위한 유연한 메커니즘을 나타냅니다.채용 정보다음과 같은 주기적인 프로세스CronJobbatch/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 기능도 사용할 수 있습니다

관련 정보