Kubernetes: ejecute aws s3 sync/rsync contra un volumen persistente bajo demanda

Kubernetes: ejecute aws s3 sync/rsync contra un volumen persistente bajo demanda

¿Existe alguna forma en Kubernetes de activar un trabajo para que se ejecute en mis contenedores a pedido?

El caso de uso es poder sincronizar los contenedores desde S3 con un volumen persistente bajo demanda. En la arquitectura actual de la aplicación, se agrega contenido nuevo a S3 y se sincroniza con un grupo de servidores que se administran con Chef. Necesito tener una forma para que un equipo pueda activar esta funcionalidad en los contenedores que se ejecutan en Kubernetes.

Respuesta1

En realidad, Kubernetes representa un mecanismo flexible para cargas de trabajo de tareas automatizadas, como procesos únicos.Trabajosy procesos periódicos comoCronJobs, que están incluidos en batch/v1el objeto API de KubernetesmodeloPor lo tanto, la solución de @Tim es bastante decente para mí.

Supongo que podrías activar algún módulo con un aws-clitablero para activar la acción de sincronización entre los mapas mapeados.CLORURO DE POLIVINILOen este contenedor y apunte al almacenamiento S3. Para ello, puede crear su propia imagen portada con el binario necesario o, por ejemplo, utilizar una solución preparada como docker-kubectl-awscliuna imagen mantenida por@Experto360.

El siguiente trabajo ejecutará aws s3 syncun comando dentro de un contenedor particular e iniciará una acción de sincronización entre las partes objetivo:

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

Debe proporcionar las variables de entorno aws-clicorrespondientes almacenadas en Kubernetes en particular.AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYSecretoobjetos.

Respuesta2

Échale un vistazo al proyecto:https://github.com/nuvo/skbn. También puede utilizar las funcionalidades de kube2iam.

información relacionada