next-gen devops engineering with docker and kubernetes by antons kranga

20
Next-gen engineering with Docker and Kubernetes Please post #JavaDay2015

Upload: javadayua

Post on 13-Apr-2017

689 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Next-gen engineering with Docker and Kubernetes

Please post #JavaDay2015

Page 2: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

:~ whoami:

Antons Kranga

Cloud architect and full-stack developer with ~15 years in Java technology

Page 3: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Docker and Java

Page 4: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Motivation

dev Chuck Norris app ops

deploy

Page 5: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Docker

Guest OSVM

Guest OS

Container engine

Container engine

Hypervisor

VM

Applications isolated inside containersRapid deployment

Focuses on service is inside container

dev ops

Focuses on env outside container

Dockerfileis a contract

Page 6: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

DockerfileDockerfile

FROM java:jdk

COPY chnorr.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

Page 7: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

WorkflowDockerfile

FROM java:jdk

COPY chnorr.jar /app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/app.jar"]

dev

Java code &Dockerfile

Compile &Unit test

chnorr.jar build registry(private or public)

push ops

pull

Container engine

docker run

Page 8: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Things to rememberContainers have ephemeral. Persistent volumes should be managed separatelyApp logs > /dev/stdout. Logs will be streamed to log collector service

Use environment variables to inject configuration parameters inside container Do not use ENV vars for secrets

Use private registry to distribute containers

Containers != VM (!!!)

Page 9: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Rugged Docker

Page 10: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

KubernetesCluster manager for your containers

Page 11: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Docker needs Platform

Guest OSVM

Guest OS

Container engine

Container engine

Hypervisor

VM

Docker is just a container engine many things are not there

• Networking• Storage• Service discovery• Container scheduling• Placement and load

balancing• Routing• Self healing ...

Page 12: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Kubernetes Architecutre

Page 13: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Logical view

Serviceports80,443

10.0.1.10

container

container

10.0.1.11

container

container

load balancer services pods rc

labels labels

labels labels

Page 14: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Chuck Norris pod exampleService

apiVersion: v1kind: Servicemetadata: name: chuck-norris labels: name: chuck-norris-servselector: chuck: norris spec: type: LoadBalancer clusterIP: 10.0.1.10 ports: - name: http port: 80

Replication ControllerapiVersion: v1kind: ReplicationControllermetadata: name: chuck-norris labels: chuck: norris spec: replicas: 3 selector: name: chuck-norristemplate: metadata: labels: name: chuck-norrisspec: containers: - name: chuck image: akranga/chnorr:1.0.0 ports: - name: http containerPort: 8080

port exposed in Dockerfile

Page 15: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Things to rememberDIND makes you naked needs privileged mode

Do not abuse etcd of kubernetesyou can brake the platform

Page 16: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

JenkinsBetter continuous delivery model

Page 17: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

CI with Kubernetesdev push

push

ops

pullgitmaster

Compile &Unit test app.jar build

private registry Create pod

Chuck Norris app

pull

Page 18: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Putting all togetherjenkins

ports80 jenkins_master

load balancer services pods storage

jenkins_java_slave

jenkins_kube_slave

jenkins_docker_slave

jenkinsports80 private_registry

chnorrgreen

ports80 chucknorris:b24

chucknorris:b25chnorrlatest

ports80

cloudstorage

cloudstorage

Page 19: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Things to remember

Workflows can be part of app-baselineShare workspace between slaves

Don’t forget private docker registry

DIND is evil but unavoidable

Page 20: Next-gen DevOps engineering with Docker and Kubernetes by Antons Kranga

Questions?