원격 버킷으로 로그 내보내기

이 페이지에서는 스토리지 전송 도구를 사용하여 Google Distributed Cloud (GDC) 오프라인 어플라이언스의 감사 및 운영 로그를 원격 버킷으로 내보내는 방법을 설명합니다.

IAM 역할 획득

로그를 내보내는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 인프라 클러스터의 obs-system 네임스페이스에 있는 로그 전송 관리자 (logs-transfer-admin) 역할과 관리 평면의 obs-system 네임스페이스에 있는 로그 버킷 뷰어 (logs-bucket-viewer)) 역할을 부여해 달라고 요청하세요.

이러한 역할에 대한 자세한 내용은 IAM 권한 준비를 참고하세요.

소스 버킷의 엔드포인트와 정규화된 이름 가져오기

  1. KUBECONFIG을 조직 관리 API로 설정합니다.

    export KUBECONFIG=MANAGEMENT_API_KUBECONFIG_PATH
    
  2. 소스 버킷의 엔드포인트를 가져옵니다.

    • 감사 로그의 경우:

      kubectl get bucket audit-logs-loki-all -n obs-system -o json | jq '.status.endpoint'
      
    • 운영 로그의 경우:

      kubectl get bucket ops-logs-loki-all -n obs-system -o json | jq '.status.endpoint'
      
  3. 소스 버킷의 정규화된 이름을 가져옵니다.

    • 감사 로그의 경우:

      kubectl get bucket audit-logs-loki-all -n obs-system -o json | jq '.status.fullyQualifiedName'
      
    • 운영 로그의 경우:

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

소스 버킷의 액세스 사용자 인증 정보 가져오기

  1. KUBECONFIG를 조직 인프라 클러스터로 설정합니다.

      export KUBECONFIG=INFRA_CLUSTER_KUBECONFIG_PATH
    
  2. 소스 버킷의 액세스 키 ID를 가져옵니다.

    • 감사 로그의 경우:

      kubectl get secret audit-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."access-key-id"' | base64 -di
      
    • 운영 로그의 경우:

      kubectl get secret ops-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."access-key-id"' | base64 -di
      
  3. 소스 버킷의 보안 비밀 액세스 키를 가져옵니다.

    • 감사 로그의 경우:

      kubectl get secret audit-logs-loki-all-s3-auth -n obs-system -o json | jq -r '.data."secret-access-key"' | base64 -di
      
    • 운영 로그의 경우:

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

전송 로그

  1. KUBECONFIG을 조직 인프라 클러스터로 설정합니다.

    export KUBECONFIG=INFRA_CLUSTER_KUBECONFIG_PATH
    
  2. 소스 버킷의 액세스 사용자 인증 정보로 보안 비밀을 만듭니다.

    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. 대상 버킷의 액세스 사용자 인증 정보로 보안 비밀을 만듭니다.

    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. 대상 버킷의 엔드포인트를 인증하기 위한 인증 기관을 사용하여 보안 비밀을 만듭니다.

    kubectl create secret generic -n obs-system DST_BUCKET_CA_SECRET_NAME 
    --from-file="ca.crt"=CA_FILE
    
  5. 로그 전송 작업을 만듭니다.

    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. 전송 작업이 완료될 때까지 기다립니다.

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