Add outline tags to Kubernetes course

This commit is contained in:
Jerome Petazzoni
2020-04-27 07:35:14 -05:00
parent 102aef5ac5
commit 7257a5c594
66 changed files with 384 additions and 2 deletions
+5
View File
@@ -129,3 +129,8 @@ installed and set up `kubectl` to communicate with your cluster.
```
]
???
:EN:- Securely accessing internal services
:FR:- Accès sécurisé aux services internes
+5
View File
@@ -87,3 +87,8 @@
- Tunnels are also fine
(e.g. [k3s](https://k3s.io/) uses a tunnel to allow each node to contact the API server)
???
:EN:- Ensuring API server availability
:FR:- Assurer la disponibilité du serveur API
+5
View File
@@ -381,3 +381,8 @@ We demonstrated *update* and *watch* semantics.
- if the pod has special constraints that can't be met
- if the scheduler is not running (!)
???
:EN:- Kubernetes architecture review
:FR:- Passage en revue de l'architecture de Kubernetes
+10
View File
@@ -676,3 +676,13 @@ class: extra-details
- Both are available as standalone programs, or as plugins for `kubectl`
(`kubectl` plugins can be installed and managed with `krew`)
???
:EN:- Authentication and authorization in Kubernetes
:EN:- Role-Based Access Control (RBAC)
:EN:- Restricting permissions with Service Accounts
:FR:- Identification et droits d'accès dans Kubernetes
:FR:- Le modèle RBAC *(Role-Based Access Control)*
:FR:- Restreindre les permissions grâce aux *Service Accounts*
+5
View File
@@ -187,3 +187,8 @@ class: extra-details
- If we write these manifests ourselves, we can use all features and options
- We'll see later how to do that!
???
:EN:- Running batch and cron jobs
:FR:- Tâches périodiques *(cron)* et traitement par lots *(batch)*
+5
View File
@@ -257,3 +257,8 @@ This is the TLS bootstrap mechanism, step by step.
- [kubeadm token](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-token/) command
- [kubeadm join](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/) command (has details about [the join workflow](https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/#join-workflow))
???
:EN:- Leveraging TLS bootstrap to join nodes
:FR:- Ajout de nœuds grâce au *TLS bootstrap*
+5
View File
@@ -142,3 +142,8 @@ The list includes the following providers:
- [configuration](https://kubernetes.io/docs/concepts/cluster-administration/cloud-providers/) (mainly for OpenStack)
- [deployment](https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/)
???
:EN:- The Cloud Controller Manager
:FR:- Le *Cloud Controller Manager*
+5
View File
@@ -364,3 +364,8 @@ docker run --rm --net host -v $PWD:/vol \
- [bivac](https://github.com/camptocamp/bivac)
Backup Interface for Volumes Attached to Containers
???
:EN:- Backing up clusters
:FR:- Politiques de sauvegarde
+8
View File
@@ -165,3 +165,11 @@ class: extra-details
- Security advantage (stronger isolation between pods)
Check [this blog post](http://jpetazzo.github.io/2019/02/13/running-kubernetes-without-nodes-with-kiyot/) for more details.
???
:EN:- Capacity planning
:EN:- Cluster sizing and scaling
:FR:- Dimensionnement des clusters
:FR:- Comportement en cas de famine
+8
View File
@@ -501,3 +501,11 @@ class: extra-details
- Then upgrading kubeadm to 1.16.X, etc.
- **Make sure to read the release notes before upgrading!**
???
:EN:- Best practices for cluster upgrades
:EN:- Example: upgrading a kubeadm cluster
:FR:- Bonnes pratiques pour la mise à jour des clusters
:FR:- Exemple : mettre à jour un cluster kubeadm
+5
View File
@@ -574,3 +574,8 @@ done
- This could be useful for embedded platforms with very limited resources
(or lab environments for learning purposes)
???
:EN:- Configuring CNI plugins
:FR:- Configurer des plugins CNI
+5
View File
@@ -401,3 +401,8 @@ class: pic
- IP addresses are associated with *pods*, not with individual containers
Both diagrams used with permission.
???
:EN:- Kubernetes concepts
:FR:- Kubernetes en théorie
+10
View File
@@ -547,3 +547,13 @@ spec:
- With RBAC, we can authorize a user to access configmaps, but not secrets
(since they are two different kinds of resources)
???
:EN:- Managing application configuration
:EN:- The downward API
:EN:- Config Maps and Secrets
:FR:- Gérer la configuration des applications
:FR:- La *downward API*
:FR:- Utiliser les *Config Maps* et *Secrets*
+5
View File
@@ -263,3 +263,8 @@ spec:
#name: web-xyz1234567-pqr89
EOF
```
???
:EN:- Control plane authentication
:FR:- Sécurisation du plan de contrôle
+5
View File
@@ -424,3 +424,8 @@ To be usable in real environments, we would need to add:
- we get strong security *and* convenience
- Systems like Vault also have certificate issuance mechanisms
???
:EN:- Generating user certificates with the CSR API
:FR:- Génération de certificats utilisateur avec la CSR API
+5
View File
@@ -688,3 +688,8 @@ class: extra-details
(by setting their label accordingly)
- This gives us building blocks for canary and blue/green deployments
???
:EN:- Scaling with Daemon Sets
:FR:- Utilisation de Daemon Sets
+5
View File
@@ -172,3 +172,8 @@ The dashboard will then ask you which authentication you want to use.
- It introduces new failure modes
(for instance, if you try to apply YAML from a link that's no longer valid)
???
:EN:- The Kubernetes dashboard
:FR:- Le *dashboard* Kubernetes
+5
View File
@@ -26,3 +26,8 @@
- When we want to change some resource, we update the *spec*
- Kubernetes will then *converge* that resource
???
:EN:- Declarative vs imperative models
:FR:- Modèles déclaratifs et impératifs
+5
View File
@@ -823,3 +823,8 @@ class: extra-details
(it could be as a bare process, or in a container/pod using the host network)
- ... And it expects to be listening on port 6443 with TLS
???
:EN:- Building our own cluster from scratch
:FR:- Construire son cluster à la main
+11
View File
@@ -344,3 +344,14 @@ class: extra-details
- [Dynamic Admission Controllers](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/)
- [Aggregation Layer](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/)
???
:EN:- Extending the Kubernetes API
:EN:- Custom Resource Definitions (CRDs)
:EN:- The aggregation layer
:EN:- Admission control and webhooks
:FR:- Comment étendre l'API Kubernetes
:FR:- Les CRDs *(Custom Resource Definitions)*
:FR:- Extension via *aggregation layer*, *admission control*, *webhooks*
+5
View File
@@ -237,3 +237,8 @@
- Gitkube can also deploy Helm charts
(instead of raw YAML files)
???
:EN:- GitOps
:FR:- GitOps
+5
View File
@@ -333,3 +333,8 @@ class: extra-details
(and have gcr.io/pause take care of the reaping)
- Discussion of this in [Video - 10 Ways to Shoot Yourself in the Foot with Kubernetes, #9 Will Surprise You](https://www.youtube.com/watch?v=QKI-JRs2RIE)
???
:EN:- Adding healthchecks to an app
:FR:- Ajouter des *healthchecks* à une application
+5
View File
@@ -282,3 +282,8 @@ If the Redis process becomes unresponsive, it will be killed.
- check the timestamp of that file from an exec probe
- Writing logs (and checking them from the probe) also works
???
:EN:- Using healthchecks to improve availability
:FR:- Utiliser des *healthchecks* pour amémliorer la disponibilité
+5
View File
@@ -237,3 +237,8 @@ We see the components mentioned above: `Chart.yaml`, `templates/`, `values.yaml`
- This can be use for database migrations, backups, notifications, smoke tests ...
- Hooks named `test` are executed only when running `helm test RELEASE-NAME`
???
:EN:- Helm charts format
:FR:- Le format des *Helm charts*
+5
View File
@@ -218,3 +218,8 @@ have details about recommended annotations and labels.
```
]
???
:EN:- Creating basic Helm charts
:FR:- Création de *Helm charts* basiques
+5
View File
@@ -577,3 +577,8 @@ We can look at the definition, but it's fairly complex ...
- We can change the number of workers with `replicaCount`
- And much more!
???
:EN:- Creating better Helm charts
:FR:- Création de *Helm charts* avancés
+10
View File
@@ -417,3 +417,13 @@ All unspecified values will take the default values defined in the chart.
```
]
???
:EN:- Helm concepts
:EN:- Installing software with Helm
:FR:- Fonctionnement général de Helm
:FR:- Installer des composants via Helm
:FR:- Comment
+5
View File
@@ -232,3 +232,8 @@ The chart is in a structured format, but it's entirely captured in this JSON.
(including the full source of the chart, and the values used)
- This allows arbitrary rollbacks, as well as tweaking values even without having access to the source of the chart (or the chart repo) used for deployment
???
:EN:- Deep dive into Helm internals
:FR:- Fonctionnement interne de Helm
+5
View File
@@ -306,3 +306,8 @@ This can also be set with `--cpu-percent=`.
-->
]
???
:EN:- Auto-scaling resources
:FR:- *Auto-scaling* (dimensionnement automatique) des ressources
+5
View File
@@ -718,3 +718,8 @@ We also need:
(create them, promote them, delete them ...)
For inspiration, check [flagger by Weave](https://github.com/weaveworks/flagger).
???
:EN:- The Ingress resource
:FR:- La ressource *ingress*
+5
View File
@@ -155,3 +155,8 @@ For critical services, we might want to precisely control the update process.
- Even better if it's combined with DNS integration
(to facilitate name → ClusterIP resolution)
???
:EN:- Interconnecting clusters
:FR:- Interconnexion de clusters
+5
View File
@@ -516,3 +516,8 @@ We'll see later how to address that shortcoming.
- Until 30 seconds later, when the grace period expires
- The pod is then killed, and `kubectl logs` exits
???
:EN:- Running pods and deployments
:FR:- Créer un pod et un déploiement
+10
View File
@@ -438,3 +438,13 @@ class: extra-details
- They can also handle TLS certificates, URL rewriting ...
- They require an *Ingress Controller* to function
???
:EN:- Service discovery and load balancing
:EN:- Accessing pods through services
:EN:- Service types: ClusterIP, NodePort, LoadBalancer
:FR:- Exposer un service
:FR:- Différents types de services : ClusterIP, NodePort, LoadBalancer
:FR:- Utiliser CoreDNS pour la *service discovery*
+5
View File
@@ -578,3 +578,8 @@ $ curl -k https://10.96.0.1
- Code running in pods can connect to services using their name
(e.g. https://kubernetes/...)
???
:EN:- Getting started with kubectl
:FR:- Se familiariser avec kubectl
+5
View File
@@ -145,3 +145,8 @@ class: extra-details
- Some solutions can fill multiple roles
(e.g. kube-router can be set up to provide the pod network and/or network policies and/or replace kube-proxy)
???
:EN:- The Kubernetes network model
:FR:- Le modèle réseau de Kubernetes
+5
View File
@@ -242,3 +242,8 @@ https://@@GITREPO@@/blob/8279a3bce9398f7c1a53bdd95187c53eda4e6435/dockercoins/wo
A drawing area should show up, and after a few seconds, a blue
graph will appear.
???
:EN:- Running a sample app
:FR:- Lancer une application de démo
+5
View File
@@ -199,3 +199,8 @@
]
Note: it might take a minute or two for the worker to start.
???
:EN:- Packaging and running apps with Kustomize
:FR:- *Packaging* d'applications avec Kustomize
+5
View File
@@ -195,3 +195,8 @@ class: extra-details
- Maximum length isn't defined
(dozens of kilobytes is fine, hundreds maybe not so much)
???
:EN:- Labels and annotations
:FR:- *Labels* et annotations
+5
View File
@@ -246,3 +246,8 @@
(when we can't or won't dedicate a whole disk to a volume)
- It's possible to mix both (using distinct Storage Classes)
???
:EN:- Local persistent volumes
:FR:- Volumes locaux persistents
+5
View File
@@ -193,3 +193,8 @@ class: extra-details
]
We can now utilize the cluster exactly as if we're logged into a node, except that it's remote.
???
:EN:- Working with remote Kubernetes clusters
:FR:- Travailler avec des *clusters* distants
+5
View File
@@ -145,3 +145,8 @@ But this is outside of the scope of this chapter.
The YAML file that we used creates all the resources in the
`default` namespace, for simplicity. In a real scenario, you will
create the resources in the `kube-system` namespace or in a dedicated namespace.
???
:EN:- Centralizing logs
:FR:- Centraliser les logs
+5
View File
@@ -149,3 +149,8 @@ Exactly what we need!
-->
]
???
:EN:- Viewing pod logs from the CLI
:FR:- Consulter les logs des pods depuis la CLI
+5
View File
@@ -80,3 +80,8 @@ If it shows our nodes and their CPU and memory load, we're good!
- kube-resource-report can generate HTML reports
(https://github.com/hjacobs/kube-resource-report)
???
:EN:- The *core metrics pipeline*
:FR:- Le *core metrics pipeline*
+5
View File
@@ -532,3 +532,8 @@ Sometimes it works, sometimes it doesn't. Why?
- We want to automate all these steps
- We want something that works on all networks
???
:EN:- Connecting nodes ands pods
:FR:- Interconnecter les nœuds et les pods
+4
View File
@@ -365,3 +365,7 @@ Note: we could have used `--namespace=default` for the same result.
- Pro-tip: install it on your machine during the next break!
???
:EN:- Organizing resources with Namespaces
:FR:- Organiser les ressources avec des *namespaces*
+5
View File
@@ -446,3 +446,8 @@ troubleshoot easily, without having to poke holes in our firewall.
- a [very good talk about network policies](https://www.youtube.com/watch?list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb&v=3gGpMmYeEO8) at KubeCon North America 2017
- a repository of [ready-to-use recipes](https://github.com/ahmetb/kubernetes-network-policy-recipes) for network policies
???
:EN:- Network isolation with Network Policies
:FR:- Protection réseau avec les *network policies*
+5
View File
@@ -377,3 +377,8 @@ class: extra-details
- It should now say "Signature Verified"
]
???
:EN:- Authenticating with OIDC
:FR:- S'identifier avec OIDC
+5
View File
@@ -356,3 +356,8 @@ class: extra-details
(this is used e.g. by the metrics server)
- [This documentation page](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#choosing-a-method-for-adding-custom-resources) compares the features of CRDs and API aggregation
???
:EN:- Guidelines to design our own operators
:FR:- Comment concevoir nos propres opérateurs
+8
View File
@@ -615,3 +615,11 @@ After the Kibana UI loads, we need to click around a bit
*Operators can be very powerful.
<br/>
But we need to know exactly the scenarios that they can handle.*
???
:EN:- Kubernetes operators
:EN:- Deploying ElasticSearch with ECK
:FR:- Les opérateurs
:FR:- Déployer ElasticSearch avec ECK
+5
View File
@@ -162,3 +162,8 @@ Yes, this may take a little while to update. *(Narrator: it was DNS.)*
--
*Alright, we're back to where we started, when we were running on a single node!*
???
:EN:- Running our demo app on Kubernetes
:FR:- Faire tourner l'application de démo sur Kubernetes
+5
View File
@@ -180,3 +180,8 @@ class: extra-details
]
As always, the [documentation](https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/) has useful extra information and pointers.
???
:EN:- Owners and dependents
:FR:- Liens de parenté entre les ressources
+5
View File
@@ -531,3 +531,8 @@ class: extra-details
```
]
???
:EN:- Pod Security Policies
:FR:- Les *Pod Security Policies*
+7
View File
@@ -678,3 +678,10 @@ were inspired by [Portworx examples on Katacoda](https://katacoda.com/portworx/s
- [HA PostgreSQL on Kubernetes with Portworx](https://www.katacoda.com/portworx/scenarios/px-k8s-postgres-all-in-one)
(with adaptations to use a Stateful Set and simplify PostgreSQL's setup)
???
:EN:- Highly available persistent volumes
:EN:- Use-case: deploying Postgres with high availability
:FR:- Cas d'usage : déployer un serveur SQL haute disponibilité
+5
View File
@@ -562,3 +562,8 @@ class: extra-details
Don't panic if you don't know these tools!
...But make sure at least one person in your team is on it 💯
???
:EN:- Collecting metrics with Prometheus
:FR:- Collecter des métriques avec Prometheus
+12
View File
@@ -536,3 +536,15 @@ services.nodeports 0 0
- [static demo](https://hjacobs.github.io/kube-resource-report/sample-report/output/index.html)
|
[live demo](https://kube-resource-report.demo.j-serv.de/applications.html)
???
:EN:- Allocate and limit container resources
:EN:- Define default resource limits
:EN:- Enforce resource quotas
:EN:- Resource management in practice
:FR:- Allouer et limiter les ressources des conteneurs
:FR:- Définition de ressources par défaut
:FR:- Quotas de ressources
:FR:- Conseils pratiques
+9
View File
@@ -437,3 +437,12 @@ class: extra-details
]
]
???
:EN:- Rolling updates
:EN:- Rolling back a bad deployment
:FR:- Mettre à jour un déploiement
:FR:- Concept de *rolling update* et *rollback*
:FR:- Paramétrer la vitesse de déploiement
+5
View File
@@ -200,3 +200,8 @@ Now we can access the IP addresses of our services through `$HASHER` and `$RNG`.
- `rng` is not (it should take about 700 milliseconds if there are 10 workers)
- Something is wrong with `rng`, but ... what?
???
:EN:- Scaling up our demo app
:FR:- *Scale up* de l'application de démo
+5
View File
@@ -92,3 +92,8 @@
- For a longer list, check the Kubernetes documentation:
<br/>
it has a great guide to [pick the right solution](https://kubernetes.io/docs/setup/#production-environment) to set up Kubernetes.
???
:EN:- Overview of the kubeadm installer
:FR:- Survol de kubeadm
+6 -1
View File
@@ -250,6 +250,11 @@ with a cloud provider
- OVH
- Scaleway (private beta)
- Scaleway
- ...
???
:EN:- Installing a managed cluster
:FR:- Installer un cluster infogéré
+5
View File
@@ -108,3 +108,8 @@
<br/>(do they need training?)
- etc.
???
:EN:- Various ways to set up Kubernetes
:FR:- Différentes méthodes pour installer Kubernetes
+6 -1
View File
@@ -115,4 +115,9 @@
There might be a long pause before the first layer is pulled,
because the API behind `docker pull` doesn't allow to stream build logs, and there is no feedback during the build.
It is possible to view the build logs by setting up an account on [ctr.run](https://ctr.run/).
It is possible to view the build logs by setting up an account on [ctr.run](https://ctr.run/).
???
:EN:- Shipping images to Kubernetes
:FR:- Déployer des images sur notre cluster
+7
View File
@@ -600,3 +600,10 @@ This will trigger the following actions.
5. The PersistentVolumeClaimBinder associates the PVs and the PVCs together.
6. PVCs are now bound, the Pods can start.
???
:EN:- Deploying stateful applications
:EN:- Use-case: running Consul with a Stateful Set
:FR:- Déployer des applications persistante
:FR:- Example: lancer Consul avec un Sateful Set
+5
View File
@@ -239,3 +239,8 @@ The `-node1` suffix was added automatically by kubelet.
If we delete the pod (with `kubectl delete`), it will be recreated immediately.
To delete the pod, we need to delete (or move) the manifest file.
???
:EN:- Static pods
:FR:- Les *static pods*
+5
View File
@@ -88,3 +88,8 @@ class: extra-details
```
- Check [the documentation](https://kubernetes.io/docs/setup/release/version-skew-policy/#kubectl) for the whole story about compatibility
???
:EN:- Kubernetes versioning and compatibility
:FR:- Les versions de Kubernetes et leur compatibilité
+8
View File
@@ -467,3 +467,11 @@ spec:
- A volume survives across container restarts
- A volume is destroyed (or, for remote storage, detached) when the pod is destroyed
???
:EN:- Sharing data between containers with volumes
:EN:- When and how to use Init Containers
:FR:- Partager des données grâce aux volumes
:FR:- Quand et comment utilise un *Init Container*
+5
View File
@@ -164,3 +164,8 @@ class: extra-details
- this is typical for things that may be deployed multiple times
- example: applications (production, staging, feature branches ...)
???
:EN:- Deploying with YAML manifests
:FR:- Déployer avec des *manifests* YAML