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