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:
-
Erzeugen Sie ein selbstsigniertes Zertifikat lokal.
-
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:
-
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.
-
Installieren Sie den Agent, indem Sie die zusätzliche Konfiguration durch Hinzufügen von
--set httpHeaderInjectorWebhook.enabled=true -f tls_values.yamlzum 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.