From c04dafd6984e602bc5e79a1d028d91b6d3556485 Mon Sep 17 00:00:00 2001 From: Jerome Petazzoni Date: Fri, 28 Sep 2018 16:08:18 -0500 Subject: [PATCH] Assemble deck for Velocity NYC 2018 --- slides/_redirects | 2 + slides/k8s/whatsnext.md | 103 ---------------------------------------- slides/kube-fullday.yml | 11 ++--- slides/logistics.md | 18 +------ 4 files changed, 8 insertions(+), 126 deletions(-) create mode 100644 slides/_redirects diff --git a/slides/_redirects b/slides/_redirects new file mode 100644 index 00000000..351352f8 --- /dev/null +++ b/slides/_redirects @@ -0,0 +1,2 @@ +/ /kube-fullday.yml.html 200 + diff --git a/slides/k8s/whatsnext.md b/slides/k8s/whatsnext.md index b2eba31e..48364c42 100644 --- a/slides/k8s/whatsnext.md +++ b/slides/k8s/whatsnext.md @@ -20,26 +20,6 @@ And *then* it is time to look at orchestration! --- -## Namespaces - -- Namespaces let you run multiple identical stacks side by side - -- Two namespaces (e.g. `blue` and `green`) can each have their own `redis` service - -- Each of the two `redis` services has its own `ClusterIP` - -- CoreDNS creates two entries, mapping to these two `ClusterIP` addresses: - - `redis.blue.svc.cluster.local` and `redis.green.svc.cluster.local` - -- Pods in the `blue` namespace get a *search suffix* of `blue.svc.cluster.local` - -- As a result, resolving `redis` from a pod in the `blue` namespace yields the "local" `redis` - -.warning[This does not provide *isolation*! That would be the job of network policies.] - ---- - ## Stateful services (databases etc.) - As a first step, it is wiser to keep stateful services *outside* of the cluster @@ -60,89 +40,6 @@ And *then* it is time to look at orchestration! --- -## Stateful services (second take) - -- If you really want to host stateful services on Kubernetes, you can look into: - - - volumes (to carry persistent data) - - - storage plugins - - - persistent volume claims (to ask for specific volume characteristics) - - - stateful sets (pods that are *not* ephemeral) - ---- - -## HTTP traffic handling - -- *Services* are layer 4 constructs - -- HTTP is a layer 7 protocol - -- It is handled by *ingresses* (a different resource kind) - -- *Ingresses* allow: - - - virtual host routing - - session stickiness - - URI mapping - - and much more! - -- Check out e.g. [Træfik](https://docs.traefik.io/user-guide/kubernetes/) - ---- - -## Logging - -- Logging is delegated to the container engine - -- Logs are exposed through the API - -- Logs are also accessible through local files (`/var/log/containers`) - -- Log shipping to a central platform is usually done through these files - - (e.g. with an agent bind-mounting the log directory) - ---- - -## Metrics - -- The kubelet embeds [cAdvisor](https://github.com/google/cadvisor), which exposes container metrics - - (cAdvisor might be separated in the future for more flexibility) - -- It is a good idea to start with [Prometheus](https://prometheus.io/) - - (even if you end up using something else) - -- Starting from Kubernetes 1.8, we can use the [Metrics API](https://kubernetes.io/docs/tasks/debug-application-cluster/core-metrics-pipeline/) - -- [Heapster](https://github.com/kubernetes/heapster) was a popular add-on - - (but is being [deprecated](https://github.com/kubernetes/heapster/blob/master/docs/deprecation.md) starting with Kubernetes 1.11) - - - ---- - -## Managing the configuration of our applications - -- Two constructs are particularly useful: secrets and config maps - -- They allow to expose arbitrary information to our containers - -- **Avoid** storing configuration in container images - - (There are some exceptions to that rule, but it's generally a Bad Idea) - -- **Never** store sensitive information in container images - - (It's the container equivalent of the password on a post-it note on your screen) - ---- - ## Managing stack deployments - The best deployment tool will vary, depending on: diff --git a/slides/kube-fullday.yml b/slides/kube-fullday.yml index 0da90e1b..bb41ca51 100644 --- a/slides/kube-fullday.yml +++ b/slides/kube-fullday.yml @@ -1,14 +1,12 @@ title: | - Deploying and Scaling Microservices - with Kubernetes + Kubernetes bootcamp: + Deploying and scaling microservices -#chat: "[Slack](https://dockercommunity.slack.com/messages/C7GKACWDV)" -#chat: "[Gitter](https://gitter.im/jpetazzo/workshop-yyyymmdd-city)" -chat: "In person!" +chat: "[Gitter](https://gitter.im/jpetazzo/training-20180930-nyc)" gitrepo: github.com/jpetazzo/container.training -slides: http://container.training/ +slides: http://k8s2d.container.training/ exclude: - self-paced @@ -48,7 +46,6 @@ chapters: - k8s/netpol.md - k8s/authn-authz.md - - k8s/ingress.md - - k8s/gitworkflows.md - k8s/prometheus.md - - k8s/volumes.md - k8s/build-with-docker.md diff --git a/slides/logistics.md b/slides/logistics.md index c818d864..eada047d 100644 --- a/slides/logistics.md +++ b/slides/logistics.md @@ -2,23 +2,9 @@ - This slide should be customized by the tutorial instructor(s). -- Hello! We are: +- Hello! I'm Jérôme ([@jpetazzo](https://twitter.com/jpetazzo), Enix SAS) - - .emoji[👩🏻‍🏫] Ann O'Nymous ([@...](https://twitter.com/...), Megacorp Inc) - - - .emoji[👨🏾‍🎓] Stu Dent ([@...](https://twitter.com/...), University of Wakanda) - - - -- The workshop will run from ... +- The workshop will run from 9am to 5pm - There will be a lunch break at ...