Auf dieser Seite finden Sie die Schritte zum Installieren und Konfigurieren der erforderlichen Komponenten zum Erstellen einer Sicherung. Außerdem wird beschrieben, wie Sie den Zugriff auf alte Audit-Logs aus der Sicherung wiederherstellen und wiedererlangen.
Back-up in einem Remote-Bucket einrichten
In diesem Abschnitt wird beschrieben, wie Sie ein Backup für Audit-Logs in einem S3-kompatiblen Bucket erstellen.
Hinweise
Bevor Sie eine Sicherung Ihrer Audit-Logs erstellen können, benötigen Sie Zugriff auf die folgenden Ressourcen:
- Ein Remote-S3-Bucket mit einem Endpunkt, einem geheimen Zugriffsschlüssel und einer Zugriffsschlüssel-ID.
- Ein Zertifikat der Zertifizierungsstelle (CA) für das Speichersystem.
- Ein funktionierender Cluster.
Anmeldedaten für den Zugriff auf den Quell-Bucket abrufen
Führen Sie die folgenden Schritte aus, um die Anmeldedaten des Buckets zu finden, der die Audit-Logs enthält:
Listen Sie im Stamm-Administratorcluster die Buckets in Ihrem Projekt-Namespace auf:
kubectl get bucket -n PROJECT_NAMESPACE
Die Ausgabe muss wie im folgenden Beispiel aussehen, in dem für die Audit-Logging-Buckets ein Name und ein Endpunkt angezeigt werden:
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```
Legen Sie anhand der Informationen aus der Ausgabe die folgenden Umgebungsvariablen für die Übertragung fest:
SRC_BUCKET= BUCKET_NAME SRC_ENDPOINT = ENDPOINT SRC_PATH= FULLY_QUALIFIED_BUCKET_NAME
Ersetzen Sie Folgendes:
BUCKET_NAME
: Der Name des Buckets, der die Audit-Logs enthält, für die Sie die Sicherung erstellen möchten. Dieser Wert befindet sich im FeldBUCKET NAME
der Ausgabe.ENDPOINT
: Der Endpunkt des Buckets, der die Audit-Logs enthält, für die Sie die Sicherung erstellen möchten. Dieser Wert befindet sich im FeldENDPOINT
der Ausgabe.FULLY_QUALIFIED_BUCKET_NAME
: Der vollständig qualifizierte Name des Buckets, der die Audit-Logs enthält, für die Sie die Sicherung erstellen möchten. Dieser Wert befindet sich im FeldFULLY-QUALIFIED-BUCKET-NAME
der Ausgabe.
Rufen Sie das Secret für den Bucket ab, den Sie im vorherigen Schritt ausgewählt haben:
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'
Die Ausgabe muss wie im folgenden Beispiel aussehen, in dem der Secret-Name des Buckets angezeigt wird:
"object-storage-key-sysstd-sa-olxv4dnwrwul4bshu37ikebgovrnvl773owaw3arx225rfi56swa"
Legen Sie mit dem Secret-Namen aus der Ausgabe die folgende Umgebungsvariable fest:
SRC_CREDENTIALS="PROJECT_NAMESPACE/SECRET_NAME"
Ersetzen Sie
SECRET_NAME
durch den Secret-Namen, den Sie in der vorherigen Ausgabe erhalten haben.Erstellen Sie das Secret für das CA-Zertifikat des Speichersystems:
kubectl create secret generic -n PROJECT_NAMESPACE audit-log-loki-ca \ --from-literal=ca.crt=CERTIFICATE
Ersetzen Sie
CERTIFICATE
durch das CA-Zertifikat des Speichersystems.Legen Sie die folgende Umgebungsvariable fest:
SRC_CA_CERTIFICATE=PROJECT_NAMESPACE/audit-log-loki-ca
Anmeldedaten für den Zugriff auf den Remote-Bucket abrufen
Führen Sie die folgenden Schritte aus, um die Anmeldedaten des Buckets zu finden, in dem Sie die Sicherung erstellen möchten:
Legen Sie die folgenden Umgebungsvariablen fest:
DST_ACCESS_KEY_ID= ACCESS_KEY DST_SECRET_ACCESS_KEY= ACCESS_SECRET DST_ENDPOINT= REMOTE_ENDPOINT DST_PATH= REMOTE_BUCKET_NAME
Ersetzen Sie Folgendes:
ACCESS_KEY
: Der Zugriffsschlüssel des Remote-Ziel-Buckets.ACCESS_SECRET
: das Zugriffs-Secret des Remote-Ziel-Buckets.REMOTE_ENDPOINT
: der Endpunkt des Remote-Ziel-Buckets.REMOTE_BUCKET_NAME
: der Name des Remote-Ziel-Buckets.
Erstellen Sie ein Secret für den Remote-Bucket:
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
Legen Sie die folgende Umgebungsvariable mit dem Speicherort des Secrets fest:
DST_CREDENTIALS=PROJECT_NAMESPACE/s3-bucket-credentials
Wenn für den Ziel-Bucket ein CA-Zertifikat eingerichtet werden muss, erstellen Sie ein Secret mit dem CA-Zertifikat des Buckets:
kubectl create secret generic -n PROJECT_NAMESPACE s3-bucket-ca \ --from-literal=ca.crt=REMOTE_CERTIFICATE
Ersetzen Sie
REMOTE_CERTIFICATE
durch das CA-Zertifikat des Ziel-Remote-Buckets.Legen Sie die folgende Umgebungsvariable mit dem Speicherort des Zertifikats fest:
DST_CA_CERTIFICATE=PROJECT_NAMESPACE/s3-bucket-ca
Übertragung von Audit-Logs einrichten
Führen Sie die folgenden Schritte aus, um die Übertragung von Audit-Logs vom Quell-Bucket zum Ziel-Bucket für die Sicherung zu konfigurieren:
Erstellen Sie ein Dienstkonto für den Übertragungsjob für Audit-Logs. Sie müssen dem Dienstkonto Zugriff gewähren, damit es den Quell-Bucket und die Secrets im Projekt-Namespace lesen kann.
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
Erstellen Sie einen Übertragungsjob, um Protokolle in den Remote-Bucket zu exportieren:
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
Nachdem Sie den Job geplant haben, können Sie den Datenübertragungsstatus überwachen, indem Sie den Jobnamen als audit-log-transfer-job
und Ihren Projektnamespace angeben.
Der Job wird beendet, wenn alle Daten in den Ziel-Bucket übertragen wurden.
Audit-Logs aus der Sicherung wiederherstellen
Dieser Abschnitt enthält die Schritte zum Wiederherstellen von Audit-Logs aus der Sicherung.
Hinweise
Bevor Sie Ihre Audit-Logs wiederherstellen können, benötigen Sie Zugriff auf die folgenden Ressourcen:
- Der Bucket für die Sicherung von Audit-Logs mit einem Endpunkt, einem geheimen Zugriffsschlüssel und einer Zugriffsschlüssel-ID.
- Ein Zertifikat der Zertifizierungsstelle (CA) für das Speichersystem.
- Ein funktionierender Cluster.
Bucket zum Wiederherstellen von Audit-Logs erstellen
Führen Sie die folgenden Schritte aus, um einen Bucket zum Speichern der wiederhergestellten Audit-Logs zu erstellen:
Erstellen Sie die Bucket-Ressource und das Dienstkonto:
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
Der Bucket und das Secret werden erstellt.
Erstellten Bucket ansehen:
kubectl get bucket audit-logs-loki-restore -n PROJECT_NAMESPACE
Die Ausgabe muss wie im folgenden Beispiel aussehen. Die Erstellung des Buckets kann einige Minuten dauern.
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.
In der Ausgabe muss der von Ihnen erstellte Bucket angezeigt werden. Die Erstellung des Buckets kann einige Minuten dauern.
Legen Sie anhand der Informationen aus der Ausgabe die folgenden Umgebungsvariablen fest:
DST_BUCKET= RESTORE_BUCKET_NAME DST_ENDPOINT = RESTORE_ENDPOINT DST_PATH= RESTORE_FULLY_QUALIFIED_BUCKET_NAME
Ersetzen Sie Folgendes:
RESTORE_BUCKET_NAME
: Der Name des Buckets für die Wiederherstellung von Audit-Logs. Dieser Wert befindet sich im FeldBUCKET NAME
der Ausgabe.RESTORE_ENDPOINT
: Der Endpunkt des Buckets für die Wiederherstellung von Audit-Logs. Dieser Wert befindet sich im FeldENDPOINT
der Ausgabe.RESTORE_FULLY_QUALIFIED_BUCKET_NAME
: Der vollständig qualifizierte Name des Buckets für die Wiederherstellung von Audit-Logs. Dieser Wert befindet sich im FeldFULLY-QUALIFIED-BUCKET-NAME
der Ausgabe.
Rufen Sie das Secret des erstellten Buckets ab:
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'
Die Ausgabe muss wie im folgenden Beispiel aussehen, in dem der Secret-Name des Buckets angezeigt wird:
"object-storage-key-sysstd-sa-olxv4dnwrwul4bshu37ikebgovrnvl773owaw3arx225rfi56swa"
Legen Sie mit dem Secret-Namen aus der Ausgabe die folgenden Umgebungsvariablen fest:
DST_SECRET_NAME=RESTORE_SECRET_NAME DST_CREDENTIALS="PROJECT_NAMESPACE/RESTORE_SECRET_NAME"
Ersetzen Sie
RESTORE_SECRET_NAME
durch den Secret-Namen, den Sie in der vorherigen Ausgabe erhalten haben.Erstellen Sie das Secret für das CA-Zertifikat des Speichersystems:
kubectl create secret generic -n PROJECT_NAMESPACE audit-log-loki-restore-ca \ --from-literal=ca.crt=CERTIFICATE
Ersetzen Sie
CERTIFICATE
durch das CA-Zertifikat des Speichersystems.Legen Sie die folgende Umgebungsvariable für den Speicherort des Zertifikats fest:
DST_CA_CERTIFICATE=PROJECT_NAMESPACE/audit-log-loki-restore-ca
Anmeldedaten für den Zugriff auf den Sicherungs-Bucket abrufen
Führen Sie die folgenden Schritte aus, um die Anmeldedaten des Buckets zu finden, der die Sicherung der Audit-Logs enthält:
Legen Sie die folgenden Umgebungsvariablen fest:
SRC_ACCESS_KEY_ID= ACCESS_KEY SRC_SECRET_ACCESS_KEY= ACCESS_SECRET SRC_ENDPOINT= REMOTE_ENDPOINT SRC_PATH= REMOTE_BUCKET_NAME
Ersetzen Sie Folgendes:
ACCESS_KEY
: Der Zugriffsschlüssel des Sicherungs-Buckets.ACCESS_SECRET
: Das Zugriffs-Secret des Sicherungs-Buckets.REMOTE_ENDPOINT
: der Endpunkt des Sicherungs-Buckets.REMOTE_BUCKET_NAME
: der Name des Sicherungs-Buckets.
Erstellen Sie ein Secret für den Sicherungs-Bucket:
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
Legen Sie die folgende Umgebungsvariable mit dem Speicherort des Secrets fest:
SRC_CREDENTIALS=PROJECT_NAMESPACE/s3-backup-bucket-credentials
Erstellen Sie ein Secret mit dem CA-Zertifikat des Buckets:
kubectl create secret generic -n PROJECT_NAMESPACE s3-backup-bucket-ca \ --from-literal=ca.crt=BACKUP_CERTIFICATE
Ersetzen Sie
BACKUP_CERTIFICATE
durch das CA-Zertifikat des Sicherungs-Buckets.Legen Sie die folgende Umgebungsvariable mit dem Speicherort des Zertifikats fest:
SRC_CA_CERTIFICATE=PROJECT_NAMESPACE/s3-backup-bucket-ca
Wiederherstellung von Audit-Logs einrichten
Führen Sie die folgenden Schritte aus, um die Übertragung von Audit-Logs aus dem Sicherungs-Bucket in den Wiederherstellungs-Bucket zu konfigurieren:
Erstellen Sie ein Dienstkonto für den Übertragungsjob für Audit-Logs. Sie müssen dem Dienstkonto Zugriff zum Lesen und Schreiben aus dem Bucket und den Secrets im Projekt-Namespace gewähren.
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
Erstellen Sie einen Übertragungsjob, um Logs aus dem Remote-Sicherungs-Bucket wiederherzustellen:
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
Nachdem Sie den Job geplant haben, können Sie den Datenübertragungsstatus überwachen, indem Sie den Jobnamen als audit-log-restore-job
und Ihren Projektnamespace angeben.
Der Job wird beendet, wenn alle Daten in den Ziel-Bucket übertragen wurden.
Audit-Log-Instanz bereitstellen, um auf die Logs zuzugreifen
Sie müssen eine Loki-Instanz, auch Audit-Log-Instanz genannt, bereitstellen, um auf die wiederhergestellten Logs zuzugreifen.
Verwenden Sie zum Einrichten der Audit-Log-Instanz das Dienstkonto audit-log-restore-sa
, das Sie für den Wiederherstellungsjob erstellt haben. Führen Sie die folgenden Schritte aus, um die Instanz bereitzustellen:
Erstellen Sie ein
ConfigMap
-Objekt für die Konfiguration der Instanz: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
Stellen Sie die Instanz mit einem Dienst für den Zugriff auf Protokolle aus dem Wiederherstellungs-Bucket bereit:
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
Monitoring-Instanz konfigurieren, um Logs aus der Datenquelle anzusehen
Führen Sie die folgenden Schritte aus, um Grafana (auch Monitoring-Instanz genannt) so zu konfigurieren, dass die wiederhergestellten Audit-Logs aus der Audit-Log-Instanz angezeigt werden:
- Rufen Sie den Endpunkt der Monitoring-Instanz Ihres Projekts auf.
- Klicken Sie im Navigationsmenü der Benutzeroberfläche auf Verwaltung > Datenquellen.
- Klicken Sie auf Neue Datenquelle hinzufügen.
- Wählen Sie auf der Seite Datenquelle hinzufügen die Option Loki aus.
- Geben Sie auf der Seite Einstellungen den Wert
Audit Logs - Restore
für das Feld Name ein. Geben Sie im Abschnitt HTTP den folgenden Wert für das Feld URL ein:
http://audit-logs-loki-restore.PROJECT_NAMESPACE.svc:3100
Geben Sie im Abschnitt Benutzerdefinierte HTTP-Header die folgenden Werte in die entsprechenden Felder ein:
- Header:
X-Scope-OrgID
- Wert:
infra-obs
- Header:
In Abbildung 1 wird Loki als Option auf der Seite Datenquelle hinzufügen der Monitoring-Instanz-UI angezeigt. In Abbildung 2 sehen Sie die Felder, die Sie auf der Seite Einstellungen ausfüllen müssen, um die Datenquelle einzurichten.
Abbildung 1. Die Seite Datenquelle hinzufügen in der Benutzeroberfläche der Monitoring-Instanz.
Abbildung 2. Die Seite Einstellungen in der Benutzeroberfläche der Monitoring-Instanz.
Die Option Audit Logs - Restore
ist jetzt als Datenquelle im Log-Explorer verfügbar.