Top Banner
HL7®, FHIR® and the flame Design mark are the registered trademarks of Health Level Seven International and are used with permission. Amsterdam, 14-16 November | @HL7 @FirelyTeam | #fhirdevdays | www.fhirdevdays.com Deploying a FHIR server in a Kubernetes cluster Marco Visser
21

Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

May 22, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

HL7®, FHIR® and the flame Design mark are the registered trademarks of Health Level Seven International and are used with permission.

Amsterdam, 14-16 November | @HL7 @FirelyTeam | #fhirdevdays | www.fhirdevdays.com

Deploying a FHIR server in a Kubernetes cluster

Marco Visser

Page 2: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Introduction

• Name: Marco Visser• Background:

• Firely team• Vonk developer• FHIR API developer• Devops for the Firely team

• Contact: [email protected]

Page 3: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Agenda

• Short introduction to Kubernetes• Helm Charts• Demo

Page 4: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Short introduction to Kubernetes

“Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.”

Page 5: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

What does Kubernetes do?

• Provide a runtime environment to Docker containers• Scale and load balance Docker containers• Provide an abstract view of the infrastructure of containers• Monitor and health checking running containers• Update containers• Etc.

Page 6: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Docker?

Page 7: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Kubernetes and Docker

• Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster• Takes care of Container scheduling (also scaling out)

Page 8: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Kubernetes architecture

KubernetesMaster

Node 1

Node 2

Node n

API

UI

CLI

Image registry

Page 9: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Pods

• Each pod has is own ip address• Pods are expected to be stateless

Pod X

Container

AContainer

B

Page 10: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Replica Set

• Keeps track of pods

Replica Set

Replicas: 3Template: Pod

Container

Pod

Container

Pod

Container

Pod

Container

A B C

Pod

Container

D

Page 11: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Deployments

• Manage Replica Set state transitions

Deployment

Replicas: 3Template:

Pod

Container

Replica Set

Replicas: 3Template:

Pod

Container

Replica Set A

2

Replica Set

Replicas: 2Template:

Pod

Container

Replica Set B

Page 12: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Services

• Exposing the pods to each other or to the outside world (out of thecluster)

Page 13: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Kubernetes runtime

Node 1

Pod X

Container

AContainer

B

Node nNode 2

Pod X

Container

AContainer

B

Pod Y

Container

D

Pod Y

Container

D

Pod Z

Container

E

Pod Y

Container

D

Page 14: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Vonk in production (https://vonk.fire.ly)

Node 1 Node 2

Mongo

MongoDB

Mongo

MongoDB

Vonk

Vonk

1.0.0

IngressControlle

r

Page 15: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Example deploymentapiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentlabels:

app: nginxspec:replicas: 3selector:

matchLabels:app: nginx

template:metadata:

labels:app: nginx

spec:containers:- name: nginx

image: nginx:1.15.4ports:- containerPort: 80

In this example:• A deployment nginx-deployment is created• Three pods will be created with a nginx

container inside

Page 16: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Helm Charts

The package manager for Kubernetes

“Helm is the best way to find, share, and use software built for Kubernetes”

Page 17: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

What is Helm?

• Helm helps you manage Kubernetes applications

• Helm Charts helps you define, install, and upgrade even the most complex Kubernetes application.

• Takes the pain out of updates with in-place upgrades and custom hooks.

• Charts are easy to version, share, and host on public or private servers.

Page 18: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Vonk Helm Chart

• Public on https://github.com/FirelyTeam/Vonk.Helm.Charts

Page 19: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Install Vonk on a Kubernetes Cluster

$ helm repo add firelyhttps://raw.githubusercontent.com/FirelyTeam/Vonk.Helm.Charts/master/

$ helm install --name my-release firely/vonk

Tested on:- Azure Kubernetes Service

- Google Kubernetes Engine- Amazon EKS

Page 20: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster

Demo

Page 21: Deploying a FHIR server in a Kubernetes cluster...2018/11/15  · Kubernetes and Docker • Kubernetes adds functionality to Docker • Manages a set of Docker hosts forming a Cluster