Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developing on Kubernetes

Developing on Kubernetes

Avatar for Michael Hausenblas

Michael Hausenblas

March 14, 2018
Tweet

More Decks by Michael Hausenblas

Other Decks in Technology

Transcript

  1. Hit me up on Twitter: @mhausenblas 2 • Developer Advocate

    @ Red Hat (Go, Kubernetes, OpenShift) • Developer Advocate @ Mesosphere • Chief Data Engineer @ MapR • Applied research (IE/AT) • Nowadays mainly Go (Python, Node, Java, C++) • Dev turned ops $ whois mhausenblas
  2. Hit me up on Twitter: @mhausenblas 9 • You are

    part of a devops team, developing three µS that in turn depend on five µS outside of your control • Have Node.js/Java/Python and Kubernetes cluster 
 as target runtime environment • Want ✓ high development velocity
 ✓ dev/ops parity An example brief …
  3. Hit me up on Twitter: @mhausenblas 11 Containers 101 containerz.info

    … a process group on steroids using namespaces, cgroups, and a copy-on-write filesystem
  4. Hit me up on Twitter: @mhausenblas 13 Container orchestration kubernetes.io

    • Container lifecycle management • Declarative, state-driven • Extensible, modular API • Robust, flexible, scalable
  5. Hit me up on Twitter: @mhausenblas 15 Status quo build

    artefacts build tooling runtime config code creds CI/CD pipeline |||| code repo binary bare metal server/VMs
  6. Hit me up on Twitter: @mhausenblas 16 Doing it the

    cloud native way build artefacts build tooling runtime CI/CD pipeline |||| code repo container container orchestrator +
 service mesh config code creds container image manifest container runtime manifest service mesh manifest container
 registry
  7. Hit me up on Twitter: @mhausenblas 17 Development setups (conceptually)

    remote local cluster dev cluster dev cluster dev dev cluster pure off-line proxied live pure on-line
  8. Hit me up on Twitter: @mhausenblas 18 Tooling www.telepresence.io vapor-ware.github.io/ksync/

    www.openshift.org kubed.sh kedgeproject.org ksonnet.io Minikube Minishift Docker Community Edition for Mac & Windows github.com/GoogleCloudPlatform/skaffold draft.sh
  9. Hit me up on Twitter: @mhausenblas 19 Example 1: all

    local/not containerized • Each service developed locally (e.g., on your laptop) • Natively, that is, in a non- containerized manner
  10. Hit me up on Twitter: @mhausenblas 20 Example 1: all

    local/not containerized • Pros • continue to work as you “always did” • high development velocity • Cons • dependency hell • dev/prod imparity
  11. Hit me up on Twitter: @mhausenblas 21 Example 2: all

    local/containerized • Each service developed locally (e.g., on your laptop) • One container image per service, locally managed (build, run, etc.)
  12. Hit me up on Twitter: @mhausenblas 22 Example 2: all

    local/containerized • Pros • minimal overhead, can learn in hours • no dependency hell • high development velocity • Cons • still not full dev/ops parity
  13. Hit me up on Twitter: @mhausenblas 23 Example 3: mixed

    local/cluster • “Your” service developed locally (containerized or not) • Other service(s) run in the cluster
  14. Hit me up on Twitter: @mhausenblas 24 Example 3: mixed

    local/cluster • Pros • almost full dev/ops parity • Cons • requires tooling (proxy, CI/CD) • Neutral • development velocity depends on tooling
  15. Hit me up on Twitter: @mhausenblas 25 Example 4: all

    in-cluster • “Your” service developed locally and container image is pushed to cluster (registry) • All services run in the cluster
  16. Hit me up on Twitter: @mhausenblas 26 Example 4: all

    in-cluster • Pros • full dev/ops parity • scalability (testing!) • Cons • development velocity sucks
  17. Hit me up on Twitter: @mhausenblas 31 Articles and related

    resources (1) • What should be proper (local) development workflow?—Kubernetes Issue #43665 • https://abhishek-tiwari.com/local-development-environment-for-kubernetes-using-minikube/ • https://dzone.com/articles/a-development-workflow-for-kubernetes-services • http://blog.jonparrott.com/building-a-paas-on-kubernetes/ • https://kubecloud.io/minikube-workflows-d7166e1da290 • https://developer.atlassian.com/blog/2017/07/kubernetes-workflow/ • https://blog.codersociety.com/node-js-development-workflow-for-kubernetes-part-1-c05e3771d40a
  18. Hit me up on Twitter: @mhausenblas 32 Articles and related

    resources (2) • https://stackoverflow.com/questions/29746926/how-to-do-local-development-with-kubernetes • https://kubernetes.io/docs/user-journeys/users/application-developer/intermediate/ • Declarative application management in Kubernetes by Brian Grant (09/2017) • https://docs.microsoft.com/en-us/azure/container-service/kubernetes/container-service-draft-up • https://thenewstack.io/microsoft-launches-brigade-event-driven-scripting-tool-kubernetes/ • https://blog.openshift.com/live-code-updates-using-webdav/ • HN discussion on Google Skaffold – Easy and Repeatable Kubernetes Development