Kubernetes: execute aws s3 sync/rsync em relação ao volume persistente sob demanda

Kubernetes: execute aws s3 sync/rsync em relação ao volume persistente sob demanda

Existe uma maneira no Kubernetes de acionar um trabalho para execução em meus contêineres sob demanda?

O caso de uso é poder sincronizar os contêineres do S3 com um volume persistente sob demanda. Na arquitetura atual da aplicação, novo conteúdo é adicionado ao S3 e sincronizado com um grupo de servidores gerenciados pelo Chef. Preciso encontrar uma maneira para que uma equipe consiga acionar essa funcionalidade nos contêineres em execução no Kubernetes.

Responder1

Na verdade, o Kubernetes representa um mecanismo flexível para cargas de trabalho de tarefas automatizadas, como processos únicosEmpregose processos periódicos comoCronJobs, que estão incluídos no batch/v1objeto da API Kubernetesmodelo, portanto a solução do @Tim é bastante decente para mim.

Presumo que seja possível para você ativar algum pod em aws-cliuma placa para acionar a ação de sincronização entre os mapas mapeados.PVCneste contêiner e direcione o armazenamento S3. Para isso você pode construir sua própria imagem portada com o binário necessário, ou ou seja, usar uma solução pronta como docker-kubectl-awsclia imagem mantida por@Expert360.

O seguinte trabalho executará aws s3 synco comando dentro de um contêiner específico e iniciará uma ação de sincronização entre as partes alvo:

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

Você deve fornecer variáveis ​​​​de ambiente aws-clicorrespondentes armazenadas em Kubernetes específicosAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYSegredoobjetos.

Responder2

Dê uma olhada no projeto:https://github.com/nuvo/skbn. Ele também pode usar funcionalidades do kube2iam

informação relacionada