diff --git a/slides/k8s/cainjector.md b/slides/k8s/cainjector.md new file mode 100644 index 00000000..a6b5f4d7 --- /dev/null +++ b/slides/k8s/cainjector.md @@ -0,0 +1,60 @@ +## CA injector - overview + +- The Kubernetes API server can invoke various webhooks: + + - conversion webhooks (registered in CustomResourceDefinitions) + + - mutation webhooks (registered in MutatingWebhookConfigurations) + + - validation webhooks (registered in ValidatingWebhookConfiguration) + +- These webhooks must be served over TLS + +- These webhooks must use valid TLS certificates + +--- + +## Webhook certificates + +- Option 1: certificate issued by a global CA + + - doesn't work with internal services +
+ (their CN must be `..svc`) + +- Option 2: certificate issued by private CA + CA certificate in system store + + - requires access to API server certificates tore + + - generally not doable on managed Kubernetes clusters + +- Option 3: certificate issued by private CA + CA certificate in `caBundle` + + - pass the CA certificate in `caBundle` field +
+ (in CRD or webhook manifests) + + - can be managed automatically by cert-manager + +--- + +## CA injector - details + +- Add annotation to *injectable* resource + (CustomResouceDefinition, MutatingWebhookConfiguration, ValidatingWebhookConfiguration) + +- Annotation refers to the thing holding the certificate: + + - `cert-manager.io/inject-ca-from: /` + + - `cert-manager.io/inject-ca-from-secret: /` + + - `cert-manager.io/inject-apiserver-ca: true` (use API server CA) + +- When injecting from a Secret, the Secret must have a special annotation: + + `cert-manager.io/allow-direct-injection: "true"` + +- See [cert-manager documentation][docs] for details + +[docs]: https://cert-manager.io/docs/concepts/ca-injector/ diff --git a/slides/kube-adv.yml b/slides/kube-adv.yml index 00fde2a9..229e0179 100644 --- a/slides/kube-adv.yml +++ b/slides/kube-adv.yml @@ -62,6 +62,7 @@ content: - k8s/ingress-tls.md - k8s/ingress-advanced.md - k8s/cert-manager.md + - k8s/cainjector.md - k8s/eck.md - #7 - k8s/admission.md diff --git a/slides/kube-selfpaced.yml b/slides/kube-selfpaced.yml index d62cc332..3fd1dca5 100644 --- a/slides/kube-selfpaced.yml +++ b/slides/kube-selfpaced.yml @@ -84,6 +84,7 @@ content: - k8s/ingress-advanced.md - k8s/ingress-tls.md - k8s/cert-manager.md + - k8s/cainjector.md - k8s/kustomize.md - k8s/helm-intro.md - k8s/helm-chart-format.md