이 페이지에는 백업을 만드는 데 필요한 구성요소를 설치하고 구성하는 단계가 나와 있습니다. 또한 백업에서 이전 감사 로그에 대한 액세스 권한을 복원하고 복구하는 방법도 설명합니다.
원격 버킷에 백업 설정
이 섹션에는 S3 호환 버킷에 감사 로그 백업을 만드는 단계가 포함되어 있습니다.
시작하기 전에
감사 로그의 백업을 만들려면 다음 리소스에 액세스할 수 있어야 합니다.
- 엔드포인트, 보안 비밀 액세스 키, 액세스 키 ID가 있는 원격 S3 버킷
- 스토리지 시스템의 인증 기관 (CA) 인증서입니다.
- 작업 클러스터
소스 버킷에 액세스할 사용자 인증 정보 가져오기
다음 단계를 따라 감사 로그가 포함된 버킷의 사용자 인증 정보를 찾습니다.
루트 관리자 클러스터에서 프로젝트 네임스페이스의 버킷을 나열합니다.
kubectl get bucket -n PROJECT_NAMESPACE
출력은 감사 로깅 버킷에 이름과 엔드포인트가 표시되는 다음 예시와 같아야 합니다.
NAME BUCKET NAME DESCRIPTION STORAGE CLASS FULLY-QUALIFIED-BUCKET-NAME ENDPOINT REGION BUCKETREADY REASON MESSAGE audit-logs-loki-all audit-logs-loki-all Bucket for storing audit-logs-loki-all logs Standard wwq2y-audit-logs-loki-all https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. cortex-metrics-alertmanager cortex-metrics-alertmanager storage bucket for cortex metrics alertmanager configuration data Standard wwq2y-cortex-metrics-alertmanager https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. cortex-metrics-blocks cortex-metrics-blocks storage bucket for cortex metrics data Standard wwq2y-cortex-metrics-blocks https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. cortex-metrics-ruler cortex-metrics-ruler storage bucket for cortex metrics rules data Standard wwq2y-cortex-metrics-ruler https://appliance-objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created. ops-logs-loki-all ops-logs-loki-all Bucket for storing ops-logs-loki-all logs Standard wwq2y-ops-logs-loki-all https://appliance-objectstorage.zone1.google.gdch.test```
획득한 출력의 정보를 사용하여 전송에 대해 다음 환경 변수를 설정합니다.
SRC_BUCKET= BUCKET_NAME SRC_ENDPOINT = ENDPOINT SRC_PATH= FULLY_QUALIFIED_BUCKET_NAME
다음을 바꿉니다.
BUCKET_NAME
: 백업을 만들 감사 로그가 포함된 버킷의 이름입니다. 이 값은 출력의BUCKET NAME
필드에 있습니다.ENDPOINT
: 백업을 만들려는 감사 로그가 포함된 버킷의 엔드포인트입니다. 이 값은 출력의ENDPOINT
필드에 있습니다.FULLY_QUALIFIED_BUCKET_NAME
: 백업을 만들려는 감사 로그가 포함된 버킷의 정규화된 이름입니다. 이 값은 출력의FULLY-QUALIFIED-BUCKET-NAME
필드에 있습니다.
이전 단계에서 선택한 버킷의 비밀을 가져옵니다.
kubectl get secret -n PROJECT_NAMESPACE -o json| jq --arg jq_src $SRC_BUCKET '.items[].metadata|select(.annotations."object.gdc.goog/subject"==$jq_src)|.name'
출력은 다음 예시와 같이 버킷의 보안 비밀 이름이 표시되어야 합니다.
"object-storage-key-sysstd-sa-olxv4dnwrwul4bshu37ikebgovrnvl773owaw3arx225rfi56swa"
획득한 출력의 보안 비밀 이름을 사용하여 다음 환경 변수를 설정합니다.
SRC_CREDENTIALS="PROJECT_NAMESPACE/SECRET_NAME"
SECRET_NAME
을 이전 출력에서 얻은 보안 비밀 이름으로 바꿉니다.스토리지 시스템의 CA 인증서에 대한 보안 비밀을 만듭니다.
kubectl create secret generic -n PROJECT_NAMESPACE audit-log-loki-ca \ --from-literal=ca.crt=CERTIFICATE
CERTIFICATE
을 스토리지 시스템의 CA 인증서로 바꿉니다.다음 환경 변수를 설정합니다.
SRC_CA_CERTIFICATE=PROJECT_NAMESPACE/audit-log-loki-ca
원격 버킷에 액세스할 사용자 인증 정보 가져오기
다음 단계를 따라 백업을 만들려는 버킷의 사용자 인증 정보를 찾습니다.
다음 환경 변수를 설정합니다.
DST_ACCESS_KEY_ID= ACCESS_KEY DST_SECRET_ACCESS_KEY= ACCESS_SECRET DST_ENDPOINT= REMOTE_ENDPOINT DST_PATH= REMOTE_BUCKET_NAME
다음을 바꿉니다.
ACCESS_KEY
: 대상 원격 버킷의 액세스 키입니다.ACCESS_SECRET
: 대상 원격 버킷의 액세스 보안 비밀입니다.REMOTE_ENDPOINT
: 대상 원격 버킷의 엔드포인트입니다.REMOTE_BUCKET_NAME
: 대상 원격 버킷의 이름입니다.
원격 버킷의 보안 비밀을 만듭니다.
kubectl create secret generic -n PROJECT_NAMESPACE s3-bucket-credentials \ --from-literal=access-key-id=$DST_ACCESS_KEY_ID \ --from-literal=secret-access-key=$DST_SECRET_ACCESS_KEY
다음 환경 변수를 비밀 위치로 설정합니다.
DST_CREDENTIALS=PROJECT_NAMESPACE/s3-bucket-credentials
대상 버킷에 CA 인증서를 설정해야 하는 경우 버킷의 CA 인증서로 보안 비밀을 만듭니다.
kubectl create secret generic -n PROJECT_NAMESPACE s3-bucket-ca \ --from-literal=ca.crt=REMOTE_CERTIFICATE
REMOTE_CERTIFICATE
을 대상 원격 버킷의 CA 인증서로 바꿉니다.인증서 위치를 사용하여 다음 환경 변수를 설정합니다.
DST_CA_CERTIFICATE=PROJECT_NAMESPACE/s3-bucket-ca
감사 로그 전송 설정
다음 단계에 따라 백업을 위해 소스 버킷에서 대상 버킷으로 감사 로그 전송을 구성합니다.
감사 로그 전송 작업의 서비스 계정을 만듭니다. 프로젝트 네임스페이스에서 소스 버킷과 비밀을 읽을 수 있도록 서비스 계정에 대한 액세스 권한을 제공해야 합니다.
kubectl apply -f - <<EOF --- apiVersion: v1 kind: ServiceAccount metadata: name: audit-log-transfer-sa namespace: PROJECT_NAMESPACE --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: read-secrets-role namespace: PROJECT_NAMESPACE rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-secrets-rolebinding namespace: PROJECT_NAMESPACE subjects: - kind: ServiceAccount name: audit-log-transfer-sa namespace: PROJECT_NAMESPACE roleRef: kind: Role name: read-secrets-role apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: audit-log-read-bucket-role namespace: PROJECT_NAMESPACE rules: - apiGroups: - object.gdc.goog resourceNames: - $SRC_BUCKET # Source bucket name resources: - buckets verbs: - read-object --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: audit-log-transfer-role-binding namespace: PROJECT_NAMESPACE roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: audit-log-read-bucket-role subjects: - kind: ServiceAccount name: audit-log-transfer-sa namespace: PROJECT_NAMESPACE --- EOF
로그를 원격 버킷으로 내보내는 전송 작업을 만듭니다.
kubectl apply -f - <<EOF --- apiVersion: batch/v1 kind: Job metadata: name: audit-log-transfer-job namespace: PROJECT_NAMESPACE spec: template: spec: serviceAccountName: audit-log-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_ENDPOINT - '--dst_endpoint=$DST_ENDPOINT - '--src_path=\$SRC_PATH - '--dst_path=\$DST_PATH - '--src_credentials=$SRC_CREDENTIALS - '--dst_credentials=$DST_CREDENTIALS - '--dst_ca_certificate_reference=$DST_CA_CERTIFICATE # Optional. Based on destination type. - '--src_ca_certificate_reference=$SRC_CA_CERTIFICATE - '--src_type=s3' - '--dst_type=s3' - '--bandwidth_limit=100M' # Optional of the form '10K', '100M', '1G' bytes per second restartPolicy: OnFailure # Will restart on failure. --- EOF
작업을 예약한 후 작업 이름을 audit-log-transfer-job
로, 프로젝트 네임스페이스를 입력하여 데이터 전송을 모니터링할 수 있습니다.
모든 데이터가 대상 버킷으로 전송되면 작업이 종료됩니다.
백업에서 감사 로그 복원
이 섹션에는 백업에서 감사 로그를 복원하는 단계가 포함되어 있습니다.
시작하기 전에
감사 로그를 복원하려면 다음 리소스에 액세스할 수 있어야 합니다.
- 엔드포인트, 보안 비밀 액세스 키, 액세스 키 ID가 있는 감사 로그 백업 버킷
- 스토리지 시스템의 인증 기관 (CA) 인증서입니다.
- 작업 클러스터
감사 로그를 복원할 버킷 만들기
다음 단계를 따라 복원된 감사 로그를 저장할 버킷을 만듭니다.
버킷 리소스와 서비스 계정을 만듭니다.
kubectl apply -f - <<EOF --- apiVersion: object.gdc.goog/v1 kind: Bucket metadata: annotations: object.gdc.goog/audit-logs: IO labels: logging.private.gdch.goog/loggingpipeline-name: default name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE spec: bucketPolicy: lockingPolicy: defaultObjectRetentionDays: 1 description: Bucket for storing audit-logs-loki logs restore storageClass: Standard --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: audit-logs-loki-restore-buckets-role namespace: PROJECT_NAMESPACE rules: - apiGroups: - object.gdc.goog resourceNames: - audit-logs-loki-restore resources: - buckets verbs: - read-object - write-object --- apiVersion: v1 automountServiceAccountToken: false kind: ServiceAccount metadata: labels: logging.private.gdch.goog/loggingpipeline-name: default name: audit-logs-loki-restore-sa namespace: PROJECT_NAMESPACE --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: audit-logs-loki-restore-buckets-role subjects: - kind: ServiceAccount name: audit-logs-loki-restore-sa namespace: PROJECT_NAMESPACE EOF
버킷과 보안 비밀이 생성됩니다.
생성된 버킷을 확인합니다.
kubectl get bucket audit-logs-loki-restore -n PROJECT_NAMESPACE
출력은 다음 예시와 같이 표시되어야 합니다. 버킷을 만드는 데 몇 분 정도 걸릴 수 있습니다.
NAME BUCKET NAME DESCRIPTION STORAGE CLASS FULLY-QUALIFIED-BUCKET-NAME ENDPOINT REGION BUCKETREADY REASON MESSAGE audit-logs-loki-restore audit-logs-loki-restore Bucket for storing audit-logs-loki logs restore Standard dzbl6-audit-logs-loki-restore https://objectstorage.zone1.google.gdch.test zone1 True BucketCreationSucceeded Bucket successfully created.
출력에 생성한 버킷이 표시되어야 합니다. 버킷을 만드는 데 몇 분 정도 걸릴 수 있습니다.
획득한 출력의 정보를 사용하여 다음 환경 변수를 설정합니다.
DST_BUCKET= RESTORE_BUCKET_NAME DST_ENDPOINT = RESTORE_ENDPOINT DST_PATH= RESTORE_FULLY_QUALIFIED_BUCKET_NAME
다음을 바꿉니다.
RESTORE_BUCKET_NAME
: 감사 로그 복원용 버킷의 이름입니다. 이 값은 출력의BUCKET NAME
필드에 있습니다.RESTORE_ENDPOINT
: 감사 로그 복원을 위한 버킷의 엔드포인트입니다. 이 값은 출력의ENDPOINT
필드에 있습니다.RESTORE_FULLY_QUALIFIED_BUCKET_NAME
: 감사 로그 복원을 위한 버킷의 정규화된 이름입니다. 이 값은 출력의FULLY-QUALIFIED-BUCKET-NAME
필드에 있습니다.
생성된 버킷의 보안 비밀을 가져옵니다.
kubectl get secret -n PROJECT_NAMESPACE -o json| jq --arg jq_src $DST_BUCKET '.items[].metadata|select(.annotations."object.gdc.goog/subject"==$jq_src)|.name'
출력은 다음 예시와 같이 버킷의 보안 비밀 이름이 표시되어야 합니다.
"object-storage-key-sysstd-sa-olxv4dnwrwul4bshu37ikebgovrnvl773owaw3arx225rfi56swa"
획득한 출력의 보안 비밀 이름을 사용하여 다음 환경 변수를 설정합니다.
DST_SECRET_NAME=RESTORE_SECRET_NAME DST_CREDENTIALS="PROJECT_NAMESPACE/RESTORE_SECRET_NAME"
RESTORE_SECRET_NAME
을 이전 출력에서 얻은 보안 비밀 이름으로 바꿉니다.스토리지 시스템의 CA 인증서에 대한 보안 비밀을 만듭니다.
kubectl create secret generic -n PROJECT_NAMESPACE audit-log-loki-restore-ca \ --from-literal=ca.crt=CERTIFICATE
CERTIFICATE
을 스토리지 시스템의 CA 인증서로 바꿉니다.인증서 위치에 다음 환경 변수를 설정합니다.
DST_CA_CERTIFICATE=PROJECT_NAMESPACE/audit-log-loki-restore-ca
백업 버킷에 액세스할 사용자 인증 정보 획득
다음 단계를 따라 감사 로그의 백업이 포함된 버킷의 사용자 인증 정보를 찾습니다.
다음 환경 변수를 설정합니다.
SRC_ACCESS_KEY_ID= ACCESS_KEY SRC_SECRET_ACCESS_KEY= ACCESS_SECRET SRC_ENDPOINT= REMOTE_ENDPOINT SRC_PATH= REMOTE_BUCKET_NAME
다음을 바꿉니다.
ACCESS_KEY
: 백업 버킷의 액세스 키입니다.ACCESS_SECRET
: 백업 버킷의 액세스 보안 비밀입니다.REMOTE_ENDPOINT
: 백업 버킷의 엔드포인트입니다.REMOTE_BUCKET_NAME
: 백업 버킷의 이름입니다.
백업 버킷의 보안 비밀을 만듭니다.
kubectl create secret generic -n PROJECT_NAMESPACE s3-backup-bucket-credentials \ --from-literal=access-key-id=$SRC_ACCESS_KEY_ID \ --from-literal=secret-access-key=$SRC_SECRET_ACCESS_KEY
다음 환경 변수를 비밀 위치로 설정합니다.
SRC_CREDENTIALS=PROJECT_NAMESPACE/s3-backup-bucket-credentials
버킷의 CA 인증서로 보안 비밀을 만듭니다.
kubectl create secret generic -n PROJECT_NAMESPACE s3-backup-bucket-ca \ --from-literal=ca.crt=BACKUP_CERTIFICATE
BACKUP_CERTIFICATE
을 백업 버킷의 CA 인증서로 바꿉니다.인증서 위치를 사용하여 다음 환경 변수를 설정합니다.
SRC_CA_CERTIFICATE=PROJECT_NAMESPACE/s3-backup-bucket-ca
감사 로그 복원 설정
다음 단계를 따라 백업 버킷에서 복원 버킷으로 감사 로그 전송을 구성합니다.
감사 로그 전송 작업의 서비스 계정을 만듭니다. 프로젝트 네임스페이스의 버킷과 보안 비밀을 읽고 쓸 수 있는 서비스 계정에 대한 액세스 권한을 제공해야 합니다.
kubectl apply -f - <<EOF --- apiVersion: v1 kind: ServiceAccount metadata: name: audit-log-restore-sa namespace: PROJECT_NAMESPACE --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: read-secrets-role namespace: PROJECT_NAMESPACE rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-secrets-rolebinding-restore namespace: PROJECT_NAMESPACE subjects: - kind: ServiceAccount name: audit-log-restore-sa namespace: PROJECT_NAMESPACE roleRef: kind: Role name: read-secrets-role apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: audit-log-restore-bucket-role namespace: PROJECT_NAMESPACE rules: - apiGroups: - object.gdc.goog resourceNames: - $DST_BUCKET # Source bucket name resources: - buckets verbs: - read-object - write-object --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: audit-log-restore-role-binding namespace: PROJECT_NAMESPACE roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: audit-log-restore-bucket-role subjects: - kind: ServiceAccount name: audit-log-restore-sa namespace: PROJECT_NAMESPACE --- EOF
원격 백업 버킷에서 로그를 복원하는 전송 작업을 만듭니다.
kubectl apply -f - <<EOF --- apiVersion: batch/v1 kind: Job metadata: name: audit-log-restore-job namespace: PROJECT_NAMESPACE spec: template: spec: serviceAccountName: audit-log-restore-sa containers: - name: storage-transfer-pod image: gcr.io/private-cloud-staging/storage-transfer:latest imagePullPolicy: Always command: - /storage-transfer args: - '--src_endpoint=$SRC_ENDPOINT - '--dst_endpoint=$DST_ENDPOINT - '--src_path=\$SRC_PATH - '--dst_path=\$DST_PATH - '--src_credentials=$SRC_CREDENTIALS - '--dst_credentials=$DST_CREDENTIALS - '--dst_ca_certificate_reference=$DST_CA_CERTIFICATE - '--src_ca_certificate_reference=$SRC_CA_CERTIFICATE # Optional. Based on destination type - '--src_type=s3' - '--dst_type=s3' - '--bandwidth_limit=100M' # Optional of the form '10K', '100M', '1G' bytes per second restartPolicy: OnFailure # Will restart on failure. --- EOF
작업을 예약한 후 작업 이름을 audit-log-restore-job
로, 프로젝트 네임스페이스를 입력하여 데이터 전송을 모니터링할 수 있습니다.
모든 데이터가 대상 버킷으로 전송되면 작업이 종료됩니다.
감사 로그 인스턴스를 배포하여 로그에 액세스
복원된 로그에 액세스하려면 감사 로그 인스턴스라고도 하는 Loki 인스턴스를 배포해야 합니다.
감사 로그 인스턴스를 설정하려면 복원 작업을 위해 만든 audit-log-restore-sa
서비스 계정을 사용하세요. 다음 단계를 따라 인스턴스를 배포합니다.
인스턴스 구성의
ConfigMap
객체를 만듭니다.kubectl apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE data: loki.yaml: |- auth_enabled: true common: ring: kvstore: store: inmemory chunk_store_config: max_look_back_period: 0s compactor: shared_store: s3 working_directory: /data/loki/boltdb-shipper-compactor compaction_interval: 10m retention_enabled: true retention_delete_delay: 2h retention_delete_worker_count: 150 ingester: chunk_target_size: 1572864 chunk_encoding: snappy max_chunk_age: 2h chunk_idle_period: 90m chunk_retain_period: 30s autoforget_unhealthy: true lifecycler: ring: kvstore: store: inmemory replication_factor: 1 heartbeat_timeout: 10m max_transfer_retries: 0 wal: enabled: true flush_on_shutdown: true dir: /wal checkpoint_duration: 1m replay_memory_ceiling: 20GB limits_config: retention_period: 48h enforce_metric_name: false reject_old_samples: false ingestion_rate_mb: 256 ingestion_burst_size_mb: 256 max_streams_per_user: 20000 max_global_streams_per_user: 20000 per_stream_rate_limit: 256MB per_stream_rate_limit_burst: 256MB shard_streams: enabled: false desired_rate: 3MB schema_config: configs: - from: "2020-10-24" index: period: 24h prefix: index_ object_store: s3 schema: v11 store: boltdb-shipper server: http_listen_port: 3100 grpc_server_max_recv_msg_size: 104857600 grpc_server_max_send_msg_size: 104857600 analytics: reporting_enabled: false storage_config: boltdb_shipper: active_index_directory: /data/loki/boltdb-shipper-active cache_location: /data/loki/boltdb-shipper-cache cache_ttl: 24h shared_store: s3 aws: endpoint: $DST_ENDPOINT bucketnames: $DST_PATH access_key_id: ${S3_ACCESS_KEY_ID} secret_access_key: ${S3_SECRET_ACCESS_KEY} s3forcepathstyle: true EOF
복원 버킷에서 로그에 액세스하는 서비스로 인스턴스를 배포합니다.
kubectl apply -f - <<EOF --- apiVersion: apps/v1 kind: StatefulSet metadata: labels: app: audit-logs-loki-restore logging.private.gdch.goog/loggingpipeline-name: default name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE spec: persistentVolumeClaimRetentionPolicy: whenDeleted: Retain whenScaled: Retain podManagementPolicy: OrderedReady replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: audit-logs-loki-restore serviceName: audit-logs-loki-restore template: metadata: labels: app: audit-logs-loki-restore app.kubernetes.io/part-of: audit-logs-loki-restore egress.networking.gke.io/enabled: "true" istio.io/rev: default logging.private.gdch.goog/log-type: audit spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/control-plane operator: DoesNotExist - key: node-role.kubernetes.io/master operator: DoesNotExist weight: 1 podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - audit-logs-loki-restore topologyKey: kubernetes.io/hostname weight: 100 containers: - args: - -config.file=/etc/loki/loki.yaml - -config.expand-env=true - -target=all env: - name: S3_ACCESS_KEY_ID valueFrom: secretKeyRef: key: access-key-id name: $DST_SECRET_NAME optional: false - name: S3_SECRET_ACCESS_KEY valueFrom: secretKeyRef: key: secret-access-key name: $DST_SECRET_NAME optional: false image: gcr.io/private-cloud-staging/loki:v2.8.4-gke.2 imagePullPolicy: Always livenessProbe: failureThreshold: 3 httpGet: path: /ready port: http-metrics scheme: HTTP initialDelaySeconds: 330 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: audit-logs-loki-restore ports: - containerPort: 3100 name: http-metrics protocol: TCP - containerPort: 7946 name: gossip-ring protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /ready port: http-metrics scheme: HTTP initialDelaySeconds: 45 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: limits: ephemeral-storage: 2000Mi memory: 8000Mi requests: cpu: 300m ephemeral-storage: 2000Mi memory: 1000Mi securityContext: readOnlyRootFilesystem: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/loki name: config - mountPath: /data name: loki-storage - mountPath: /tmp name: temp - mountPath: /tmp/loki/rules-temp name: tmprulepath - mountPath: /etc/ssl/certs/storage-cert.crt name: storage-cert subPath: ca.crt - mountPath: /wal name: loki-storage dnsPolicy: ClusterFirst priorityClassName: audit-logs-loki-priority restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 10001 runAsGroup: 10001 runAsUser: 10001 serviceAccount: audit-logs-loki-restore-sa serviceAccountName: audit-logs-loki-restore-sa terminationGracePeriodSeconds: 4800 volumes: - emptyDir: {} name: temp - configMap: defaultMode: 420 name: audit-logs-loki-restore name: config - emptyDir: {} name: tmprulepath - name: storage-cert secret: defaultMode: 420 secretName: web-tls updateStrategy: type: RollingUpdate volumeClaimTemplates: - apiVersion: v1 kind: PersistentVolumeClaim metadata: creationTimestamp: null name: loki-storage spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi storageClassName: standard-rwo volumeMode: Filesystem --- apiVersion: v1 kind: Service metadata: name: audit-logs-loki-restore namespace: PROJECT_NAMESPACE spec: internalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack ports: - name: http-metrics port: 3100 protocol: TCP targetPort: http-metrics selector: app: audit-logs-loki-restore sessionAffinity: None type: ClusterIP --- EOF
데이터 소스의 로그를 볼 수 있도록 모니터링 인스턴스 구성
다음 단계를 따라 감사 로그 인스턴스에서 복원된 감사 로그를 볼 수 있도록 모니터링 인스턴스라고도 하는 Grafana를 구성합니다.
- 프로젝트의 모니터링 인스턴스 엔드포인트로 이동합니다.
- 사용자 인터페이스 (UI)의 탐색 메뉴에서 관리 > 데이터 소스를 클릭합니다.
- 새 데이터 소스 추가를 클릭합니다.
- 데이터 소스 추가 페이지에서 Loki를 선택합니다.
- 설정 페이지에서 이름 필드의 값으로
Audit Logs - Restore
을 입력합니다. HTTP 섹션의 URL 필드에 다음 값을 입력합니다.
http://audit-logs-loki-restore.PROJECT_NAMESPACE.svc:3100
맞춤 HTTP 헤더 섹션의 해당 필드에 다음 값을 입력합니다.
- 헤더:
X-Scope-OrgID
- 값:
infra-obs
- 헤더:
그림 1에서 Loki는 모니터링 인스턴스 UI의 데이터 소스 추가 페이지에 옵션으로 표시됩니다. 그림 2의 설정 페이지에는 데이터 소스를 설정하기 위해 작성해야 하는 필드가 표시되어 있습니다.
그림 1. 모니터링 인스턴스의 UI에 있는 데이터 소스 추가 페이지
그림 2. 모니터링 인스턴스의 UI에 있는 설정 페이지
이제 Audit Logs - Restore
옵션을 로그 탐색기에서 데이터 소스로 사용할 수 있습니다.