diff --git a/slides/k8s/prereqs-admin.md b/slides/k8s/prereqs-admin.md deleted file mode 100644 index 2772d67f..00000000 --- a/slides/k8s/prereqs-admin.md +++ /dev/null @@ -1,69 +0,0 @@ -# Pre-requirements - -- Kubernetes concepts - - (pods, deployments, services, labels, selectors) - -- Hands-on experience working with containers - - (building images, running them; doesn't matter how exactly) - -- Familiar with the UNIX command-line - - (navigating directories, editing files, using `kubectl`) - ---- - -## Labs and exercises - -- We are going to build and break multiple clusters - -- Everyone will get their own private environment(s) - -- You are invited to reproduce all the demos (but you don't have to) - -- All hands-on sections are clearly identified, like the gray rectangle below - -.lab[ - -- This is the stuff you're supposed to do! - -- Go to @@SLIDES@@ to view these slides - - - -] - ---- - -## Private environments - -- Each person gets their own private set of VMs - -- Each person should have a printed card with connection information - -- We will connect to these VMs with SSH - - (if you don't have an SSH client, install one **now!**) - ---- - -## Doing or re-doing this on your own? - -- We are using basic cloud VMs with Ubuntu LTS - -- Kubernetes [packages] or [binaries] have been installed - - (depending on what we want to accomplish in the lab) - -- We disabled IP address checks - - - we want to route pod traffic directly between nodes - - - most cloud providers will treat pod IP addresses as invalid - - - ... and filter them out; so we disable that filter - -[packages]: https://kubernetes.io/docs/setup/independent/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl - -[binaries]: https://kubernetes.io/docs/setup/release/notes/#server-binaries diff --git a/slides/k8s/prereqs-advanced.md b/slides/k8s/prereqs-advanced.md new file mode 100644 index 00000000..18996679 --- /dev/null +++ b/slides/k8s/prereqs-advanced.md @@ -0,0 +1,13 @@ +# Pre-requirements + +- Kubernetes concepts + + (pods, deployments, services, labels, selectors) + +- Hands-on experience working with containers + + (building images, running them; doesn't matter how exactly) + +- Familiarity with the UNIX command-line + + (navigating directories, editing files, using `kubectl`) diff --git a/slides/kadm-fullday.yml b/slides/kadm-fullday.yml index ceda598b..9e6adf0b 100644 --- a/slides/kadm-fullday.yml +++ b/slides/kadm-fullday.yml @@ -27,7 +27,8 @@ content: #- shared/chat-room-zoom-webinar.md - shared/toc.md - - - k8s/prereqs-admin.md + - k8s/prereqs-advanced.md + - shared/handson.md - k8s/architecture.md #- k8s/internal-apis.md - k8s/deploymentslideshow.md diff --git a/slides/kadm-twodays.yml b/slides/kadm-twodays.yml index d459bdf8..6640624f 100644 --- a/slides/kadm-twodays.yml +++ b/slides/kadm-twodays.yml @@ -27,7 +27,8 @@ content: #- shared/chat-room-zoom-webinar.md - shared/toc.md # DAY 1 -- - k8s/prereqs-admin.md +- - k8s/prereqs-advanced.md + - shared/handson.md - k8s/architecture.md - k8s/internal-apis.md - k8s/deploymentslideshow.md diff --git a/slides/kube-adv.yml b/slides/kube-adv.yml index 1aae34d1..68cb59f9 100644 --- a/slides/kube-adv.yml +++ b/slides/kube-adv.yml @@ -25,7 +25,8 @@ content: #- shared/chat-room-zoom-webinar.md - shared/toc.md - #1 - - k8s/prereqs-admin.md + - k8s/prereqs-advanced.md + - shared/handson.md - k8s/architecture.md - k8s/internal-apis.md - k8s/deploymentslideshow.md diff --git a/slides/kube-fullday.yml b/slides/kube-fullday.yml index 7e4540c2..04eda83d 100644 --- a/slides/kube-fullday.yml +++ b/slides/kube-fullday.yml @@ -27,6 +27,7 @@ content: - shared/toc.md - - shared/prereqs.md + - shared/handson.md #- shared/webssh.md - shared/connecting.md #- k8s/versions-k8s.md diff --git a/slides/kube-halfday.yml b/slides/kube-halfday.yml index 5d95c0f1..b22a1f99 100644 --- a/slides/kube-halfday.yml +++ b/slides/kube-halfday.yml @@ -28,6 +28,7 @@ content: #- 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 diff --git a/slides/kube-selfpaced.yml b/slides/kube-selfpaced.yml index aaa97481..3e72697e 100644 --- a/slides/kube-selfpaced.yml +++ b/slides/kube-selfpaced.yml @@ -27,6 +27,7 @@ content: - shared/toc.md - - shared/prereqs.md + - shared/handson.md #- shared/webssh.md - shared/connecting.md - k8s/versions-k8s.md diff --git a/slides/kube-twodays.yml b/slides/kube-twodays.yml index bb2c4293..53a39e51 100644 --- a/slides/kube-twodays.yml +++ b/slides/kube-twodays.yml @@ -27,6 +27,7 @@ content: - shared/toc.md - - shared/prereqs.md + - shared/handson.md #- shared/webssh.md - shared/connecting.md #- k8s/versions-k8s.md diff --git a/slides/shared/connecting.md b/slides/shared/connecting.md index cb1b12c7..ee1307cd 100644 --- a/slides/shared/connecting.md +++ b/slides/shared/connecting.md @@ -68,7 +68,7 @@ class: in-person Small setup effort; small cost; flexible environments - Create a bunch of clusters for you and your friends - ([instructions](https://@@GITREPO@@/tree/master/prepare-vms)) + ([instructions](https://@@GITREPO@@/tree/main/prepare-labs)) Bigger setup effort; ideal for group training diff --git a/slides/shared/handson.md b/slides/shared/handson.md new file mode 100644 index 00000000..70c58283 --- /dev/null +++ b/slides/shared/handson.md @@ -0,0 +1,166 @@ +class: title + +*Tell me and I forget.* +
+*Teach me and I remember.* +
+*Involve me and I learn.* + +Misattributed to Benjamin Franklin + +[(Probably inspired by Chinese Confucian philosopher Xunzi)](https://www.barrypopik.com/index.php/new_york_city/entry/tell_me_and_i_forget_teach_me_and_i_may_remember_involve_me_and_i_will_lear/) + +--- + +## Hands-on sections + +- There will be *a lot* of examples and demos + +- We are going to build, ship, and run containers (and sometimes, clusters!) + +- If you want, you can run all the examples and demos in your environment + + (but you don't have to; it's up to you!) + +- All hands-on sections are clearly identified, like the gray rectangle below + +.lab[ + +- This is a command that we're gonna run: + ```bash + echo hello world + ``` + +] + +--- + +class: in-person + +## Where are we going to run our containers? + +--- + +class: in-person, pic + +![You get a cluster](images/you-get-a-cluster.jpg) + +--- + +## If you're attending a live training or workshop + +- Each person gets a private lab environment + + (depending on the scenario, this will be one VM, one cluster, multiple clusters...) + +- The instructor will tell you how to connect to your environment + +- Your lab environments will be available for the duration of the workshop + + (check with your instructor to know exactly when they'll be shutdown) + +--- + +## Running your own lab environments + +- If you are following a self-paced course... + +- Or watching a replay of a recorded course... + +- ...You will need to set up a local environment for the labs + +- If you want to deliver your own training or workshop: + + - deployment scripts are available in the [prepare-labs] directory + + - you can use them to automatically deploy many lab environments + + - they support many different infrastructure providers + +[prepare-labs]: https://github.com/jpetazzo/container.training/tree/main/prepare-labs + +--- + +class: in-person + +## Why don't we run containers locally? + +- Installing this stuff can be hard on some machines + + (32 bits CPU or OS... Laptops without administrator access... etc.) + +- *"The whole team downloaded all these container images from the WiFi! +
... and it went great!"* (Literally no-one ever) + +- All you need is a computer (or even a phone or tablet!), with: + + - an Internet connection + + - a web browser + + - an SSH client + +--- + +class: in-person + +## SSH clients + +- On Linux, OS X, FreeBSD... you are probably all set + +- On Windows, get one of these: + + - [putty](http://www.putty.org/) + - Microsoft [Win32 OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH) + - [Git BASH](https://git-for-windows.github.io/) + - [MobaXterm](http://mobaxterm.mobatek.net/) + +- On Android, [JuiceSSH](https://juicessh.com/) + ([Play Store](https://play.google.com/store/apps/details?id=com.sonelli.juicessh)) + works pretty well + +- Nice-to-have: [Mosh](https://mosh.org/) instead of SSH, if your Internet connection tends to lose packets + +--- + +class: in-person, extra-details + +## What is this Mosh thing? + +*You don't have to use Mosh or even know about it to follow along. +
+We're just telling you about it because some of us think it's cool!* + +- Mosh is "the mobile shell" + +- It is essentially SSH over UDP, with roaming features + +- It retransmits packets quickly, so it works great even on lossy connections + + (Like hotel or conference WiFi) + +- It has intelligent local echo, so it works great even in high-latency connections + + (Like hotel or conference WiFi) + +- It supports transparent roaming when your client IP address changes + + (Like when you hop from hotel to conference WiFi) + +--- + +class: in-person, extra-details + +## Using Mosh + +- To install it: `(apt|yum|brew) install mosh` + +- It has been pre-installed on the VMs that we are using + +- To connect to a remote machine: `mosh user@host` + + (It is going to establish an SSH connection, then hand off to UDP) + +- It requires UDP ports to be open + + (By default, it uses a UDP port between 60000 and 61000) diff --git a/slides/shared/prereqs.md b/slides/shared/prereqs.md index 7ed926fa..e04f29c3 100644 --- a/slides/shared/prereqs.md +++ b/slides/shared/prereqs.md @@ -17,153 +17,3 @@ (even if it's a `FROM` line and a couple of `RUN` commands) - It's totally OK if you are not a Docker expert! - ---- - -class: title - -*Tell me and I forget.* -
-*Teach me and I remember.* -
-*Involve me and I learn.* - -Misattributed to Benjamin Franklin - -[(Probably inspired by Chinese Confucian philosopher Xunzi)](https://www.barrypopik.com/index.php/new_york_city/entry/tell_me_and_i_forget_teach_me_and_i_may_remember_involve_me_and_i_will_lear/) - ---- - -## Hands-on sections - -- The whole workshop is hands-on - -- We are going to build, ship, and run containers! - -- You are invited to reproduce all the demos - -- All hands-on sections are clearly identified, like the gray rectangle below - -.lab[ - -- This is the stuff you're supposed to do! - -- Go to @@SLIDES@@ to view these slides - - - -] - ---- - -class: in-person - -## Where are we going to run our containers? - ---- - -class: in-person, pic - -![You get a cluster](images/you-get-a-cluster.jpg) - ---- - -class: in-person - -## You get a cluster of cloud VMs - -- Each person gets a private cluster of cloud VMs (not shared with anybody else) - -- They'll remain up for the duration of the workshop - -- You should have a little card with login+password+IP addresses - -- You can automatically SSH from one VM to another - -- The nodes have aliases: `node1`, `node2`, etc. - ---- - -class: in-person - -## Why don't we run containers locally? - -- Installing this stuff can be hard on some machines - - (32 bits CPU or OS... Laptops without administrator access... etc.) - -- *"The whole team downloaded all these container images from the WiFi! -
... and it went great!"* (Literally no-one ever) - -- All you need is a computer (or even a phone or tablet!), with: - - - an Internet connection - - - a web browser - - - an SSH client - ---- - -class: in-person - -## SSH clients - -- On Linux, OS X, FreeBSD... you are probably all set - -- On Windows, get one of these: - - - [putty](http://www.putty.org/) - - Microsoft [Win32 OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH) - - [Git BASH](https://git-for-windows.github.io/) - - [MobaXterm](http://mobaxterm.mobatek.net/) - -- On Android, [JuiceSSH](https://juicessh.com/) - ([Play Store](https://play.google.com/store/apps/details?id=com.sonelli.juicessh)) - works pretty well - -- Nice-to-have: [Mosh](https://mosh.org/) instead of SSH, if your Internet connection tends to lose packets - ---- - -class: in-person, extra-details - -## What is this Mosh thing? - -*You don't have to use Mosh or even know about it to follow along. -
-We're just telling you about it because some of us think it's cool!* - -- Mosh is "the mobile shell" - -- It is essentially SSH over UDP, with roaming features - -- It retransmits packets quickly, so it works great even on lossy connections - - (Like hotel or conference WiFi) - -- It has intelligent local echo, so it works great even in high-latency connections - - (Like hotel or conference WiFi) - -- It supports transparent roaming when your client IP address changes - - (Like when you hop from hotel to conference WiFi) - ---- - -class: in-person, extra-details - -## Using Mosh - -- To install it: `(apt|yum|brew) install mosh` - -- It has been pre-installed on the VMs that we are using - -- To connect to a remote machine: `mosh user@host` - - (It is going to establish an SSH connection, then hand off to UDP) - -- It requires UDP ports to be open - - (By default, it uses a UDP port between 60000 and 61000) diff --git a/slides/swarm-fullday.yml b/slides/swarm-fullday.yml index dba4b4e6..8477e36d 100644 --- a/slides/swarm-fullday.yml +++ b/slides/swarm-fullday.yml @@ -30,6 +30,7 @@ content: #- shared/chat-room-zoom-webinar.md - shared/toc.md - - shared/prereqs.md + - shared/handson.md - shared/connecting.md - swarm/versions.md - shared/sampleapp.md diff --git a/slides/swarm-halfday.yml b/slides/swarm-halfday.yml index 3524d096..926d4867 100644 --- a/slides/swarm-halfday.yml +++ b/slides/swarm-halfday.yml @@ -30,6 +30,7 @@ content: #- shared/chat-room-zoom-webinar.md - shared/toc.md - - shared/prereqs.md + - shared/handson.md - shared/connecting.md - swarm/versions.md - shared/sampleapp.md diff --git a/slides/swarm-selfpaced.yml b/slides/swarm-selfpaced.yml index da3b7532..0bd815d9 100644 --- a/slides/swarm-selfpaced.yml +++ b/slides/swarm-selfpaced.yml @@ -25,6 +25,7 @@ content: #- shared/chat-room-zoom-webinar.md - shared/toc.md - - shared/prereqs.md + - shared/handson.md - shared/connecting.md - swarm/versions.md - | diff --git a/slides/swarm-video.yml b/slides/swarm-video.yml index 209f9e58..9c34166a 100644 --- a/slides/swarm-video.yml +++ b/slides/swarm-video.yml @@ -21,6 +21,7 @@ content: - shared/about-slides.md - shared/toc.md - - shared/prereqs.md + - shared/handson.md - shared/connecting.md - swarm/versions.md - |