Exporter des journaux vers un bucket distant

Cette page explique comment exporter les journaux d'audit et opérationnels de l'appliance Google Distributed Cloud (GDC) isolée vers un bucket distant à l'aide de l'outil de transfert de stockage.

Obtenir des rôles IAM

Pour obtenir les autorisations nécessaires pour exporter des journaux, demandez à votre administrateur IAM de l'organisation de vous accorder le rôle Administrateur du transfert de journaux (logs-transfer-admin) dans l'espace de noms obs-system du cluster d'infrastructure et le rôle Lecteur du bucket de journaux (logs-bucket-viewer)) dans l'espace de noms obs-system du plan de gestion.

Pour en savoir plus sur ces rôles, consultez Préparer les autorisations IAM.

Obtenir le point de terminaison et le nom complet du bucket source

  1. Définissez KUBECONFIG sur l'API Organization Management :

    export KUBECONFIG=MANAGEMENT_API_KUBECONFIG_PATH
    
  2. Obtenez le point de terminaison du bucket source :

    • Pour les journaux d'audit :

      kubectl get bucket audit-logs-loki-all -n obs-system -o json | jq '.status.endpoint'
      
    • Pour les journaux opérationnels :

      kubectl get bucket ops-logs-loki-all -n obs-system -o json | jq '.status.endpoint'
      
  3. Obtenez le nom complet du bucket source :

    • Pour les journaux d'audit :

      kubectl get bucket audit-logs-loki-all -n obs-system -o json | jq '.status.fullyQualifiedName'
      
    • Pour les journaux opérationnels :

      kubectl get bucket ops-logs-loki-all -n obs-system -o json | jq '.status.fullyQualifiedName'
      

Obtenir les identifiants d'accès au bucket source

  1. Définissez KUBECONFIG sur le cluster d'infrastructure de l'organisation :

      export KUBECONFIG=INFRA_CLUSTER_KUBECONFIG_PATH
    
  2. Obtenez l'ID de clé d'accès du bucket source :

    • Pour les journaux d'audit :

      kubectl get secret audit-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."access-key-id"' | base64 -di
      
    • Pour les journaux opérationnels :

      kubectl get secret ops-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."access-key-id"' | base64 -di
      
  3. Obtenez la clé d'accès secrète du bucket source :

    • Pour les journaux d'audit :

      kubectl get secret audit-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."secret-access-key"' | base64 -di
      
    • Pour les journaux opérationnels :

      kubectl get secret ops-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."secret-access-key"' | base64 -di
      

Journaux de transfert

  1. Définissez KUBECONFIG sur le cluster d'infrastructure de l'organisation :

    export KUBECONFIG=INFRA_CLUSTER_KUBECONFIG_PATH
    
  2. Créez un secret avec les identifiants d'accès du bucket source :

    kubectl create secret generic -n obs-system SRC_BUCKET_SECRET_NAME
    --from-literal=access-key-id=SRC_BUCKET_ACCESS_KEY_ID
    --from-literal=secret-access-key=SRC_BUCKET_SECRET_ACCESS_KEY
    
  3. Créez un secret avec les identifiants d'accès du bucket de destination :

    kubectl create secret generic -n obs-system DST_BUCKET_SECRET_NAME 
    --from-literal=access-key-id=DST_BUCKET_ACCESS_KEY_ID   
    --from-literal=secret-access-key=DST_BUCKET_SECRET_ACCESS_KEY
    
  4. Créez un secret avec une autorité de certification pour authentifier le point de terminaison du bucket de destination :

    kubectl create secret generic -n obs-system DST_BUCKET_CA_SECRET_NAME 
    --from-file="ca.crt"=CA_FILE
    
  5. Créez une tâche de transfert de journaux :

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: JOB_NAME
      namespace: obs-system
    spec:
      template:
        spec:
          serviceAccountName: logs-transfer-sa
          containers:
            - name: storage-transfer-pod
              image: gcr.io/private-cloud-staging/storage-transfer:latest
              imagePullPolicy: Always
              command:
                - /storage-transfer
              args:
                - '--src_endpoint=SRC_BUCKET_ENDPOINT'
                - '--dst_endpoint=DST_BUCKET_ENDPOINT'
                - '--src_path=SRC_BUCKET_FULLY_QUALIFIED_NAME'
                - '--dst_path=DST_BUCKET_FULLY_QUALIFIED_NAME'
                - '--src_credentials=obs-system/SRC_BUCKET_SECRET_NAME'
                - '--dst_credentials=obs-system/DST_BUCKET_SECRET_NAME'
                - '--dst_ca_certificate_reference=obs-system/DST_BUCKET_CA_SECRET_NAME'
                - '--src_ca_certificate_reference=obs-system/trust-store-root-ext'
                - '--src_type=s3'
                - '--dst_type=s3'
                - '--bandwidth_limit=1G'
          restartPolicy: OnFailure.
    ---
    
  6. Attendez que le transfert soit terminé :

    kubectl wait --for=condition=complete job/JOB_NAME -n obs-system