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

GDC 2019 :: Unstoppable Cloud Infrastructure wi...

GDC 2019 :: Unstoppable Cloud Infrastructure with OpenShift and Kubernetes

Come learn how Kubernetes is revolutionizing the cloud computing space - and, the anticipated impact on the gaming industry. We’ll start with a quick introduction to distributed systems and the architecture behind Kubernetes. Then we’ll learn about Kubernetes APIs and API object primitives. By the end of this session you should have a firm grasp of the benefits that can be gained from adopting a Cloud Native solutions architecture for your back-end gaming systems.

Jan Kleinert

March 22, 2019
Tweet

More Decks by Jan Kleinert

Other Decks in Technology

Transcript

  1. @jankleinert / @joshixisjosh9 Jan Kleinert Developer Advocate, Red Hat twitter:

    @jankleinert github.com/jankleinert Hello! Josh Wood Developer Advocate, Red Hat twitter: @joshixisjosh9 github.com/joshix 2
  2. @jankleinert / @joshixisjosh9 3 What is Kubernetes and why do

    we need it? Basic resource types What is OpenShift? Build, automate, iterate, collaborate What we’ll cover
  3. @jankleinert / @joshixisjosh9 9 Kubernetes is... An open source platform

    for running container-based workloads and managing them at scale
  4. @jankleinert / @joshixisjosh9 10 Kubernetes provides... An API API object

    primitives include these attributes: kind apiVersion metadata spec status
  5. @jankleinert / @joshixisjosh9 12 Control Plane • The control plane

    implements loop(s), checking that actual state == desired state • Controller - any control plane member implementing state reconciliation • The default control plane schedules Pods onto cluster Nodes 

  6. @jankleinert / @joshixisjosh9 13 Node • Node: a host machine

    where containers run • Each Node runs kubelet, the K8s agent
  7. @jankleinert / @joshixisjosh9 14 Pod • A group of one

    or more co-located containers • Minimum unit of scale • Pods run on Nodes, Replicas across them kind: Pod apiVersion: v1 metadata: creationTimestamp: name: hello-k8s labels: run: hello-k8s spec: containers: - name: hello-k8s image: jkleinert/raleigh-dogparks:v1 ports: - containerPort: 8080 resources: {}
  8. @jankleinert / @joshixisjosh9 16 Service • Endpoint for dynamic group

    of pods • Load Balances between them • Default is exposed only in cluster kind: Service apiVersion: v1 metadata: name: hello-k8s creationTimestamp: labels: run: hello-k8s spec: ports: - protocol: TCP port: 8080 targetPort: 8080 selector: run: hello-k8s type: LoadBalancer status: loadBalancer: {}
  9. @jankleinert / @joshixisjosh9 18 Deployment • Scale handle: • scale

    —replicas=x • Deployment is a group of Pods, their ReplicaSets kind: Deployment
 apiVersion: apps/v1beta1
 metadata:
 name: hello-k8s
 creationTimestamp: 
 labels:
 run: hello-k8s
 spec:
 replicas: 1
 selector:
 matchLabels:
 run: hello-k8s
 template:
 metadata:
 creationTimestamp: 
 labels:
 run: hello-k8s
 spec:
 containers:
 - name: hello-k8s
 image: jkleinert/raleigh-dogparks:v1
 resources: {}
 strategy: {}
 status: {}
  10. @jankleinert / @joshixisjosh9 24 Registry Route Deployment Configuration Build Configuration

    Persistent Volume Claim Ingress Service Persistent Volume Replication Controller* Pod Image Stream Kubernetes and OpenShift
  11. @jankleinert / @joshixisjosh9 28 Source to Image Combines source repos

    and operationally- maintained builder images to produce application images
  12. @jankleinert / @joshixisjosh9 29 Source to Image Available as a

    standalone project, for use with Jenkins or other external builder processes: github.com/openshift/source-to-image
  13. @jankleinert / @joshixisjosh9 33 oc rsync Useful for testing changes

    prior to a commit Copies files to a container; use the --watch flag to continuously sync oc rsync --exclude='node_modules*' . YOUR_PODNAME:

  14. @jankleinert / @joshixisjosh9 34 odo (OpenShift Do) A developer-focused command

    line tool for fast, iterative development on OpenShift https://github.com/redhat-developer/odo https://learn.openshift.com/introduction/developing-with-odo/
  15. @jankleinert / @joshixisjosh9 37 Templates as Installers Install a template

    into the current project, making it easier to reuse: oc create -f template.json

  16. @jankleinert / @joshixisjosh9 38 Templates as Installers Create an application

    from an installed template, from a file, or from a URL: oc new-app -f template.json

  17. @jankleinert / @joshixisjosh9 39 Multi-service App Example Node.js and MongoDB

    multi-service app oc create -f https://raw.githubusercontent.com/ openshift-roadshow/nationalparks-js/master/ nationalparks-js.json
  18. @jankleinert / @joshixisjosh9 40 Interactive Learning Portal: https://learn.openshift.com Kubernetes By

    Example: http://kubernetesbyexample.com Kubernetes Docs: https://kubernetes.io OpenShift Docs: https://docs.openshift.com Resources