mirror of https://github.com/istio/istio.io.git
Provision a certificate to an application through a sidecar (#6554)
* Provision a certificate to an application through a sidecar * Revisions based on the review comments * Move the document location * Revise install command based on the review comments * Make the blog more concise * Explain the use case * Revised based on comments * Revise based on review comments * Revised based on the review comments * Revise based on review comments * Revise based on review comments * Revise based on review comments * Revise based on review comments * Revise based on review comments
This commit is contained in:
parent
8dffa0c468
commit
3182bba545
|
@ -0,0 +1,50 @@
|
||||||
|
---
|
||||||
|
title: Provision a certificate and key for an application without sidecars
|
||||||
|
description: A mechanism to acquire and share an application certificate and key through mounted files.
|
||||||
|
publishdate: 2020-03-25
|
||||||
|
attribution: Lei Tang (Google)
|
||||||
|
keywords: [certificate,sidecar]
|
||||||
|
target_release: 1.5
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< boilerplate experimental-feature-warning >}}
|
||||||
|
|
||||||
|
Istio sidecars obtain their certificates using
|
||||||
|
the secret discovery service.
|
||||||
|
A service in the service mesh may not need (or want) an Envoy sidecar
|
||||||
|
to handle its traffic. In this case, the service will need
|
||||||
|
to obtain a certificate itself if it wants to connect to other TLS or mutual TLS secured services.
|
||||||
|
|
||||||
|
For a service with no need of a sidecar to manage its traffic, a sidecar can nevertheless still be
|
||||||
|
deployed only to provision the private key and certificates through
|
||||||
|
the CSR flow from the CA and then share the certificate with the service
|
||||||
|
through a mounted file in `tmpfs`.
|
||||||
|
We have used Prometheus as our example application for provisioning
|
||||||
|
a certificate using this mechanism.
|
||||||
|
|
||||||
|
In the example application (i.e., Prometheus), a sidecar is added to the
|
||||||
|
Prometheus deployment by setting the flag `.Values.prometheus.provisionPrometheusCert`
|
||||||
|
to `true` (this flag is set to true by default in an Istio installation).
|
||||||
|
This deployed sidecar will then request and share a
|
||||||
|
certificate with Prometheus.
|
||||||
|
|
||||||
|
The key and certificate provisioned for the example application
|
||||||
|
are mounted in the directory `/etc/istio-certs/`.
|
||||||
|
We can list the key and certificate provisioned for the application by
|
||||||
|
running the following command:
|
||||||
|
|
||||||
|
{{< text bash >}}
|
||||||
|
$ kubectl exec -it `kubectl get pod -l app=prometheus -n istio-system -o jsonpath='{.items[0].metadata.name}'` -c prometheus -n istio-system -- ls -la /etc/istio-certs/
|
||||||
|
{{< /text >}}
|
||||||
|
|
||||||
|
The output from the above command should include non-empty key and certificate files, similar to the following:
|
||||||
|
|
||||||
|
{{< text plain >}}
|
||||||
|
-rwxr-xr-x 1 root root 2209 Feb 25 13:06 cert-chain.pem
|
||||||
|
-rwxr-xr-x 1 root root 1679 Feb 25 13:06 key.pem
|
||||||
|
-rwxr-xr-x 1 root root 1054 Feb 25 13:06 root-cert.pem
|
||||||
|
{{< /text >}}
|
||||||
|
|
||||||
|
If you want to use this mechanism to provision a certificate
|
||||||
|
for your own application, take a look at our
|
||||||
|
[Prometheus example application]({{< github_blob >}}/manifests/istio-telemetry/prometheus/templates/deployment.yaml) and simply follow the same pattern.
|
Loading…
Reference in New Issue