Ansichten:
Die Gardener-Architektur trennt die Steuerungsebene (läuft auf dem Seed-Cluster) von der Arbeitsebene (dem Shoot-Cluster). Um Audit-Logs zu sammeln, müssen Sie das Helm-Chart an beiden Standorten installieren.

Bevor Sie beginnen

  • Zugriff auf Seed-Cluster: Sie müssen die Berechtigung haben, auf den Gardener-Seed-Cluster zuzugreifen und Helm-Charts im Shoot-Namespace zu installieren.
  • Zugriff auf Shoot-Cluster: Sie müssen die Berechtigung haben, Helm-Charts im Shoot-Cluster zu installieren.
  • Kubectl-Konfiguration: Kubectl muss mit Kontexten für sowohl Seed- als auch Shoot-Cluster konfiguriert werden.

Schritt 1: Installieren Sie den Shoot-Namespace auf dem Seed-Cluster

Installieren Sie das Helm-Chart im Shoot-Namespace auf dem Seed-Cluster. Dies installiert die Komponenten zur Sammlung von Audit-Logs.
  1. Erstellen Sie das seed-overrides.yaml:
    visionOne:
      # Your Vision One bootstrap token
      bootstrapToken: "your-bootstrap-token"
      endpoint: "https://api.xdr.trendmicro.com/external/v2/direct/vcs/external/vcs"
    ​
    # Enable audit log collection
    auditLogCollection:
      enabled: true
      provider: gardener
      gardener:
        # IMPORTANT: Set to true for seed cluster installation
        seedCluster: true
  2. Helm-Chart installieren:
    # Switch to seed cluster context
    kubectl config use-context <seed-cluster-context>
    ​
    # Install in the shoot namespace
    helm install \
      --values seed-overrides.yaml \
      --namespace shoot--<project>--<shoot-name> \
      trendmicro \
      https://github.com/trendmicro/visionone-container-security-helm/archive/main.tar.gz
    ​

Schritt 2: Helm auf dem Shoot-Cluster installieren

Installieren Sie das Helm-Chart im Shoot-Cluster. Dadurch werden die standardmäßigen Container Security-Komponenten bereitgestellt.
  1. Erstellen shoot-overrides.yaml:
    visionOne:
      # Your Vision One bootstrap token (same as seed cluster)
      bootstrapToken: "your-bootstrap-token"
      endpoint: "https://api.xdr.trendmicro.com/external/v2/direct/vcs/external/vcs"
    ​
    # Enable audit log collection
    auditLogCollection:
      enabled: true
      provider: gardener
      gardener:
        # IMPORTANT: Set to false (or omit) for shoot cluster installation
        seedCluster: false
  2. Helm-Chart installieren:
    # Switch to shoot cluster context
    kubectl config use-context <shoot-cluster-context>
    ​
    # Install in trendmicro-system namespace
    helm install \
      --values shoot-overrides.yaml \
      --namespace trendmicro-system \
      --create-namespace \
      trendmicro \
      https://github.com/trendmicro/visionone-container-security-helm/archive/main.tar.gz

Installieren Sie mehrere Shoots auf demselben Seed

Um das Helm-Chart in mehreren Shoot-Namensräumen auf demselben Seed-Cluster zu installieren, müssen Sie für jede Installation unterschiedliche Ports konfigurieren, um Portkonflikte zu vermeiden.
Die Seed-Cluster-Komponenten verwenden hostNetwork: true, um auf den Seed-Cluster-API-Server zuzugreifen. Das bedeutet, dass Pods direkt an die Host-Knoten-Ports gebunden werden. Wenn zwei Installationen dieselben Ports verwenden, schlägt die zweite Installation mit folgendem Fehler fehl: bind: address already in use.
  1. Installieren Sie den ersten Shoot-Namespace für die Standardports:
    # seed-values-shoot1.yaml
    visionOne:
      bootstrapToken: "your-bootstrap-token-for-shoot-1"
      endpoint: "https://api.xdr.trendmicro.com/external/v2/direct/vcs/external/vcs"
      auditLogCollector:
        webhookPort: 8030
      apiServerModifier:
        metricsPort: 8040
        healthProbePort: 8050
        webhookPort: 8060
      policyOperator:
        servicePort: 8070
        metricsPort: 8080
        healthProbePort: 8090
    ​
    auditLogCollection:
      enabled: true
      provider: gardener
      gardener:
        seedCluster: true
  2. Installieren Sie den zweiten Shoot-Namespace für verschiedene Ports:
    # seed-values-shoot2.yaml
    visionOne:
      bootstrapToken: "your-bootstrap-token-for-shoot-2"
      endpoint: "https://api.xdr.trendmicro.com/external/v2/direct/vcs/external/vcs"
      auditLogCollector:
        webhookPort: 8130
      apiServerModifier:
        metricsPort: 8140
        healthProbePort: 8150
        webhookPort: 8160
      policyOperator:
        servicePort: 8170
        metricsPort: 8180
        healthProbePort: 8190
    ​
    auditLogCollection:
      enabled: true
      provider: gardener
      gardener:
        seedCluster: true

Portreferenz und Konfigurationsunterschiede

Die folgende Tabelle zeigt die Referenz für die Portkonfiguration:
Komponente
Porttyp
Standard
Zweite Installation
Dritte Installation
auditLogSammler
webhookPort
8030
8130
8230
apiServerModifier
metricsPort
8040
8140
8240
apiServerModifier
healthProbePort
8050
8150
8250
apiServerModifier
webhookPort
8060
8160
8260
policyOperator
servicePort
8070
8170
8270
policyOperator
metricsPort
8080
8180
8280
policyOperator
healthProbePort
8090
8190
8290
Die folgende Tabelle zeigt die Unterschiede zwischen den Konfigurationen:
Einstellung
Seed-Cluster
Cluster schießen
auditLogCollection.gardener.seedCluster
true
false
Installationsnamespace
shoot--<project>--<name>
trendmicro-system
Komponenten bereitgestellt
audit-log-sammler, api-server-modifikator, policy-operator
Standard V1CS-Komponenten
Portkonfiguration erforderlich
Ja (für Multi-Shoot-Namespace)
No
Host-Netzwerk
Ja
No

Fehlerbehebung

Portkonfliktfehler
Der folgende Fehler weist auf einen Portkonflikt hin:
0/1 nodes are available: 1 node(s) didn't have free ports for the requested pod ports
Überprüfen Sie, ob eine andere Installation dieselben Ports verwendet, und aktualisieren Sie die Portkonfiguration in Ihrer Werte-Datei.