From a216b57a58480398994a8d8a0723ddd8ef845ff8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Sun, 27 Oct 2024 17:18:18 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=AE=20Content=20for=20Ubisoft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- slides/_redirects | 1 + slides/intro-fullday.yml | 72 ------- slides/intro-selfpaced.yml | 73 ------- slides/intro-twodays.yml | 81 -------- slides/k8s/architecture.md | 170 +++++++++++++++- slides/k8s/concepts-k8s.md | 334 ------------------------------- slides/k8s/edge.md | 16 ++ slides/k8s/kubectl-run.md | 2 +- slides/k8s/kubectlget.md | 2 +- slides/kadm-fullday.yml | 65 ------ slides/kadm-twodays.yml | 96 --------- slides/kube-adv.yml | 93 --------- slides/kube-fullday.yml | 136 ------------- slides/kube-halfday.yml | 91 --------- slides/kube-selfpaced.yml | 175 ---------------- slides/kube-twodays.yml | 136 ------------- slides/kube.yml | 106 ++++++++++ slides/logistics-template.md | 64 +----- slides/shared/chat-room-teams.md | 8 + slides/shared/prereqs.md | 2 +- slides/swarm-fullday.yml | 72 ------- slides/swarm-halfday.yml | 71 ------- slides/swarm-selfpaced.yml | 80 -------- slides/swarm-video.yml | 75 ------- 24 files changed, 306 insertions(+), 1715 deletions(-) delete mode 100644 slides/intro-fullday.yml delete mode 100644 slides/intro-selfpaced.yml delete mode 100644 slides/intro-twodays.yml create mode 100644 slides/k8s/edge.md delete mode 100644 slides/kadm-fullday.yml delete mode 100644 slides/kadm-twodays.yml delete mode 100644 slides/kube-adv.yml delete mode 100644 slides/kube-fullday.yml delete mode 100644 slides/kube-halfday.yml delete mode 100644 slides/kube-selfpaced.yml delete mode 100644 slides/kube-twodays.yml create mode 100644 slides/kube.yml create mode 100644 slides/shared/chat-room-teams.md delete mode 100644 slides/swarm-fullday.yml delete mode 100644 slides/swarm-halfday.yml delete mode 100644 slides/swarm-selfpaced.yml delete mode 100644 slides/swarm-video.yml diff --git a/slides/_redirects b/slides/_redirects index 68a7c0ca..492fe0c0 100644 --- a/slides/_redirects +++ b/slides/_redirects @@ -2,6 +2,7 @@ #/ /kube-halfday.yml.html 200! #/ /kube-fullday.yml.html 200! #/ /kube-twodays.yml.html 200! +/ /kube.yml.html 200! # And this allows to do "git clone https://container.training". /info/refs service=git-upload-pack https://github.com/jpetazzo/container.training/info/refs?service=git-upload-pack diff --git a/slides/intro-fullday.yml b/slides/intro-fullday.yml deleted file mode 100644 index 7d78c850..00000000 --- a/slides/intro-fullday.yml +++ /dev/null @@ -1,72 +0,0 @@ -title: | - Introduction - to Containers - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -- logistics.md -- containers/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - #- containers/Docker_Overview.md - #- containers/Docker_History.md - - containers/Training_Environment.md - #- containers/Installing_Docker.md - - containers/First_Containers.md - - containers/Background_Containers.md - #- containers/Start_And_Attach.md - - containers/Naming_And_Inspecting.md - #- containers/Labels.md - - containers/Getting_Inside.md - - containers/Initial_Images.md -- - - containers/Building_Images_Interactively.md - - containers/Building_Images_With_Dockerfiles.md - - containers/Cmd_And_Entrypoint.md - - containers/Copying_Files_During_Build.md - - containers/Exercise_Dockerfile_Basic.md -- - - containers/Container_Networking_Basics.md - #- containers/Network_Drivers.md - - containers/Local_Development_Workflow.md - - containers/Container_Network_Model.md - - shared/yaml.md - - containers/Compose_For_Dev_Stacks.md - - containers/Exercise_Composefile.md -- - - containers/Multi_Stage_Builds.md - #- containers/Publishing_To_Docker_Hub.md - - containers/Dockerfile_Tips.md - - containers/Exercise_Dockerfile_Advanced.md - #- containers/Docker_Machine.md - #- containers/Advanced_Dockerfiles.md - #- containers/Buildkit.md - #- containers/Init_Systems.md - #- containers/Application_Configuration.md - #- containers/Logging.md - #- containers/Namespaces_Cgroups.md - #- containers/Copy_On_Write.md - #- containers/Containers_From_Scratch.md - #- containers/Container_Engines.md - #- containers/Pods_Anatomy.md - #- containers/Ecosystem.md - #- containers/Orchestration_Overview.md - - shared/thankyou.md - - containers/links.md diff --git a/slides/intro-selfpaced.yml b/slides/intro-selfpaced.yml deleted file mode 100644 index d2f0b65c..00000000 --- a/slides/intro-selfpaced.yml +++ /dev/null @@ -1,73 +0,0 @@ -title: | - Introduction - to Containers - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person - -content: -- shared/title.md -# - shared/logistics.md -- containers/intro.md -- shared/about-slides.md -#- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - containers/Docker_Overview.md - - containers/Docker_History.md - - containers/Training_Environment.md - - containers/Installing_Docker.md - - containers/First_Containers.md - - containers/Background_Containers.md - - containers/Start_And_Attach.md -- - containers/Initial_Images.md - - containers/Building_Images_Interactively.md - - containers/Building_Images_With_Dockerfiles.md - - containers/Cmd_And_Entrypoint.md - - containers/Copying_Files_During_Build.md - - containers/Exercise_Dockerfile_Basic.md -- - containers/Multi_Stage_Builds.md - - containers/Publishing_To_Docker_Hub.md - - containers/Dockerfile_Tips.md - - containers/Exercise_Dockerfile_Advanced.md -- - containers/Naming_And_Inspecting.md - - containers/Labels.md - - containers/Getting_Inside.md -- - containers/Container_Networking_Basics.md - - containers/Network_Drivers.md - - containers/Container_Network_Model.md - #- containers/Connecting_Containers_With_Links.md - - containers/Ambassadors.md -- - containers/Local_Development_Workflow.md - - containers/Windows_Containers.md - - containers/Working_With_Volumes.md - - shared/yaml.md - - containers/Compose_For_Dev_Stacks.md - - containers/Exercise_Composefile.md - - containers/Docker_Machine.md -- - containers/Advanced_Dockerfiles.md - - containers/Buildkit.md - - containers/Init_Systems.md - - containers/Application_Configuration.md - - containers/Logging.md - - containers/Resource_Limits.md -- - containers/Namespaces_Cgroups.md - - containers/Copy_On_Write.md - #- containers/Containers_From_Scratch.md -- - containers/Container_Engines.md - - containers/Pods_Anatomy.md - - containers/Ecosystem.md - - containers/Orchestration_Overview.md - - shared/thankyou.md - - containers/links.md diff --git a/slides/intro-twodays.yml b/slides/intro-twodays.yml deleted file mode 100644 index 5391283b..00000000 --- a/slides/intro-twodays.yml +++ /dev/null @@ -1,81 +0,0 @@ -title: | - Introduction - to Containers - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -- logistics.md -- containers/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- # DAY 1 - - containers/Docker_Overview.md - #- containers/Docker_History.md - - containers/Training_Environment.md - - containers/First_Containers.md - - containers/Background_Containers.md - - containers/Initial_Images.md -- - - containers/Building_Images_Interactively.md - - containers/Building_Images_With_Dockerfiles.md - - containers/Cmd_And_Entrypoint.md - - containers/Copying_Files_During_Build.md - - containers/Exercise_Dockerfile_Basic.md -- - - containers/Dockerfile_Tips.md - - containers/Multi_Stage_Builds.md - - containers/Publishing_To_Docker_Hub.md - - containers/Exercise_Dockerfile_Advanced.md -- - - containers/Naming_And_Inspecting.md - - containers/Labels.md - - containers/Start_And_Attach.md - - containers/Getting_Inside.md - - containers/Resource_Limits.md -- # DAY 2 - - containers/Container_Networking_Basics.md - - containers/Network_Drivers.md - - containers/Container_Network_Model.md -- - - containers/Local_Development_Workflow.md - - containers/Working_With_Volumes.md - - shared/yaml.md - - containers/Compose_For_Dev_Stacks.md - - containers/Exercise_Composefile.md -- - - containers/Installing_Docker.md - - containers/Container_Engines.md - - containers/Init_Systems.md - - containers/Advanced_Dockerfiles.md - - containers/Buildkit.md -- - - containers/Application_Configuration.md - - containers/Logging.md - - containers/Orchestration_Overview.md -- - - shared/thankyou.md - - containers/links.md -#- - #- containers/Docker_Machine.md - #- containers/Ambassadors.md - #- containers/Namespaces_Cgroups.md - #- containers/Copy_On_Write.md - #- containers/Containers_From_Scratch.md - #- containers/Pods_Anatomy.md - #- containers/Ecosystem.md diff --git a/slides/k8s/architecture.md b/slides/k8s/architecture.md index 7091c20f..72ad4f19 100644 --- a/slides/k8s/architecture.md +++ b/slides/k8s/architecture.md @@ -203,12 +203,10 @@ What does that mean? ## Let's experiment a bit! -- For this section, connect to the first node of the `test` cluster +- For this section, we can use any cluster .lab[ -- SSH to the first node of the test cluster - - Check that the cluster is operational: ```bash kubectl get nodes @@ -418,7 +416,7 @@ class: extra-details --- -# Other control plane components +## Other control plane components - API server ✔️ @@ -466,6 +464,170 @@ class: extra-details - if the scheduler is not running (!) +--- + +class: extra-details + +## How many nodes should a cluster have? + +- There is no particular constraint + + (no need to have an odd number of nodes for quorum) + +- A cluster can have zero node + + (but then it won't be able to start any pods) + +- For testing and development, having a single node is fine + +- For production, make sure that you have extra capacity + + (so that your workload still fits if you lose a node or a group of nodes) + +- Kubernetes is tested with [up to 5000 nodes](https://kubernetes.io/docs/setup/best-practices/cluster-large/) + + (however, running a cluster of that size requires a lot of tuning) + +--- + +class: extra-details + +## Do we need to run Docker at all? + +No! + +-- + +- The Docker Engine used to be the default option to run containers with Kubernetes + +- Support for Docker (specifically: dockershim) was removed in Kubernetes 1.24 + +- We can leverage other pluggable runtimes through the *Container Runtime Interface* + +- We could also use `rkt` ("Rocket") from CoreOS (deprecated) + +--- + +class: extra-details + +## Some runtimes available through CRI + +- [containerd](https://github.com/containerd/containerd/blob/master/README.md) + + - maintained by Docker, IBM, and community + - used by Docker Engine, microk8s, k3s, GKE; also standalone + - comes with its own CLI, `ctr` + +- [CRI-O](https://github.com/cri-o/cri-o/blob/master/README.md): + + - maintained by Red Hat, SUSE, and community + - used by OpenShift and Kubic + - designed specifically as a minimal runtime for Kubernetes + +- [And more](https://kubernetes.io/docs/setup/production-environment/container-runtimes/) + +--- + +class: extra-details + +## Do we need to run Docker at all? + +Yes! + +-- + +- In this workshop, we run our app on a single node first + +- We will need to build images and ship them around + +- We can do these things without Docker +
+ (but with some languages/frameworks, it might be much harder) + +- Docker is still the most stable container engine today +
+ (but other options are maturing very quickly) + +--- + +class: extra-details + +## Do we need to run Docker at all? + +- On our Kubernetes clusters: + + *Not anymore* + +- On our development environments, CI pipelines ... : + + *Yes, almost certainly* + +--- + +## Interacting with Kubernetes + +- We will interact with our Kubernetes cluster through the Kubernetes API + +- The Kubernetes API is (mostly) RESTful + +- It allows us to create, read, update, delete *resources* + +- A few common resource types are: + + - node (a machine — physical or virtual — in our cluster) + + - pod (group of containers running together on a node) + + - service (stable network endpoint to connect to one or multiple containers) + +--- + +class: pic + +![Node, pod, container](images/k8s-arch3-thanks-weave.png) + +--- + +## Scaling + +- How would we scale the pod shown on the previous slide? + +- **Do** create additional pods + + - each pod can be on a different node + + - each pod will have its own IP address + +- **Do not** add more NGINX containers in the pod + + - all the NGINX containers would be on the same node + + - they would all have the same IP address +
(resulting in `Address alreading in use` errors) + +--- + +## Together or separate + +- Should we put e.g. a web application server and a cache together? +
+ ("cache" being something like e.g. Memcached or Redis) + +- Putting them **in the same pod** means: + + - they have to be scaled together + + - they can communicate very efficiently over `localhost` + +- Putting them **in different pods** means: + + - they can be scaled separately + + - they must communicate over remote IP addresses +
(incurring more latency, lower performance) + +- Both scenarios can make sense, depending on our goals + ??? :EN:- Kubernetes architecture review diff --git a/slides/k8s/concepts-k8s.md b/slides/k8s/concepts-k8s.md index 0d69318e..a0410058 100644 --- a/slides/k8s/concepts-k8s.md +++ b/slides/k8s/concepts-k8s.md @@ -113,340 +113,6 @@ class: pic (e.g. database replication, failover, etc.) ---- - -## Kubernetes architecture - ---- - -class: pic - -![haha only kidding](images/k8s-arch1.png) - ---- - -## Kubernetes architecture - -- Ha ha ha ha - -- OK, I was trying to scare you, it's much simpler than that ❤️ - ---- - -class: pic - -![that one is more like the real thing](images/k8s-arch2.png) - ---- - -## Credits - -- The first schema is a Kubernetes cluster with storage backed by multi-path iSCSI - - (Courtesy of [Yongbok Kim](https://www.yongbok.net/blog/)) - -- The second one is a simplified representation of a Kubernetes cluster - - (Courtesy of [Imesh Gunaratne](https://medium.com/containermind/a-reference-architecture-for-deploying-wso2-middleware-on-kubernetes-d4dee7601e8e)) - ---- - -## Kubernetes architecture: the nodes - -- The nodes executing our containers run a collection of services: - - - a container Engine (typically Docker) - - - kubelet (the "node agent") - - - kube-proxy (a necessary but not sufficient network component) - -- Nodes were formerly called "minions" - - (You might see that word in older articles or documentation) - ---- - -## Kubernetes architecture: the control plane - -- The Kubernetes logic (its "brains") is a collection of services: - - - the API server (our point of entry to everything!) - - - core services like the scheduler and controller manager - - - `etcd` (a highly available key/value store; the "database" of Kubernetes) - -- Together, these services form the control plane of our cluster - -- The control plane is also called the "master" - ---- - -class: pic - -![One of the best Kubernetes architecture diagrams available](images/k8s-arch4-thanks-luxas.png) - ---- - -class: extra-details - -## Running the control plane on special nodes - -- It is common to reserve a dedicated node for the control plane - - (Except for single-node development clusters, like when using minikube) - -- This node is then called a "master" - - (Yes, this is ambiguous: is the "master" a node, or the whole control plane?) - -- Normal applications are restricted from running on this node - - (By using a mechanism called ["taints"](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)) - -- When high availability is required, each service of the control plane must be resilient - -- The control plane is then replicated on multiple nodes - - (This is sometimes called a "multi-master" setup) - ---- - -class: extra-details - -## Running the control plane outside containers - -- The services of the control plane can run in or out of containers - -- For instance: since `etcd` is a critical service, some people - deploy it directly on a dedicated cluster (without containers) - - (This is illustrated on the first "super complicated" schema) - -- In some hosted Kubernetes offerings (e.g. AKS, GKE, EKS), the control plane is invisible - - (We only "see" a Kubernetes API endpoint) - -- In that case, there is no "master node" - -*For this reason, it is more accurate to say "control plane" rather than "master."* - ---- - -class: pic -![](images/control-planes/single-node-dev.svg) - ---- - -class: pic -![](images/control-planes/managed-kubernetes.svg) - ---- - -class: pic -![](images/control-planes/single-control-and-workers.svg) - ---- - -class: pic -![](images/control-planes/stacked-control-plane.svg) - ---- - -class: pic -![](images/control-planes/non-dedicated-stacked-nodes.svg) - ---- - -class: pic -![](images/control-planes/advanced-control-plane.svg) - ---- - -class: pic -![](images/control-planes/advanced-control-plane-split-events.svg) - ---- - -class: extra-details - -## How many nodes should a cluster have? - -- There is no particular constraint - - (no need to have an odd number of nodes for quorum) - -- A cluster can have zero node - - (but then it won't be able to start any pods) - -- For testing and development, having a single node is fine - -- For production, make sure that you have extra capacity - - (so that your workload still fits if you lose a node or a group of nodes) - -- Kubernetes is tested with [up to 5000 nodes](https://kubernetes.io/docs/setup/best-practices/cluster-large/) - - (however, running a cluster of that size requires a lot of tuning) - ---- - -class: extra-details - -## Do we need to run Docker at all? - -No! - --- - -- The Docker Engine used to be the default option to run containers with Kubernetes - -- Support for Docker (specifically: dockershim) was removed in Kubernetes 1.24 - -- We can leverage other pluggable runtimes through the *Container Runtime Interface* - -- We could also use `rkt` ("Rocket") from CoreOS (deprecated) - ---- - -class: extra-details - -## Some runtimes available through CRI - -- [containerd](https://github.com/containerd/containerd/blob/master/README.md) - - - maintained by Docker, IBM, and community - - used by Docker Engine, microk8s, k3s, GKE; also standalone - - comes with its own CLI, `ctr` - -- [CRI-O](https://github.com/cri-o/cri-o/blob/master/README.md): - - - maintained by Red Hat, SUSE, and community - - used by OpenShift and Kubic - - designed specifically as a minimal runtime for Kubernetes - -- [And more](https://kubernetes.io/docs/setup/production-environment/container-runtimes/) - ---- - -class: extra-details - -## Do we need to run Docker at all? - -Yes! - --- - -- In this workshop, we run our app on a single node first - -- We will need to build images and ship them around - -- We can do these things without Docker -
- (but with some languages/frameworks, it might be much harder) - -- Docker is still the most stable container engine today -
- (but other options are maturing very quickly) - ---- - -class: extra-details - -## Do we need to run Docker at all? - -- On our Kubernetes clusters: - - *Not anymore* - -- On our development environments, CI pipelines ... : - - *Yes, almost certainly* - ---- - -## Interacting with Kubernetes - -- We will interact with our Kubernetes cluster through the Kubernetes API - -- The Kubernetes API is (mostly) RESTful - -- It allows us to create, read, update, delete *resources* - -- A few common resource types are: - - - node (a machine — physical or virtual — in our cluster) - - - pod (group of containers running together on a node) - - - service (stable network endpoint to connect to one or multiple containers) - ---- - -class: pic - -![Node, pod, container](images/k8s-arch3-thanks-weave.png) - ---- - -## Scaling - -- How would we scale the pod shown on the previous slide? - -- **Do** create additional pods - - - each pod can be on a different node - - - each pod will have its own IP address - -- **Do not** add more NGINX containers in the pod - - - all the NGINX containers would be on the same node - - - they would all have the same IP address -
(resulting in `Address alreading in use` errors) - ---- - -## Together or separate - -- Should we put e.g. a web application server and a cache together? -
- ("cache" being something like e.g. Memcached or Redis) - -- Putting them **in the same pod** means: - - - they have to be scaled together - - - they can communicate very efficiently over `localhost` - -- Putting them **in different pods** means: - - - they can be scaled separately - - - they must communicate over remote IP addresses -
(incurring more latency, lower performance) - -- Both scenarios can make sense, depending on our goals - ---- - -## Credits - -- The first diagram is courtesy of Lucas Käldström, in [this presentation](https://speakerdeck.com/luxas/kubeadm-cluster-creation-internals-from-self-hosting-to-upgradability-and-ha) - - - it's one of the best Kubernetes architecture diagrams available! - -- The second diagram is courtesy of Weave Works - - - a *pod* can have multiple containers working together - - - IP addresses are associated with *pods*, not with individual containers - -Both diagrams used with permission. - ??? :EN:- Kubernetes concepts diff --git a/slides/k8s/edge.md b/slides/k8s/edge.md new file mode 100644 index 00000000..ca3c6247 --- /dev/null +++ b/slides/k8s/edge.md @@ -0,0 +1,16 @@ +# Kubernetes on Edge (FIXME) + +--- +--- +--- +--- +--- +--- +--- +--- +--- + +??? + +:EN:- Deploying Kubernetes on edge +:FR:- Kubernetes en bordure diff --git a/slides/k8s/kubectl-run.md b/slides/k8s/kubectl-run.md index d63715a6..e6be712c 100644 --- a/slides/k8s/kubectl-run.md +++ b/slides/k8s/kubectl-run.md @@ -1,4 +1,4 @@ -# Running our first containers on Kubernetes +# Running containers on Kubernetes - First things first: we cannot run a container diff --git a/slides/k8s/kubectlget.md b/slides/k8s/kubectlget.md index efc9679c..433bd662 100644 --- a/slides/k8s/kubectlget.md +++ b/slides/k8s/kubectlget.md @@ -1,4 +1,4 @@ -# First contact with `kubectl` +# `kubectl` - `kubectl` is (almost) the only tool we'll need to talk to Kubernetes diff --git a/slides/kadm-fullday.yml b/slides/kadm-fullday.yml deleted file mode 100644 index b4f3c193..00000000 --- a/slides/kadm-fullday.yml +++ /dev/null @@ -1,65 +0,0 @@ -title: | - Kubernetes - for Admins and Ops - -#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" -chat: "In person!" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced -- static-pods-exercise - -content: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - - k8s/prereqs-advanced.md - - shared/handson.md - - k8s/architecture.md - #- k8s/internal-apis.md - - k8s/deploymentslideshow.md - - k8s/dmuc-easy.md -- - - k8s/dmuc-medium.md - - k8s/dmuc-hard.md - #- k8s/multinode.md - #- k8s/cni.md - - k8s/cni-internals.md - #- k8s/interco.md -- - - k8s/apilb.md - #- k8s/setup-overview.md - #- k8s/setup-devel.md - #- k8s/setup-managed.md - #- k8s/setup-selfhosted.md - - k8s/cluster-upgrade.md - - k8s/cluster-backup.md - - k8s/staticpods.md -- - #- k8s/cloud-controller-manager.md - #- k8s/bootstrap.md - - k8s/control-plane-auth.md - - k8s/pod-security-intro.md - - k8s/pod-security-policies.md - - k8s/pod-security-admission.md - - k8s/user-cert.md - - k8s/csr-api.md - - k8s/openid-connect.md -- - #- k8s/lastwords-admin.md - - k8s/links.md - - shared/thankyou.md diff --git a/slides/kadm-twodays.yml b/slides/kadm-twodays.yml deleted file mode 100644 index 345407da..00000000 --- a/slides/kadm-twodays.yml +++ /dev/null @@ -1,96 +0,0 @@ -title: | - Kubernetes - for administrators - and operators - -#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" -chat: "In person!" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -# DAY 1 -- - k8s/prereqs-advanced.md - - shared/handson.md - - k8s/architecture.md - - k8s/internal-apis.md - - k8s/deploymentslideshow.md - - k8s/dmuc-easy.md -- - k8s/dmuc-medium.md - - k8s/dmuc-hard.md - #- k8s/multinode.md - #- k8s/cni.md - - k8s/cni-internals.md - #- k8s/interco.md -- - k8s/apilb.md - - k8s/setup-overview.md - #- k8s/setup-devel.md - - k8s/setup-managed.md - - k8s/setup-selfhosted.md - - k8s/cluster-upgrade.md - - k8s/staticpods.md -- - k8s/cluster-backup.md - - k8s/cloud-controller-manager.md - - k8s/healthchecks.md - - k8s/healthchecks-more.md -# DAY 2 -- - k8s/kubercoins.md - - k8s/logs-cli.md - - k8s/logs-centralized.md - - k8s/authn-authz.md - - k8s/user-cert.md - - k8s/csr-api.md -- - k8s/openid-connect.md - - k8s/control-plane-auth.md - ###- k8s/bootstrap.md - - k8s/netpol.md - - k8s/pod-security-intro.md - - k8s/pod-security-policies.md - - k8s/pod-security-admission.md -- - k8s/resource-limits.md - - k8s/metrics-server.md - - k8s/cluster-sizing.md - - k8s/disruptions.md - - k8s/horizontal-pod-autoscaler.md -- - k8s/prometheus.md - #- k8s/prometheus-stack.md - - k8s/extending-api.md - - k8s/crd.md - - k8s/operators.md - - k8s/eck.md - ###- k8s/operators-design.md - ###- k8s/operators-example.md -# CONCLUSION -- - k8s/lastwords.md - - k8s/links.md - - shared/thankyou.md - - | - # (All content after this slide is bonus material) -# EXTRA -- - k8s/volumes.md - - k8s/configuration.md - - k8s/secrets.md - - k8s/statefulsets.md - - k8s/consul.md - - k8s/pv-pvc-sc.md - - k8s/volume-claim-templates.md - #- k8s/portworx.md - - k8s/openebs.md - - k8s/stateful-failover.md diff --git a/slides/kube-adv.yml b/slides/kube-adv.yml deleted file mode 100644 index 627d71bc..00000000 --- a/slides/kube-adv.yml +++ /dev/null @@ -1,93 +0,0 @@ -title: | - Advanced - Kubernetes - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -#- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- #1 - - k8s/prereqs-advanced.md - - shared/handson.md - - k8s/architecture.md - - k8s/internal-apis.md - - k8s/deploymentslideshow.md - - k8s/dmuc-easy.md -- #2 - - k8s/dmuc-medium.md - - k8s/dmuc-hard.md - #- k8s/multinode.md - #- k8s/cni.md - #- k8s/interco.md - - k8s/cni-internals.md -- #3 - - k8s/apilb.md - - k8s/control-plane-auth.md - - | - # (Extra content) - - k8s/staticpods.md - - k8s/cluster-upgrade.md -- #4 - - k8s/kustomize.md - - k8s/helm-intro.md - - k8s/helm-chart-format.md - - k8s/helm-create-basic-chart.md - - | - # (Extra content) - - k8s/helm-create-better-chart.md - - k8s/helm-dependencies.md - - k8s/helm-values-schema-validation.md - - k8s/helm-secrets.md - - k8s/ytt.md -- #5 - - k8s/extending-api.md - - k8s/operators.md - - k8s/sealed-secrets.md - - k8s/crd.md -- #6 - - k8s/ingress-tls.md - - k8s/ingress-advanced.md - #- k8s/ingress-canary.md - - k8s/cert-manager.md - - k8s/cainjector.md - - k8s/eck.md -- #7 - - k8s/admission.md - - k8s/kyverno.md -- #8 - - k8s/aggregation-layer.md - - k8s/metrics-server.md - - k8s/prometheus.md - - k8s/prometheus-stack.md - - k8s/hpa-v2.md -- #9 - - k8s/operators-design.md - - k8s/operators-example.md - - k8s/kubebuilder.md - - k8s/events.md - - k8s/finalizers.md - - | - # (Extra content) - - k8s/owners-and-dependents.md - - k8s/apiserver-deepdive.md - #- k8s/record.md - - shared/thankyou.md - diff --git a/slides/kube-fullday.yml b/slides/kube-fullday.yml deleted file mode 100644 index 04eda83d..00000000 --- a/slides/kube-fullday.yml +++ /dev/null @@ -1,136 +0,0 @@ -title: | - Deploying and Scaling Microservices - with Kubernetes - -#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" -chat: "In person!" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - - shared/prereqs.md - - shared/handson.md - #- shared/webssh.md - - shared/connecting.md - #- k8s/versions-k8s.md - - shared/sampleapp.md - #- shared/composescale.md - #- shared/hastyconclusions.md - - shared/composedown.md - - k8s/concepts-k8s.md - - k8s/kubectlget.md -- - - k8s/kubectl-run.md - #- k8s/batch-jobs.md - - shared/declarative.md - - k8s/declarative.md - - k8s/deploymentslideshow.md - - k8s/kubectlexpose.md - - k8s/service-types.md - - k8s/kubenet.md - - k8s/shippingimages.md - #- k8s/buildshiprun-selfhosted.md - - k8s/buildshiprun-dockerhub.md - - k8s/ourapponkube.md - #- k8s/exercise-wordsmith.md -- - - k8s/labels-annotations.md - - k8s/kubectl-logs.md - - k8s/logs-cli.md - - k8s/yamldeploy.md - - k8s/namespaces.md - - k8s/setup-overview.md - - k8s/setup-devel.md - #- k8s/setup-managed.md - #- k8s/setup-selfhosted.md -- - - k8s/dashboard.md - - k8s/rollout.md - - k8s/healthchecks.md - - k8s/ingress.md - #- k8s/volumes.md - - k8s/configuration.md - - k8s/secrets.md - - k8s/openebs.md - #- k8s/k9s.md - #- k8s/tilt.md - #- k8s/kubectlscale.md - #- k8s/scalingdockercoins.md - #- shared/hastyconclusions.md - #- k8s/daemonset.md - #- shared/yaml.md - #- k8s/exercise-yaml.md - #- k8s/localkubeconfig.md - #- k8s/access-eks-cluster.md - #- k8s/accessinternal.md - #- k8s/kubectlproxy.md - #- k8s/healthchecks-more.md - #- k8s/record.md - #- k8s/ingress-tls.md - #- k8s/kustomize.md - #- k8s/helm-intro.md - #- k8s/helm-chart-format.md - #- k8s/helm-create-basic-chart.md - #- k8s/helm-create-better-chart.md - #- k8s/helm-dependencies.md - #- k8s/helm-values-schema-validation.md - #- k8s/helm-secrets.md - #- k8s/exercise-helm.md - #- k8s/ytt.md - #- k8s/gitlab.md - #- k8s/create-chart.md - #- k8s/create-more-charts.md - #- k8s/netpol.md - #- k8s/authn-authz.md - #- k8s/user-cert.md - #- k8s/csr-api.md - #- k8s/openid-connect.md - #- k8s/pod-security-intro.md - #- k8s/pod-security-policies.md - #- k8s/pod-security-admission.md - #- k8s/exercise-configmap.md - #- k8s/build-with-docker.md - #- k8s/build-with-kaniko.md - #- k8s/logs-centralized.md - #- k8s/prometheus.md - #- k8s/prometheus-stack.md - #- k8s/statefulsets.md - #- k8s/consul.md - #- k8s/pv-pvc-sc.md - #- k8s/volume-claim-templates.md - #- k8s/portworx.md - #- k8s/openebs.md - #- k8s/stateful-failover.md - #- k8s/extending-api.md - #- k8s/crd.md - #- k8s/admission.md - #- k8s/operators.md - #- k8s/operators-design.md - #- k8s/operators-example.md - #- k8s/staticpods.md - #- k8s/finalizers.md - #- k8s/owners-and-dependents.md - #- k8s/gitworkflows.md -- - #- k8s/whatsnext.md - - k8s/lastwords.md - #- k8s/links.md - - shared/thankyou.md diff --git a/slides/kube-halfday.yml b/slides/kube-halfday.yml deleted file mode 100644 index b22a1f99..00000000 --- a/slides/kube-halfday.yml +++ /dev/null @@ -1,91 +0,0 @@ -title: | - Kubernetes 101 - - -#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/training-20180413-paris)" -chat: "In person!" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -#- logistics.md -# Bridget-specific; others use logistics.md -- logistics-bridget.md -- k8s/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - shared/prereqs.md - - shared/handson.md - #- shared/webssh.md - - shared/connecting.md - - k8s/versions-k8s.md - - shared/sampleapp.md -# Bridget doesn't go into as much depth with compose - #- shared/composescale.md - #- shared/hastyconclusions.md - - shared/composedown.md - - k8s/concepts-k8s.md - - shared/declarative.md - - k8s/declarative.md - #- k8s/kubenet.md - - k8s/kubectlget.md - - k8s/setup-overview.md - #- k8s/setup-devel.md - #- k8s/setup-managed.md - #- k8s/setup-selfhosted.md -- - k8s/kubectl-run.md - #- k8s/batch-jobs.md - #- k8s/labels-annotations.md - - k8s/kubectl-logs.md - - k8s/deploymentslideshow.md - - k8s/kubectlexpose.md - #- k8s/service-types.md - - k8s/shippingimages.md - #- k8s/buildshiprun-selfhosted.md - - k8s/buildshiprun-dockerhub.md - - k8s/ourapponkube.md - #- k8s/localkubeconfig.md - #- k8s/access-eks-cluster.md - #- k8s/accessinternal.md - #- k8s/kubectlproxy.md -- - k8s/dashboard.md - #- k8s/k9s.md - #- k8s/tilt.md - #- k8s/kubectlscale.md - - k8s/scalingdockercoins.md - - shared/hastyconclusions.md - - k8s/daemonset.md - - k8s/rollout.md - #- k8s/record.md -- - k8s/logs-cli.md -# Bridget hasn't added EFK yet - #- k8s/logs-centralized.md - - k8s/namespaces.md - - k8s/helm-intro.md - #- k8s/helm-chart-format.md - - k8s/helm-create-basic-chart.md - #- k8s/helm-create-better-chart.md - #- k8s/helm-dependencies.md - #- k8s/helm-values-schema-validation.md - #- k8s/helm-secrets.md - #- k8s/kustomize.md - #- k8s/ytt.md - #- k8s/netpol.md - - k8s/whatsnext.md -# - k8s/links.md -# Bridget-specific - - k8s/links-bridget.md - - shared/thankyou.md diff --git a/slides/kube-selfpaced.yml b/slides/kube-selfpaced.yml deleted file mode 100644 index aa150093..00000000 --- a/slides/kube-selfpaced.yml +++ /dev/null @@ -1,175 +0,0 @@ -title: | - Deploying and Scaling Microservices - with Docker and Kubernetes - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" - - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person - -content: -- shared/title.md -#- logistics.md -- k8s/intro.md -- shared/about-slides.md -#- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - - shared/prereqs.md - - shared/handson.md - #- shared/webssh.md - - shared/connecting.md - - k8s/versions-k8s.md - - shared/sampleapp.md - #- shared/composescale.md - #- shared/hastyconclusions.md - - shared/composedown.md - - k8s/concepts-k8s.md -- - - k8s/kubectlget.md - - k8s/kubectl-run.md - - k8s/batch-jobs.md - - k8s/labels-annotations.md - - k8s/kubectl-logs.md - - k8s/logs-cli.md - - shared/declarative.md - - k8s/declarative.md - - k8s/deploymentslideshow.md -- - - k8s/kubectlexpose.md - - k8s/service-types.md - - k8s/kubenet.md - - k8s/shippingimages.md - - k8s/buildshiprun-selfhosted.md - - k8s/buildshiprun-dockerhub.md - - k8s/ourapponkube.md - #- k8s/exercise-wordsmith.md - - shared/yaml.md - - k8s/yamldeploy.md - - k8s/namespaces.md -- - - k8s/setup-overview.md - - k8s/setup-devel.md - - k8s/setup-managed.md - - k8s/setup-selfhosted.md - - k8s/dashboard.md - - k8s/k9s.md - - k8s/tilt.md - #- k8s/kubectlscale.md - - k8s/scalingdockercoins.md - - shared/hastyconclusions.md - - k8s/daemonset.md - #- k8s/exercise-yaml.md -- - - k8s/rollout.md - - k8s/healthchecks.md - - k8s/healthchecks-more.md - - k8s/record.md -- - - k8s/localkubeconfig.md - #- k8s/access-eks-cluster.md - - k8s/accessinternal.md - - k8s/kubectlproxy.md -- - - k8s/ingress.md - - k8s/ingress-advanced.md - #- k8s/ingress-canary.md - - k8s/ingress-tls.md - - k8s/cert-manager.md - - k8s/cainjector.md - - k8s/kustomize.md - - k8s/helm-intro.md - - k8s/helm-chart-format.md - - k8s/helm-create-basic-chart.md - - k8s/helm-create-better-chart.md - - k8s/helm-dependencies.md - - k8s/helm-values-schema-validation.md - - k8s/helm-secrets.md - #- k8s/exercise-helm.md - - k8s/gitlab.md - - k8s/ytt.md -- - - k8s/netpol.md - - k8s/authn-authz.md - - k8s/pod-security-intro.md - - k8s/pod-security-policies.md - - k8s/pod-security-admission.md - - k8s/user-cert.md - - k8s/csr-api.md - - k8s/openid-connect.md - - k8s/control-plane-auth.md -- - - k8s/volumes.md - #- k8s/exercise-configmap.md - - k8s/build-with-docker.md - - k8s/build-with-kaniko.md -- - - k8s/configuration.md - - k8s/secrets.md - - k8s/statefulsets.md - - k8s/consul.md - - k8s/pv-pvc-sc.md - - k8s/volume-claim-templates.md - - k8s/portworx.md - - k8s/openebs.md - - k8s/stateful-failover.md -- - - k8s/gitworkflows.md - - k8s/flux.md - - k8s/argocd.md -- - - k8s/logs-centralized.md - - k8s/prometheus.md - - k8s/prometheus-stack.md - - k8s/resource-limits.md - - k8s/metrics-server.md - - k8s/cluster-sizing.md - - k8s/disruptions.md - - k8s/cluster-autoscaler.md - - k8s/horizontal-pod-autoscaler.md - - k8s/hpa-v2.md -- - - k8s/extending-api.md - - k8s/apiserver-deepdive.md - - k8s/crd.md - - k8s/aggregation-layer.md - - k8s/admission.md - - k8s/operators.md - - k8s/operators-design.md - - k8s/operators-example.md - - k8s/kubebuilder.md - - k8s/kuik.md - - k8s/sealed-secrets.md - - k8s/kyverno.md - - k8s/eck.md - - k8s/finalizers.md - - k8s/owners-and-dependents.md - - k8s/events.md -- - - k8s/dmuc-easy.md - - k8s/dmuc-medium.md - - k8s/dmuc-hard.md - #- k8s/multinode.md - #- k8s/cni.md - - k8s/cni-internals.md - - k8s/apilb.md - - k8s/staticpods.md -- - - k8s/cluster-upgrade.md - - k8s/cluster-backup.md - - k8s/cloud-controller-manager.md -- - - k8s/lastwords.md - - k8s/links.md - - shared/thankyou.md diff --git a/slides/kube-twodays.yml b/slides/kube-twodays.yml deleted file mode 100644 index 53a39e51..00000000 --- a/slides/kube-twodays.yml +++ /dev/null @@ -1,136 +0,0 @@ -title: | - Deploying and Scaling Microservices - with Kubernetes - -#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" -chat: "In person!" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - - shared/prereqs.md - - shared/handson.md - #- shared/webssh.md - - shared/connecting.md - #- k8s/versions-k8s.md - - shared/sampleapp.md - #- shared/composescale.md - #- shared/hastyconclusions.md - - shared/composedown.md - - k8s/concepts-k8s.md - - k8s/kubectlget.md -- - - k8s/kubectl-run.md - - k8s/batch-jobs.md - - k8s/labels-annotations.md - - k8s/kubectl-logs.md - - k8s/logs-cli.md - - shared/declarative.md - - k8s/declarative.md - - k8s/deploymentslideshow.md - - k8s/kubectlexpose.md - - k8s/service-types.md - - k8s/kubenet.md - - k8s/shippingimages.md - #- k8s/buildshiprun-selfhosted.md - - k8s/buildshiprun-dockerhub.md - - k8s/ourapponkube.md - #- k8s/exercise-wordsmith.md -- - - k8s/yamldeploy.md - - k8s/setup-overview.md - - k8s/setup-devel.md - #- k8s/setup-managed.md - #- k8s/setup-selfhosted.md - - k8s/dashboard.md - - k8s/k9s.md - #- k8s/tilt.md - #- k8s/kubectlscale.md - - k8s/scalingdockercoins.md - - shared/hastyconclusions.md - - k8s/daemonset.md - - shared/yaml.md - #- k8s/exercise-yaml.md -- - - k8s/localkubeconfig.md - #- k8s/access-eks-cluster.md - - k8s/accessinternal.md - #- k8s/kubectlproxy.md - - k8s/rollout.md - - k8s/healthchecks.md - #- k8s/healthchecks-more.md - - k8s/record.md -- - - k8s/namespaces.md - - k8s/ingress.md - #- k8s/ingress-advanced.md - #- k8s/ingress-canary.md - #- k8s/ingress-tls.md - - k8s/kustomize.md - - k8s/helm-intro.md - - k8s/helm-chart-format.md - - k8s/helm-create-basic-chart.md - - k8s/helm-create-better-chart.md - - k8s/helm-dependencies.md - - k8s/helm-values-schema-validation.md - - k8s/helm-secrets.md - #- k8s/exercise-helm.md - #- k8s/ytt.md - - k8s/gitlab.md -- - - k8s/netpol.md - - k8s/authn-authz.md - #- k8s/csr-api.md - #- k8s/openid-connect.md - #- k8s/pod-security-intro.md - #- k8s/pod-security-policies.md - #- k8s/pod-security-admission.md -- - - k8s/volumes.md - #- k8s/exercise-configmap.md - #- k8s/build-with-docker.md - #- k8s/build-with-kaniko.md - - k8s/configuration.md - - k8s/secrets.md - - k8s/logs-centralized.md - #- k8s/prometheus.md - #- k8s/prometheus-stack.md -- - - k8s/statefulsets.md - - k8s/consul.md - - k8s/pv-pvc-sc.md - - k8s/volume-claim-templates.md - #- k8s/portworx.md - - k8s/openebs.md - - k8s/stateful-failover.md - #- k8s/extending-api.md - #- k8s/admission.md - #- k8s/operators.md - #- k8s/operators-design.md - #- k8s/operators-example.md - #- k8s/staticpods.md - #- k8s/owners-and-dependents.md - #- k8s/gitworkflows.md -- - - k8s/whatsnext.md - - k8s/lastwords.md - - k8s/links.md - - shared/thankyou.md diff --git a/slides/kube.yml b/slides/kube.yml new file mode 100644 index 00000000..0106f82b --- /dev/null +++ b/slides/kube.yml @@ -0,0 +1,106 @@ +title: | + Kubernetes + +chat: "[Teams](FIXME)" + +gitrepo: github.com/jpetazzo/container.training + +slides: https://2025-03-ubisoft.container.training/ + +#slidenumberprefix: "#SomeHashTag — " + +exclude: +- self-paced + +content: +- shared/title.md +- logistics.md +- k8s/intro.md +- shared/about-slides.md +- shared/chat-room-teams.md +#- shared/chat-room-zoom-meeting.md +#- shared/chat-room-zoom-webinar.md +- shared/prereqs.md +- shared/handson.md +#- shared/webssh.md +- shared/connecting.md +- shared/toc.md +- # Monday + - k8s/concepts-k8s.md + - k8s/architecture.md + - k8s/kubectlget.md + - k8s/kubectl-run.md + - k8s/labels-annotations.md + #- k8s/shippingimages.md + #- k8s/buildshiprun-selfhosted.md + #- k8s/buildshiprun-dockerhub.md + #- exercises/k8sfundamentals-details.md + #- k8s/ourapponkube.md + - shared/declarative.md + - k8s/declarative.md + - k8s/kubectlexpose.md + - k8s/service-types.md + - k8s/kubenet.md + - k8s/yamldeploy.md + - exercises/yaml-bluegreen-details.md + #- k8s/kubectl-logs.md + #- k8s/logs-cli.md + #- shared/yaml.md + #- k8s/namespaces.md + #- exercises/yaml-details.md + #- k8s/volumes.md + #- k8s/exercise-configmap.md + #- k8s/configuration.md + #- k8s/secrets.md + #- k8s/scalingdockercoins.md + # shared/hastyconclusions.md + #- k8s/daemonset.md + #- k8s/rollout.md + #- k8s/healthchecks.md + #- exercises/healthchecks-details.md + #- k8s/resource-limits.md + #- k8s/metrics-server.md + #- k8s/cluster-sizing.md + #- k8s/horizontal-pod-autoscaler.md + #- exercises/reqlim-details.md + #- k8s/authn-authz.md +- # Tuesday + - k8s/extending-api.md + - k8s/sealed-secrets.md + - k8s/crd.md + - k8s/owners-and-dependents.md + - k8s/admission.md + - k8s/cainjector.md + - k8s/kuik.md + - k8s/kyverno.md + - exercises/sealed-secrets-details.md + - exercises/kyverno-ingress-domain-name-details.md + #- k8s/aggregation-layer.md +- # Wednesday + - k8s/operators.md + - k8s/operators-design.md + - k8s/operators-example.md + - k8s/events.md + - k8s/finalizers.md + - k8s/deploymentslideshow.md + - k8s/staticpods.md + - k8s/dmuc-easy.md + - exercises/monokube-details.md +- # Thursday + - k8s/user-cert.md + - k8s/csr-api.md + - k8s/openid-connect.md + - k8s/dmuc-medium.md +- # Friday (2h) + - k8s/dmuc-hard.md + #- k8s/multinode.md + #- k8s/cni.md + - k8s/cni-internals.md + - k8s/apilb.md + - k8s/control-plane-auth.md + - k8s/cluster-upgrade.md + - k8s/resource-limits.md + #- k8s/cluster-backup.md + #- k8s/cloud-controller-manager.md + #- k8s/kubebuilder.md + #- exercises/rbac-details.md diff --git a/slides/logistics-template.md b/slides/logistics-template.md index fe7d8986..053e3e21 100644 --- a/slides/logistics-template.md +++ b/slides/logistics-template.md @@ -1,62 +1,14 @@ ## Introductions -⚠️ This slide should be customized by the tutorial instructor(s). +- Hi! I'm Jérôme Petazzoni ([@jpetazzo], [@jpetazzo@hachyderm.io], Enix SAS) - - - - - - - - - - - +- Don't hesitate to interrupt at any time if you have any questions! [@alexbuisine]: https://twitter.com/alexbuisine [EphemeraSearch]: https://ephemerasearch.com/ @@ -75,8 +27,4 @@ (it will help to practice and memorize the content of the day) -- We recommend to take at least one hour to work on the exercises - - (if you understood the content of the day, it will be much faster) - -- Each day will start with a quick review of the exercises of the previous day +- We'll run polls to know how much time to spend on reviewing the exercises diff --git a/slides/shared/chat-room-teams.md b/slides/shared/chat-room-teams.md new file mode 100644 index 00000000..5df180f8 --- /dev/null +++ b/slides/shared/chat-room-teams.md @@ -0,0 +1,8 @@ +## Chat room + +- We'll also use the Teams chat room during the class + +- Don't hesitate to use it to ask questions, or get help, or share feedback + +- Say hi in the chat room! + diff --git a/slides/shared/prereqs.md b/slides/shared/prereqs.md index e04f29c3..42eedbad 100644 --- a/slides/shared/prereqs.md +++ b/slides/shared/prereqs.md @@ -1,4 +1,4 @@ -# Pre-requirements +## Pre-requirements - Be comfortable with the UNIX command line diff --git a/slides/swarm-fullday.yml b/slides/swarm-fullday.yml deleted file mode 100644 index 8477e36d..00000000 --- a/slides/swarm-fullday.yml +++ /dev/null @@ -1,72 +0,0 @@ -title: | - Container Orchestration - with Docker and Swarm - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced -- snap -- btp-auto -- benchmarking -- elk-manual -- prom-manual - -content: -- shared/title.md -- logistics.md -- swarm/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - shared/prereqs.md - - shared/handson.md - - shared/connecting.md - - swarm/versions.md - - shared/sampleapp.md - - shared/composescale.md - - shared/hastyconclusions.md - - shared/composedown.md - - swarm/swarmkit.md - - shared/declarative.md - - swarm/swarmmode.md - - swarm/creatingswarm.md - #- swarm/machine.md - - swarm/morenodes.md -- - swarm/firstservice.md - - swarm/ourapponswarm.md - - swarm/hostingregistry.md - - swarm/testingregistry.md - - swarm/btp-manual.md - - swarm/swarmready.md - - swarm/stacks.md - - swarm/cicd.md - - swarm/updatingservices.md - - swarm/rollingupdates.md - - swarm/healthchecks.md -- - swarm/operatingswarm.md - - swarm/netshoot.md - - swarm/ipsec.md - - swarm/swarmtools.md - - swarm/security.md - - swarm/secrets.md - - swarm/encryptionatrest.md - - swarm/leastprivilege.md - - swarm/apiscope.md -- - swarm/logging.md - - swarm/metrics.md - - swarm/gui.md - - swarm/stateful.md - - swarm/extratips.md - - shared/thankyou.md - - swarm/links.md diff --git a/slides/swarm-halfday.yml b/slides/swarm-halfday.yml deleted file mode 100644 index 926d4867..00000000 --- a/slides/swarm-halfday.yml +++ /dev/null @@ -1,71 +0,0 @@ -title: | - Container Orchestration - with Docker and Swarm - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced -- snap -- btp-manual -- benchmarking -- elk-manual -- prom-manual - -content: -- shared/title.md -- logistics.md -- swarm/intro.md -- shared/about-slides.md -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - shared/prereqs.md - - shared/handson.md - - shared/connecting.md - - swarm/versions.md - - shared/sampleapp.md - - shared/composescale.md - - shared/hastyconclusions.md - - shared/composedown.md - - swarm/swarmkit.md - - shared/declarative.md - - swarm/swarmmode.md - - swarm/creatingswarm.md - #- swarm/machine.md - - swarm/morenodes.md -- - swarm/firstservice.md - - swarm/ourapponswarm.md - #- swarm/hostingregistry.md - #- swarm/testingregistry.md - #- swarm/btp-manual.md - #- swarm/swarmready.md - - swarm/stacks.md - - swarm/cicd.md - - swarm/updatingservices.md - #- swarm/rollingupdates.md - #- swarm/healthchecks.md -- - swarm/operatingswarm.md - #- swarm/netshoot.md - #- swarm/ipsec.md - #- swarm/swarmtools.md - - swarm/security.md - #- swarm/secrets.md - #- swarm/encryptionatrest.md - - swarm/leastprivilege.md - - swarm/apiscope.md - - swarm/logging.md - - swarm/metrics.md - #- swarm/stateful.md - #- swarm/extratips.md - - shared/thankyou.md - - swarm/links.md diff --git a/slides/swarm-selfpaced.yml b/slides/swarm-selfpaced.yml deleted file mode 100644 index 0bd815d9..00000000 --- a/slides/swarm-selfpaced.yml +++ /dev/null @@ -1,80 +0,0 @@ -title: | - Container Orchestration - with Docker and Swarm - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person -- btp-auto - -content: -- shared/title.md -#- shared/logistics.md -- swarm/intro.md -- shared/about-slides.md -#- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/toc.md -- - shared/prereqs.md - - shared/handson.md - - shared/connecting.md - - swarm/versions.md - - | - name: part-1 - - class: title, self-paced - - Part 1 - - shared/sampleapp.md - - shared/composescale.md - - shared/hastyconclusions.md - - shared/composedown.md - - swarm/swarmkit.md - - shared/declarative.md - - swarm/swarmmode.md - - swarm/creatingswarm.md - #- swarm/machine.md - - swarm/morenodes.md -- - swarm/firstservice.md - - swarm/ourapponswarm.md - - swarm/hostingregistry.md - - swarm/testingregistry.md - - swarm/btp-manual.md - - swarm/swarmready.md - - swarm/stacks.md - - swarm/cicd.md - - | - name: part-2 - - class: title, self-paced - - Part 2 -- - swarm/operatingswarm.md - - swarm/netshoot.md - - swarm/swarmnbt.md - - swarm/ipsec.md - - swarm/updatingservices.md - - swarm/rollingupdates.md - - swarm/healthchecks.md - - swarm/nodeinfo.md - - swarm/swarmtools.md -- - swarm/security.md - - swarm/secrets.md - - swarm/encryptionatrest.md - - swarm/leastprivilege.md - - swarm/apiscope.md - - swarm/logging.md - - swarm/metrics.md - - swarm/stateful.md - - swarm/extratips.md - - shared/thankyou.md - - swarm/links.md diff --git a/slides/swarm-video.yml b/slides/swarm-video.yml deleted file mode 100644 index 9c34166a..00000000 --- a/slides/swarm-video.yml +++ /dev/null @@ -1,75 +0,0 @@ -title: | - Container Orchestration - with Docker and Swarm - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" - -gitrepo: github.com/jpetazzo/container.training - -slides: https://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person -- btp-auto - -content: -- shared/title.md -#- shared/logistics.md -- swarm/intro.md -- shared/about-slides.md -- shared/toc.md -- - shared/prereqs.md - - shared/handson.md - - shared/connecting.md - - swarm/versions.md - - | - name: part-1 - - class: title, self-paced - - Part 1 - - shared/sampleapp.md - - shared/composescale.md - - shared/hastyconclusions.md - - shared/composedown.md - - swarm/swarmkit.md - - shared/declarative.md - - swarm/swarmmode.md - - swarm/creatingswarm.md - #- swarm/machine.md - - swarm/morenodes.md -- - swarm/firstservice.md - - swarm/ourapponswarm.md - - swarm/hostingregistry.md - - swarm/testingregistry.md - - swarm/btp-manual.md - - swarm/swarmready.md - - swarm/stacks.md - - | - name: part-2 - - class: title, self-paced - - Part 2 -- - swarm/operatingswarm.md - #- swarm/netshoot.md - #- swarm/swarmnbt.md - - swarm/ipsec.md - - swarm/updatingservices.md - - swarm/rollingupdates.md - #- swarm/healthchecks.md - - swarm/nodeinfo.md - - swarm/swarmtools.md -- - swarm/security.md - - swarm/secrets.md - - swarm/encryptionatrest.md - - swarm/leastprivilege.md - - swarm/apiscope.md - #- swarm/logging.md - #- swarm/metrics.md - - swarm/stateful.md - - swarm/extratips.md - - shared/thankyou.md - - swarm/links.md