diff --git a/slides/_redirects b/slides/_redirects index 3383a837..70882ab0 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 +/ /qcon.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/containers/Container_Network_Model.md b/slides/containers/Container_Network_Model.md index 87cf044f..29daa451 100644 --- a/slides/containers/Container_Network_Model.md +++ b/slides/containers/Container_Network_Model.md @@ -27,8 +27,6 @@ We will also explain the principle of overlay networks and network plugins. ## The Container Network Model -The CNM was introduced in Engine 1.9.0 (November 2015). - The CNM adds the notion of a *network*, and a new top-level command to manipulate and see those networks: `docker network`. ```bash @@ -47,6 +45,8 @@ eb0eeab782f4 host host * Conceptually, a network is a virtual switch. + (It's similar to e.g. a VLAN, or a WiFi network.) + * It can be local (to a single Engine) or global (spanning multiple hosts). * A network has an IP subnet associated to it. @@ -143,77 +143,6 @@ eb0eeab782f4 host host --- -## Placing containers on a network - -We will create a *named* container on this network. - -It will be reachable with its name, `es`. - -```bash -$ docker run -d --name es --net dev elasticsearch:2 -8abb80e229ce8926c7223beb69699f5f34d6f1d438bfc5682db893e798046863 -``` - ---- - -## Communication between containers - -Now, create another container on this network. - -.small[ -```bash -$ docker run -ti --net dev alpine sh -root@0ecccdfa45ef:/# -``` -] - -From this new container, we can resolve and ping the other one, using its assigned name: - -.small[ -```bash -/ # ping es -PING es (172.18.0.2) 56(84) bytes of data. -64 bytes from es.dev (172.18.0.2): icmp_seq=1 ttl=64 time=0.221 ms -64 bytes from es.dev (172.18.0.2): icmp_seq=2 ttl=64 time=0.114 ms -64 bytes from es.dev (172.18.0.2): icmp_seq=3 ttl=64 time=0.114 ms -^C ---- es ping statistics --- -3 packets transmitted, 3 received, 0% packet loss, time 2000ms -rtt min/avg/max/mdev = 0.114/0.149/0.221/0.052 ms -root@0ecccdfa45ef:/# -``` -] - ---- - -class: extra-details - -## Resolving container addresses - -In Docker Engine 1.9, name resolution is implemented with `/etc/hosts`, and -updating it each time containers are added/removed. - -.small[ -```bash -[root@0ecccdfa45ef /]# cat /etc/hosts -172.18.0.3 0ecccdfa45ef -127.0.0.1 localhost -::1 localhost ip6-localhost ip6-loopback -fe00::0 ip6-localnet -ff00::0 ip6-mcastprefix -ff02::1 ip6-allnodes -ff02::2 ip6-allrouters -172.18.0.2 es -172.18.0.2 es.dev -``` -] - -In Docker Engine 1.10, this has been replaced by a dynamic resolver. - -(This avoids race conditions when updating `/etc/hosts`.) - ---- - # Service discovery with containers * Let's try to run an application that requires two containers. @@ -265,14 +194,16 @@ Note: we're not using a FQDN or an IP address here; just `redis`. * That container must be on the same network as the web server. -* It must have the right name (`redis`) so the application can find it. +* We must give it a network alias (`redis`) so the application can find it. Start the container: ```bash -$ docker run --net dev --name redis -d redis +$ docker run --net dev --net-alias redis -d redis ``` +Note: we could also use `--name redis`. + --- ## Test the web server again @@ -289,136 +220,11 @@ $ docker run --net dev --name redis -d redis * What if we want to run multiple copies of our application? -* Since names are unique, there can be only one container named `redis` at a time. +* We can use `--net-alias redis` for multiple containers. -* However, we can specify the network name of our container with `--net-alias`. +* Network aliases are scoped per network, and independent from container names. -* `--net-alias` is scoped per network, and independent from the container name. - ---- - -class: extra-details - -## Using a network alias instead of a name - -Let's remove the `redis` container: - -```bash -$ docker rm -f redis -``` - -And create one that doesn't block the `redis` name: - -```bash -$ docker run --net dev --net-alias redis -d redis -``` - -Check that the app still works (but the counter is back to 1, -since we wiped out the old Redis container). - ---- - -class: extra-details - -## Names are *local* to each network - -Let's try to ping our `es` container from another container, when that other container is *not* on the `dev` network. - -```bash -$ docker run --rm alpine ping es -ping: bad address 'es' -``` - -Names can be resolved only when containers are on the same network. - -Containers can contact each other only when they are on the same network (you can try to ping using the IP address to verify). - ---- - -class: extra-details - -## Network aliases - -We would like to have another network, `prod`, with its own `es` container. But there can be only one container named `es`! - -We will use *network aliases*. - -A container can have multiple network aliases. - -Network aliases are *local* to a given network (only exist in this network). - -Multiple containers can have the same network alias (even on the same network). In Docker Engine 1.11, resolving a network alias yields the IP addresses of all containers holding this alias. - ---- - -class: extra-details - -## Creating containers on another network - -Create the `prod` network. - -```bash -$ docker network create prod -5a41562fecf2d8f115bedc16865f7336232a04268bdf2bd816aecca01b68d50c -``` - -We can now create multiple containers with the `es` alias on the new `prod` network. - -```bash -$ docker run -d --name prod-es-1 --net-alias es --net prod elasticsearch:2 -38079d21caf0c5533a391700d9e9e920724e89200083df73211081c8a356d771 -$ docker run -d --name prod-es-2 --net-alias es --net prod elasticsearch:2 -1820087a9c600f43159688050dcc164c298183e1d2e62d5694fd46b10ac3bc3d -``` - ---- - -class: extra-details - -## Resolving network aliases - -Let's try DNS resolution first, using the `nslookup` tool that ships with the `alpine` image. - -```bash -$ docker run --net prod --rm alpine nslookup es -Name: es -Address 1: 172.23.0.3 prod-es-2.prod -Address 2: 172.23.0.2 prod-es-1.prod -``` - -(You can ignore the `can't resolve '(null)'` errors.) - ---- - -class: extra-details - -## Connecting to aliased containers - -Each ElasticSearch instance has a name (generated when it is started). This name can be seen when we issue a simple HTTP request on the ElasticSearch API endpoint. - -Try the following command a few times: - -.small[ -```bash -$ docker run --rm --net dev centos curl -s es:9200 -{ - "name" : "Tarot", -... -} -``` -] - -Then try it a few times by replacing `--net dev` with `--net prod`: - -.small[ -```bash -$ docker run --rm --net prod centos curl -s es:9200 -{ - "name" : "The Symbiote", -... -} -``` -] +* However, we can use `--name redis` only once, since names are unique. --- @@ -549,194 +355,3 @@ General idea: - some plugins require configuration or activation (creating a special file that tells Docker "use the plugin whose control socket is at the following location") - you can then `docker network create --driver pluginname` - ---- - -## Connecting and disconnecting dynamically - -* So far, we have specified which network to use when starting the container. - -* The Docker Engine also allows connecting and disconnecting while the container is running. - -* This feature is exposed through the Docker API, and through two Docker CLI commands: - - * `docker network connect ` - - * `docker network disconnect ` - ---- - -## Dynamically connecting to a network - -* We have a container named `es` connected to a network named `dev`. - -* Let's start a simple alpine container on the default network: - - ```bash - $ docker run -ti alpine sh - / # - ``` - -* In this container, try to ping the `es` container: - - ```bash - / # ping es - ping: bad address 'es' - ``` - - This doesn't work, but we will change that by connecting the container. - ---- - -## Finding the container ID and connecting it - -* Figure out the ID of our alpine container; here are two methods: - - * looking at `/etc/hostname` in the container, - - * running `docker ps -lq` on the host. - -* Run the following command on the host: - - ```bash - $ docker network connect dev `` - ``` - ---- - -## Checking what we did - -* Try again to `ping es` from the container. - -* It should now work correctly: - - ```bash - / # ping es - PING es (172.20.0.3): 56 data bytes - 64 bytes from 172.20.0.3: seq=0 ttl=64 time=0.376 ms - 64 bytes from 172.20.0.3: seq=1 ttl=64 time=0.130 ms - ^C - ``` - -* Interrupt it with Ctrl-C. - ---- - -## Looking at the network setup in the container - -We can look at the list of network interfaces with `ifconfig`, `ip a`, or `ip l`: - -.small[ -```bash -/ # ip a -1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1000 - link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 - inet 127.0.0.1/8 scope host lo - valid_lft forever preferred_lft forever -18: eth0@if19: mtu 1500 qdisc noqueue state UP - link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff - inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 - valid_lft forever preferred_lft forever -20: eth1@if21: mtu 1500 qdisc noqueue state UP - link/ether 02:42:ac:14:00:04 brd ff:ff:ff:ff:ff:ff - inet 172.20.0.4/16 brd 172.20.255.255 scope global eth1 - valid_lft forever preferred_lft forever -/ # -``` -] - -Each network connection is materialized with a virtual network interface. - -As we can see, we can be connected to multiple networks at the same time. - ---- - -## Disconnecting from a network - -* Let's try the symmetrical command to disconnect the container: - ```bash - $ docker network disconnect dev - ``` - -* From now on, if we try to ping `es`, it will not resolve: - ```bash - / # ping es - ping: bad address 'es' - ``` - -* Trying to ping the IP address directly won't work either: - ```bash - / # ping 172.20.0.3 - ... (nothing happens until we interrupt it with Ctrl-C) - ``` - ---- - -class: extra-details - -## Network aliases are scoped per network - -* Each network has its own set of network aliases. - -* We saw this earlier: `es` resolves to different addresses in `dev` and `prod`. - -* If we are connected to multiple networks, the resolver looks up names in each of them - (as of Docker Engine 18.03, it is the connection order) and stops as soon as the name - is found. - -* Therefore, if we are connected to both `dev` and `prod`, resolving `es` will **not** - give us the addresses of all the `es` services; but only the ones in `dev` or `prod`. - -* However, we can lookup `es.dev` or `es.prod` if we need to. - ---- - -class: extra-details - -## Finding out about our networks and names - -* We can do reverse DNS lookups on containers' IP addresses. - -* If the IP address belongs to a network (other than the default bridge), the result will be: - - ``` - name-or-first-alias-or-container-id.network-name - ``` - -* Example: - -.small[ -```bash -$ docker run -ti --net prod --net-alias hello alpine -/ # apk add --no-cache drill -... -OK: 5 MiB in 13 packages -/ # ifconfig -eth0 Link encap:Ethernet HWaddr 02:42:AC:15:00:03 - inet addr:`172.21.0.3` Bcast:172.21.255.255 Mask:255.255.0.0 - UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 -... -/ # drill -t ptr `3.0.21.172`.in-addr.arpa -... -;; ANSWER SECTION: -3.0.21.172.in-addr.arpa. 600 IN PTR `hello.prod`. -... -``` -] - ---- - -class: extra-details - -## Building with a custom network - -* We can build a Dockerfile with a custom network with `docker build --network NAME`. - -* This can be used to check that a build doesn't access the network. - - (But keep in mind that most Dockerfiles will fail, -
because they need to install remote packages and dependencies!) - -* This may be used to access an internal package repository. - - (But try to use a multi-stage build instead, if possible!) diff --git a/slides/intro-fullday.yml b/slides/intro-fullday.yml index 8110dfd7..808e0054 100644 --- a/slides/intro-fullday.yml +++ b/slides/intro-fullday.yml @@ -1,15 +1,17 @@ title: | - Introduction - to Containers + Docker + Intensive + Course -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" +#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" #chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" +chat: "" gitrepo: github.com/jpetazzo/container.training -slides: http://container.training/ +slides: https://2020-03-qcon.container.training/ -#slidenumberprefix: "#SomeHashTag — " +slidenumberprefix: "@jpetazzo — " exclude: - self-paced @@ -41,8 +43,8 @@ chapters: - - containers/Container_Networking_Basics.md #- containers/Network_Drivers.md - #- containers/Container_Network_Model.md - containers/Local_Development_Workflow.md + - containers/Container_Network_Model.md - containers/Compose_For_Dev_Stacks.md - containers/Exercise_Composefile.md - diff --git a/slides/intro-selfpaced.yml b/slides/intro-selfpaced.yml deleted file mode 100644 index 03bf7bca..00000000 --- a/slides/intro-selfpaced.yml +++ /dev/null @@ -1,67 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person - -chapters: -- shared/title.md -# - shared/logistics.md -- containers/intro.md -- shared/about-slides.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 - - containers/Compose_For_Dev_Stacks.md - - containers/Exercise_Composefile.md - - containers/Docker_Machine.md -- - containers/Advanced_Dockerfiles.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 29599136..00000000 --- a/slides/intro-twodays.yml +++ /dev/null @@ -1,75 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -chapters: -- shared/title.md -- logistics.md -- containers/intro.md -- shared/about-slides.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 - - 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/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/kadm-fullday.yml b/slides/kadm-fullday.yml deleted file mode 100644 index e2b0aa9b..00000000 --- a/slides/kadm-fullday.yml +++ /dev/null @@ -1,51 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced -- static-pods-exercise - -chapters: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/toc.md -- - - k8s/prereqs-admin.md - - k8s/architecture.md - - k8s/deploymentslideshow.md - - k8s/dmuc.md -- - - k8s/multinode.md - - k8s/cni.md - - k8s/interco.md -- - - k8s/apilb.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/podsecuritypolicy.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 a55be6b1..00000000 --- a/slides/kadm-twodays.yml +++ /dev/null @@ -1,72 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -chapters: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/toc.md -# DAY 1 -- - k8s/prereqs-admin.md - - k8s/architecture.md - - k8s/deploymentslideshow.md - - k8s/dmuc.md -- - k8s/multinode.md - - k8s/cni.md - - k8s/interco.md -- - k8s/apilb.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/csr-api.md -- - k8s/openid-connect.md - - k8s/control-plane-auth.md - ###- k8s/bootstrap.md - - k8s/netpol.md - - k8s/podsecuritypolicy.md -- - k8s/resource-limits.md - - k8s/metrics-server.md - - k8s/cluster-sizing.md - - k8s/horizontal-pod-autoscaler.md -- - k8s/prometheus.md - - k8s/extending-api.md - - k8s/operators.md - ###- k8s/operators-design.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/statefulsets.md - - k8s/local-persistent-volumes.md - - k8s/portworx.md diff --git a/slides/kube-fullday.yml b/slides/kube-fullday.yml index 6b92af6d..f34ed1f0 100644 --- a/slides/kube-fullday.yml +++ b/slides/kube-fullday.yml @@ -1,19 +1,21 @@ title: | - Deploying and Scaling Microservices - with Kubernetes + Kubernetes + Intensive + Course #chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" #chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" -chat: "In person!" +chat: "" gitrepo: github.com/jpetazzo/container.training -slides: http://container.training/ +slides: https://2020-03-qcon.container.training/ -#slidenumberprefix: "#SomeHashTag — " +slidenumberprefix: "@jpetazzo — " exclude: - self-paced +- chat-room chapters: - shared/title.md @@ -23,7 +25,7 @@ chapters: - shared/toc.md - - shared/prereqs.md - #- shared/webssh.md + - shared/webssh.md - shared/connecting.md #- k8s/versions-k8s.md - shared/sampleapp.md diff --git a/slides/kube-halfday.yml b/slides/kube-halfday.yml deleted file mode 100644 index 32ea4a34..00000000 --- a/slides/kube-halfday.yml +++ /dev/null @@ -1,73 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -chapters: -- shared/title.md -#- logistics.md -# Bridget-specific; others use logistics.md -- logistics-bridget.md -- k8s/intro.md -- shared/about-slides.md -- shared/toc.md -- - shared/prereqs.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-k8s.md -- - k8s/kubectlrun.md - - k8s/deploymentslideshow.md - - k8s/kubectlexpose.md - - k8s/shippingimages.md - #- k8s/buildshiprun-selfhosted.md - - k8s/buildshiprun-dockerhub.md - - k8s/ourapponkube.md - #- k8s/localkubeconfig.md - #- k8s/accessinternal.md - #- k8s/kubectlproxy.md -- - k8s/dashboard.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-secrets.md - #- k8s/kustomize.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 fc48bce0..00000000 --- a/slides/kube-selfpaced.yml +++ /dev/null @@ -1,121 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person - -chapters: -- shared/title.md -#- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/toc.md -- - - shared/prereqs.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/kubectlrun.md - - k8s/logs-cli.md - - shared/declarative.md - - k8s/declarative.md - - k8s/deploymentslideshow.md -- - - k8s/kubenet.md - - k8s/kubectlexpose.md - - k8s/shippingimages.md - - k8s/buildshiprun-selfhosted.md - - k8s/buildshiprun-dockerhub.md - - k8s/ourapponkube.md - #- k8s/exercise-wordsmith.md - - k8s/yamldeploy.md -- - - k8s/setup-k8s.md - - k8s/dashboard.md - #- k8s/kubectlscale.md - - k8s/scalingdockercoins.md - - shared/hastyconclusions.md - - k8s/daemonset.md - - k8s/dryrun.md - #- k8s/exercise-yaml.md -- - - k8s/rollout.md - - k8s/healthchecks.md - - k8s/healthchecks-more.md - - k8s/record.md -- - - k8s/namespaces.md - - k8s/localkubeconfig.md - - k8s/accessinternal.md - - k8s/kubectlproxy.md -- - - k8s/ingress.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-secrets.md - #- k8s/exercise-helm.md -- - - k8s/netpol.md - - k8s/authn-authz.md - - k8s/podsecuritypolicy.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/statefulsets.md - - k8s/local-persistent-volumes.md - - k8s/portworx.md -- - - k8s/logs-centralized.md - - k8s/prometheus.md - - k8s/resource-limits.md - - k8s/metrics-server.md - - k8s/cluster-sizing.md - - k8s/horizontal-pod-autoscaler.md -- - - k8s/extending-api.md - - k8s/operators.md - - k8s/operators-design.md - - k8s/owners-and-dependents.md -- - - k8s/dmuc.md - - k8s/multinode.md - - k8s/cni.md - - k8s/apilb.md - - k8s/staticpods.md -- - - k8s/cluster-upgrade.md - - k8s/cluster-backup.md - - k8s/cloud-controller-manager.md - - k8s/gitworkflows.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 c4640996..00000000 --- a/slides/kube-twodays.yml +++ /dev/null @@ -1,104 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -chapters: -- shared/title.md -- logistics.md -- k8s/intro.md -- shared/about-slides.md -- shared/toc.md -- - - shared/prereqs.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/kubectlrun.md - - k8s/logs-cli.md - - shared/declarative.md - - k8s/declarative.md - - k8s/deploymentslideshow.md - - k8s/kubenet.md - - k8s/kubectlexpose.md - - k8s/shippingimages.md - #- k8s/buildshiprun-selfhosted.md - - k8s/buildshiprun-dockerhub.md - - k8s/ourapponkube.md - #- k8s/exercise-wordsmith.md -- - - k8s/yamldeploy.md - #- k8s/setup-k8s.md - - k8s/dashboard.md - #- k8s/kubectlscale.md - - k8s/scalingdockercoins.md - - shared/hastyconclusions.md - - k8s/daemonset.md - - k8s/dryrun.md - #- k8s/exercise-yaml.md -- - - k8s/localkubeconfig.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/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-secrets.md - #- k8s/exercise-helm.md -- - - k8s/netpol.md - - k8s/authn-authz.md - #- k8s/csr-api.md - #- k8s/openid-connect.md - #- k8s/podsecuritypolicy.md -- - - k8s/volumes.md - #- k8s/exercise-configmap.md - #- k8s/build-with-docker.md - #- k8s/build-with-kaniko.md - - k8s/configuration.md - - k8s/logs-centralized.md - - k8s/prometheus.md -- - - k8s/statefulsets.md - - k8s/local-persistent-volumes.md - - k8s/portworx.md - #- k8s/extending-api.md - #- k8s/operators.md - #- k8s/operators-design.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/logistics.md b/slides/logistics.md index 33388a06..3cc93f81 100644 --- a/slides/logistics.md +++ b/slides/logistics.md @@ -1,35 +1,13 @@ ## Intros -- This slide should be customized by the tutorial instructor(s). +- Hello! I'm Jérôme ([@jpetazzo](https://twitter.com/jpetazzo)) -- Hello! We are: +- The workshop will run from 9am to 4pm - - .emoji[👩🏻‍🏫] Ann O'Nymous ([@...](https://twitter.com/...), Megacorp Inc) - - - .emoji[👨🏾‍🎓] Stu Dent ([@...](https://twitter.com/...), University of Wakanda) - - - -- The workshop will run from ... - -- There will be a lunch break at ... +- There will be a lunch break at noon (And coffee breaks!) - Feel free to interrupt for questions at any time - *Especially when you see full screen container pictures!* - -- Live feedback, questions, help: @@CHAT@@ diff --git a/slides/qcon.html b/slides/qcon.html new file mode 100644 index 00000000..f7910e53 --- /dev/null +++ b/slides/qcon.html @@ -0,0 +1,10 @@ + diff --git a/slides/shared/prereqs.md b/slides/shared/prereqs.md index 9daca01a..78c9b079 100644 --- a/slides/shared/prereqs.md +++ b/slides/shared/prereqs.md @@ -50,8 +50,6 @@ Misattributed to Benjamin Franklin - Go to @@SLIDES@@ to view these slides -- Join the chat room: @@CHAT@@ - ] diff --git a/slides/swarm-fullday.yml b/slides/swarm-fullday.yml deleted file mode 100644 index 279be3d1..00000000 --- a/slides/swarm-fullday.yml +++ /dev/null @@ -1,67 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced -- snap -- btp-auto -- benchmarking -- elk-manual -- prom-manual - -chapters: -- shared/title.md -- logistics.md -- swarm/intro.md -- shared/about-slides.md -- shared/toc.md -- - shared/prereqs.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 30029a95..00000000 --- a/slides/swarm-halfday.yml +++ /dev/null @@ -1,66 +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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced -- snap -- btp-manual -- benchmarking -- elk-manual -- prom-manual - -chapters: -- shared/title.md -- logistics.md -- swarm/intro.md -- shared/about-slides.md -- shared/toc.md -- - shared/prereqs.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 36e1d353..00000000 --- a/slides/swarm-selfpaced.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: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person -- btp-auto - -chapters: -- shared/title.md -#- shared/logistics.md -- swarm/intro.md -- shared/about-slides.md -- shared/toc.md -- - shared/prereqs.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 02c1e6b2..00000000 --- a/slides/swarm-video.yml +++ /dev/null @@ -1,74 +0,0 @@ -title: | - Container Orchestration - with Docker and Swarm - -chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" - -gitrepo: github.com/jpetazzo/container.training - -slides: http://container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- in-person -- btp-auto - -chapters: -- shared/title.md -#- shared/logistics.md -- swarm/intro.md -- shared/about-slides.md -- shared/toc.md -- - shared/prereqs.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