Zertifikate für die Request-Tracing-Sidecar-Injektion

Der Sidecar-Injektionsmechanismus, der aktiviert wird, wenn --set httpHeaderInjectorWebhook.enabled=true bei der Installation des Agents verwendet wird, erstellt ein selbstsigniertes Zertifikat und verwendet ein ClusterRole, das Schreibzugriff auf Secret und MutatingWebhookConfiguration Objekte im Kubernetes-Cluster gewährt.

Wenn es aus Sicherheitsgründen unerwünscht ist, ClusterRoles zu erstellen, die clusterweite Schreibrechte gewähren, oder es alternative Möglichkeiten gibt, ein Zertifikat bereitzustellen:

  1. Erzeugen Sie ein selbstsigniertes Zertifikat lokal.

  2. Verwenden Sie den k8s cert-manager (falls er bereits im Cluster vorhanden ist) mit einem ClusterIssuer.

Erzeugen Sie ein Zertifikat lokal

Um ein Zertifikat lokal zu erzeugen, führen Sie die folgenden Schritte aus:

  1. Laden Sie das Skript zur Zertifikatserstellung herunter und führen Sie es aus, um eine Helm-Values-Datei (tls_values.yaml) mit dem richtigen Zertifikat zu erstellen:

    wget https://raw.githubusercontent.com/StackVista/http-header-injector/main/scripts/generate_ca_cert.sh
    chmod +x generate_ca_cert.sh
    ./generate_ca_cert.sh <helm-agent-release-name> <helm-agent-namespace>

    Stellen Sie sicher, dass Sie den Release-Namen verwenden, der im helm-Befehl verwendet wird, und den Namespace, andernfalls ist das Zertifikat ungültig.

  2. Installieren Sie den Agent, indem Sie die zusätzliche Konfiguration durch Hinzufügen von --set httpHeaderInjectorWebhook.enabled=true -f tls_values.yaml zum Helm-Befehl vornehmen.

Erzeugen Sie ein Zertifikat mit dem cert-manager

Wenn Ihr Cluster den cert-manager installiert hat und ein ClusterIssuer konfiguriert ist, ist es möglich, das vom ClusterIssuer ausgestellte Zertifikat im Agent für den Sidecar-Injektor zu verwenden. Fügen Sie dazu die folgenden Befehlszeilenargumente hinzu, um den Agenten zu installieren: --set httpHeaderInjectorWebhook.enabled=true --set-string httpHeaderInjectorWebhook.webhook.tls.mode="cert-manager" --set-string httpHeaderInjectorWebhook.webhook.tls.certManager.issuer="<my-cluster-issuer>". Stellen Sie sicher, dass Sie my-cluster-issuer durch den Namen des Ausstellers in Ihrem Cluster ersetzen.