From b365106c20b349358fbc78db1128c1df091d4701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Thu, 19 Mar 2026 18:46:41 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Adyen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- slides/_redirects | 1 + slides/intro-fullday.yml | 76 ------- slides/intro-selfpaced.yml | 79 ------- slides/intro-twodays.yml | 86 ------- slides/k8s/admission.md | 407 ---------------------------------- slides/k8s/helm-intro.md | 2 +- slides/k8s/ingress.md | 2 +- slides/k8s/resource-limits.md | 10 +- slides/kadm-fullday.yml | 67 ------ slides/kadm-twodays.yml | 98 -------- slides/kube-adv.yml | 100 --------- slides/kube-fullday.yml | 138 ------------ slides/kube-halfday.yml | 89 -------- slides/kube-selfpaced.yml | 183 --------------- slides/kube-twodays.yml | 138 ------------ slides/kube.yml | 78 +++++++ slides/logistics-template.md | 71 +----- slides/mlops.yml | 47 ---- slides/swarm.yml | 79 ------- 19 files changed, 89 insertions(+), 1662 deletions(-) delete mode 100644 slides/intro-fullday.yml delete mode 100644 slides/intro-selfpaced.yml delete mode 100644 slides/intro-twodays.yml 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 delete mode 100644 slides/mlops.yml delete mode 100644 slides/swarm.yml diff --git a/slides/_redirects b/slides/_redirects index 98daa130..6cc0021d 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 7dc764fa..00000000 --- a/slides/intro-fullday.yml +++ /dev/null @@ -1,76 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- shared/handson.md -- containers/labs-live.md -- shared/connecting.md -- containers/labs-async.md -- shared/toc.md -- - #- containers/Docker_Overview.md - #- containers/Docker_History.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_Multistage.md - #- containers/Docker_Machine.md - #- containers/Advanced_Dockerfiles.md - #- containers/Buildkit.md - #- containers/Exercise_Dockerfile_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/Security.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 c7b82087..00000000 --- a/slides/intro-selfpaced.yml +++ /dev/null @@ -1,79 +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 -#- logistics.md -#- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- shared/handson.md -#- containers/labs-live.md -#- shared/connecting.md -- containers/labs-async.md -- shared/toc.md -- - containers/Docker_Overview.md - - containers/Docker_History.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_Multistage.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/Exercise_Dockerfile_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/Security.md - - containers/Rootless_Networking.md - - containers/Images_Deep_Dive.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 374c6f19..00000000 --- a/slides/intro-twodays.yml +++ /dev/null @@ -1,86 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- shared/handson.md -- containers/labs-live.md -- shared/connecting.md -- containers/labs-async.md -- shared/toc.md -- # DAY 1 - - containers/Docker_Overview.md - #- containers/Docker_History.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_Multistage.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/Exercise_Dockerfile_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/Rootless_Networking.md - #- containers/Security.md - #- containers/Pods_Anatomy.md - #- containers/Ecosystem.md diff --git a/slides/k8s/admission.md b/slides/k8s/admission.md index 872964da..af564aa9 100644 --- a/slides/k8s/admission.md +++ b/slides/k8s/admission.md @@ -176,413 +176,6 @@ --- -## Developing a simple admission webhook - -- We're going to register a custom webhook! - -- First, we'll just dump the `AdmissionRequest` object - - (using a little Node app) - -- Then, we'll implement a strict policy on a specific label - - (using a little Flask app) - -- Development will happen in local containers, plumbed with ngrok - -- The we will deploy to the cluster 🔥 - ---- - -## Running the webhook locally - -- We prepared a Docker Compose file to start the whole stack - - (the Node "echo" app, the Flask app, and one ngrok tunnel for each of them) - -- We will need an ngrok account for the tunnels - - (a free account is fine) - ---- - -class: extra-details - -## What's ngrok? - -- Ngrok provides secure tunnels to access local services - -- Example: run `ngrok http 1234` - -- `ngrok` will display a publicly-available URL (e.g. https://xxxxyyyyzzzz.ngrok.app) - -- Connections to https://xxxxyyyyzzzz.ngrok.app will terminate at `localhost:1234` - -- Basic product is free; extra features (vanity domains, end-to-end TLS...) for $$$ - -- Perfect to develop our webhook! - ---- - -class: extra-details - -## Ngrok in production - -- Ngrok was initially known for its local webhook development features - -- It now supports production scenarios as well - - (load balancing, WAF, authentication, circuit-breaking...) - -- Including some that are very relevant to Kubernetes - - (e.g. [ngrok Ingress Controller](https://github.com/ngrok/kubernetes-ingress-controller) - ---- - -## Ngrok tokens - -- If you're attending a live training, you might have an ngrok token - -- Look in `~/ngrok.env` and if that file exists, copy it to the stack: - -.lab[ - -```bash -cp ~/ngrok.env ~/container.training/webhooks/admission/.env -``` - -] - ---- - -## Starting the whole stack - -.lab[ - -- Go to the webhook directory: - ```bash - cd ~/container.training/webhooks/admission - ``` - -- Start the webhook in Docker containers: - ```bash - docker-compose up - ``` - -] - -*Note the URL in `ngrok-echo_1` looking like `url=https://xxxx.ngrok.io`.* - ---- - -## Update the webhook configuration - -- We have a webhook configuration in `k8s/webhook-configuration.yaml` - -- We need to update the configuration with the correct `url` - -.lab[ - -- Edit the webhook configuration manifest: - ```bash - vim k8s/webhook-configuration.yaml - ``` - -- **Uncomment** the `url:` line - -- **Update** the `.ngrok.io` URL with the URL shown by Compose - -- Save and quit - -] - ---- - -## Register the webhook configuration - -- Just after we register the webhook, it will be called for each matching request - - (CREATE and UPDATE on Pods in all namespaces) - -- The `failurePolicy` is `Ignore` - - (so if the webhook server is down, we can still create pods) - -.lab[ - -- Register the webhook: - ```bash - kubectl apply -f k8s/webhook-configuration.yaml - ``` - -] - -It is strongly recommended to tail the logs of the API server while doing that. - ---- - -## Create a pod - -- Let's create a pod and try to set a `color` label - -.lab[ - -- Create a pod named `chroma`: - ```bash - kubectl run --restart=Never chroma --image=nginx - ``` - -- Add a label `color` set to `pink`: - ```bash - kubectl label pod chroma color=pink - ``` - -] - -We should see the `AdmissionReview` objects in the Compose logs. - -Note: the webhook doesn't do anything (other than printing the request payload). - ---- - -## Use the "real" admission webhook - -- We have a small Flask app implementing a particular policy on pod labels: - - - if a pod sets a label `color`, it must be `blue`, `green`, `red` - - - once that `color` label is set, it cannot be removed or changed - -- That Flask app was started when we did `docker-compose up` earlier - -- It is exposed through its own ngrok tunnel - -- We are going to use that webhook instead of the other one - - (by changing only the `url` field in the ValidatingWebhookConfiguration) - ---- - -## Update the webhook configuration - -.lab[ - -- First, check the ngrok URL of the tunnel for the Flask app: - ```bash - docker-compose logs ngrok-flask - ``` - -- Then, edit the webhook configuration: - ```bash - kubectl edit validatingwebhookconfiguration admission.container.training - ``` -- Find the `url:` field with the `.ngrok.io` URL and update it - -- Save and quit; the new configuration is applied immediately - -] - ---- - -## Verify the behavior of the webhook - -- Try to create a few pods and/or change labels on existing pods - -- What happens if we try to make changes to the earlier pod? - - (the one that has `label=pink`) - ---- - -## Deploying the webhook on the cluster - -- Let's see what's needed to self-host the webhook server! - -- The webhook needs to be reachable through a Service on our cluster - -- The Service needs to accept TLS connections on port 443 - -- We need a proper TLS certificate: - - - with the right `CN` and `subjectAltName` (`..svc`) - - - signed by a trusted CA - -- We can either use a "real" CA, or use the `caBundle` option to specify the CA cert - - (the latter makes it easy to use self-signed certs) - ---- - -## In practice - -- We're going to generate a key pair and a self-signed certificate - -- We will store them in a Secret - -- We will run the webhook in a Deployment, exposed with a Service - -- We will update the webhook configuration to use that Service - -- The Service will be named `admission`, in Namespace `webhooks` - - (keep in mind that the ValidatingWebhookConfiguration itself is at cluster scope) - ---- - -## Let's get to work! - -.lab[ - -- Make sure we're in the right directory: - ```bash - cd ~/container.training/webhooks/admission - ``` - -- Create the namespace: - ```bash - kubectl create namespace webhooks - ``` - -- Switch to the namespace: - ```bash - kubectl config set-context --current --namespace=webhooks - ``` - -] - ---- - -## Deploying the webhook - -- *Normally,* we would author an image for this - -- Since our webhook is just *one* Python source file ... - - ... we'll store it in a ConfigMap, and install dependencies on the fly - -.lab[ - -- Load the webhook source in a ConfigMap: - ```bash - kubectl create configmap admission --from-file=flask/webhook.py - ``` - -- Create the Deployment and Service: - ```bash - kubectl apply -f k8s/webhook-server.yaml - ``` - -] - ---- - -## Generating the key pair and certificate - -- Let's call OpenSSL to the rescue! - - (of course, there are plenty others options; e.g. `cfssl`) - -.lab[ - -- Generate a self-signed certificate: - ```bash - NAMESPACE=webhooks - SERVICE=admission - CN=$SERVICE.$NAMESPACE.svc - openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem \ - -days 30 -subj /CN=$CN -addext subjectAltName=DNS:$CN - ``` - -- Load up the key and cert in a Secret: - ```bash - kubectl create secret tls admission --cert=cert.pem --key=key.pem - ``` - -] - ---- - -## Update the webhook configuration - -- Let's reconfigure the webhook to use our Service instead of ngrok - -.lab[ - -- Edit the webhook configuration manifest: - ```bash - vim k8s/webhook-configuration.yaml - ``` - -- Comment out the `url:` line - -- Uncomment the `service:` section - -- Save, quit - -- Update the webhook configuration: - ```bash - kubectl apply -f k8s/webhook-configuration.yaml - ``` - -] - ---- - -## Add our self-signed cert to the `caBundle` - -- The API server won't accept our self-signed certificate - -- We need to add it to the `caBundle` field in the webhook configuration - -- The `caBundle` will be our `cert.pem` file, encoded in base64 - ---- - -Shell to the rescue! - -.lab[ - -- Load up our cert and encode it in base64: - ```bash - CA=$(base64 -w0 < cert.pem) - ``` - -- Define a patch operation to update the `caBundle`: - ```bash - PATCH='[{ - "op": "replace", - "path": "/webhooks/0/clientConfig/caBundle", - "value":"'$CA'" - }]' - ``` - -- Patch the webhook configuration: - ```bash - kubectl patch validatingwebhookconfiguration \ - admission.webhook.container.training \ - --type='json' -p="$PATCH" - ``` - -] - ---- - -## Try it out! - -- Keep an eye on the API server logs - -- Tail the logs of the pod running the webhook server - -- Create a few pods; we should see requests in the webhook server logs - -- Check that the label `color` is enforced correctly - - (it should only allow values of `red`, `green`, `blue`) - ---- - ## Real world examples - [kube-image-keeper][kuik] rewrites image references to use cached images diff --git a/slides/k8s/helm-intro.md b/slides/k8s/helm-intro.md index ebd5160e..15db62d6 100644 --- a/slides/k8s/helm-intro.md +++ b/slides/k8s/helm-intro.md @@ -1,4 +1,4 @@ -# Managing stacks with Helm +# Managing stacks with Helm ⏩ - Helm is a (kind of!) package manager for Kubernetes diff --git a/slides/k8s/ingress.md b/slides/k8s/ingress.md index ce336338..b4fb1ce2 100644 --- a/slides/k8s/ingress.md +++ b/slides/k8s/ingress.md @@ -1,4 +1,4 @@ -# Exposing HTTP services with Ingress resources +# Exposing HTTP services with Ingress resources ⏩ - Service = layer 4 (TCP, UDP, SCTP) diff --git a/slides/k8s/resource-limits.md b/slides/k8s/resource-limits.md index a93d8ffb..513156ea 100644 --- a/slides/k8s/resource-limits.md +++ b/slides/k8s/resource-limits.md @@ -1,4 +1,4 @@ -# Resource Limits +# Resource Limits ⏩ - We can attach resource indications to our pods @@ -725,7 +725,7 @@ class: extra-details --- -# Defining min, max, and default resources +# Defining min, max, and default resources ⏩ - We can create LimitRange objects to indicate any combination of: @@ -798,7 +798,7 @@ per Pod, but it's not [officially documented yet](https://github.com/kubernetes/ --- -# Namespace quotas +# Namespace quotas ⏩ - We can also set quotas per namespace @@ -966,7 +966,7 @@ class: extra-details --- -# Limiting resources in practice +# Limiting resources in practice ⏩ - We have at least three mechanisms: @@ -1000,7 +1000,7 @@ class: extra-details --- -## Set a ResourceQuota +## Set a ResourceQuota (optional) - In each namespace, create a ResourceQuota object diff --git a/slides/kadm-fullday.yml b/slides/kadm-fullday.yml deleted file mode 100644 index 28af7390..00000000 --- a/slides/kadm-fullday.yml +++ /dev/null @@ -1,67 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- k8s/prereqs-advanced.md -- shared/handson.md -- k8s/labs-live.md -- shared/connecting.md -- k8s/labs-async.md -- shared/toc.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 2161154e..00000000 --- a/slides/kadm-twodays.yml +++ /dev/null @@ -1,98 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- k8s/prereqs-advanced.md -- shared/handson.md -- k8s/labs-live.md -- shared/connecting.md -- k8s/labs-async.md -- shared/toc.md -# DAY 1 -- - 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 5c272d1d..00000000 --- a/slides/kube-adv.yml +++ /dev/null @@ -1,100 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- k8s/prereqs-advanced.md -- shared/handson.md -- k8s/labs-live.md -- shared/connecting.md -- k8s/labs-async.md -- shared/toc.md -- #1 - - 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/templating.md - - 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-setup.md - #- k8s/ingress-advanced.md - #- k8s/ingress-canary.md - - k8s/gateway-api.md - - k8s/cert-manager.md - - k8s/cainjector.md - - k8s/eck.md -- #7 - - k8s/admission.md - - k8s/kyverno.md - - k8s/kyverno-colors.md - - k8s/kyverno-ingress.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 913500d5..00000000 --- a/slides/kube-fullday.yml +++ /dev/null @@ -1,138 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- k8s/prereqs-basic.md -- shared/handson.md -- k8s/labs-live.md -- shared/connecting.md -- k8s/labs-async.md -- shared/toc.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/ingress-setup.md - #- k8s/gateway-api.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/templating.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 4e741a0b..00000000 --- a/slides/kube-halfday.yml +++ /dev/null @@ -1,89 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- k8s/prereqs-basic.md -- shared/handson.md -- k8s/labs-live.md -- shared/connecting.md -- k8s/labs-async.md -- shared/toc.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/templating.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 e640f153..00000000 --- a/slides/kube-selfpaced.yml +++ /dev/null @@ -1,183 +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 -#- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- k8s/prereqs-basic.md -- shared/handson.md -#- k8s/labs-live.md -#- shared/connecting.md -- k8s/labs-async.md -- shared/toc.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/kind.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/taints-and-tolerations.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-setup.md - - k8s/ingress-advanced.md - #- k8s/ingress-canary.md - - k8s/ingress-tls.md - - k8s/gateway-api.md - - k8s/cert-manager.md - - k8s/cainjector.md - - k8s/templating.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/harbor.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/argocd-advanced.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/kyverno-colors.md - - k8s/kyverno-ingress.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 a4af3e69..00000000 --- a/slides/kube-twodays.yml +++ /dev/null @@ -1,138 +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 -- shared/chat-room-im.md -#- shared/chat-room-slack.md -#- shared/chat-room-zoom-meeting.md -#- shared/chat-room-zoom-webinar.md -- shared/about-slides.md -- k8s/prereqs-basic.md -- shared/handson.md -- k8s/labs-live.md -- shared/connecting.md -- k8s/labs-async.md -- shared/toc.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-setup.md - #- k8s/ingress-advanced.md - #- k8s/ingress-canary.md - #- k8s/ingress-tls.md - #- k8s/gateway-api.md - - k8s/templating.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..9c6385ac --- /dev/null +++ b/slides/kube.yml @@ -0,0 +1,78 @@ +title: | + Kubernetes + +#chat: "[Mattermost](https://training.enix.io/mattermost)" + +gitrepo: github.com/jpetazzo/container.training + +slides: https://2026-05-adyen.container.training/ + +#slidenumberprefix: "#SomeHashTag — " + +exclude: +- self-paced + +content: +- shared/title.md +- logistics.md +- shared/about-slides.md +#- shared/chat-room-im.md +- k8s/prereqs-advanced.md +- shared/handson.md +- k8s/labs-live.md +- shared/connecting.md +- k8s/labs-async.md +- shared/toc.md +- # 1A + - k8s/demo-apps.md + - k8s/kind.md + - k8s/helm-intro.md + - k8s/ingress.md + - k8s/gateway-api.md + - exercises/advanced-http-details.md +- + - k8s/helm-chart-format.md + - k8s/helm-create-basic-chart.md + - exercises/helm-generic-chart-details.md + - k8s/helm-dependencies.md + - k8s/helm-create-better-chart.md + - exercises/helm-umbrella-chart-details.md +- # 2A + - k8s/gitworkflows.md + - k8s/argocd.md + - k8s/argocd-advanced.md + - exercises/argocd-appset-details.md +- + - k8s/resource-limits.md + - exercises/reqlim-details.md + - k8s/cluster-sizing.md + - k8s/disruptions.md + - k8s/horizontal-pod-autoscaler.md +- + - k8s/admission.md + - k8s/kyverno.md + - k8s/pod-security-admission.md + - exercises/kyverno-ingress-domain-name-details.md +- # 3A + - k8s/architecture.md + - k8s/kubenet.md + - k8s/deploymentslideshow.md + - k8s/dmuc-easy.md + - k8s/cni-internals.md + - k8s/dmuc-medium.md + - k8s/staticpods.md + - k8s/dmuc-hard.md + - exercises/dmuc-networking-details.md + - shared/thankyou.md +- # EXTRA + - | + # (Additional materials past this point) + - k8s/yamldeploy.md + - k8s/volumes.md + - k8s/configuration.md + - k8s/operators.md + - k8s/operators-design.md + - k8s/kubebuilder.md + - k8s/localkubeconfig.md + - k8s/service-types.md + - k8s/accessinternal.md diff --git a/slides/logistics-template.md b/slides/logistics-template.md index fe7d8986..1775378b 100644 --- a/slides/logistics-template.md +++ b/slides/logistics-template.md @@ -1,63 +1,13 @@ ## Introductions -⚠️ This slide should be customized by the tutorial instructor(s). +- Hello! I'm Jérôme ([@jpetazzo], [@jpetazzo@hachyderm.io], Ardan Labs) - - - - - - - - - - - - [@alexbuisine]: https://twitter.com/alexbuisine [EphemeraSearch]: https://ephemerasearch.com/ [@jpetazzo]: https://twitter.com/jpetazzo @@ -65,18 +15,3 @@ [@s0ulshake]: https://twitter.com/s0ulshake [Quantgene]: https://www.quantgene.com/ ---- - -## Exercises - -- At the end of each day, there is a series of exercises - -- To make the most out of the training, please try the exercises! - - (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 diff --git a/slides/mlops.yml b/slides/mlops.yml deleted file mode 100644 index f2eeceb5..00000000 --- a/slides/mlops.yml +++ /dev/null @@ -1,47 +0,0 @@ -title: | - Asynchronous Architecture Patterns To Scale ML and Other High Latency Workloads on 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://FIXME.container.training/ - -#slidenumberprefix: "#SomeHashTag — " - -exclude: -- self-paced - -content: -- shared/title.md -- logistics.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 -- k8s/prereqs-advanced.md -# Note: if we work on this later, we should refactor it -# to follow the same pattern as the other classes -# (i.e. use the k8s/labs-*.md files) -- k8s/handson-mlops.md -- shared/connecting.md -- k8s/mlops-headsup.md -- shared/toc.md -- - - k8s/ollama-intro.md - - k8s/ollama-metrics.md - - k8s/queue-architecture.md - - k8s/bento-intro.md -- - - k8s/resource-limits.md - - k8s/cluster-autoscaler.md - - k8s/ollama-reqlim.md - - k8s/bento-hpa.md - - k8s/bento-rmq.md - - k8s/bento-cnpg.md - - k8s/helmfile.md - - shared/thankyou.md - - shared/contact.md diff --git a/slides/swarm.yml b/slides/swarm.yml deleted file mode 100644 index efa273d7..00000000 --- a/slides/swarm.yml +++ /dev/null @@ -1,79 +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/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