21
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

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

  • Upload
    others

  • View
    62

  • Download
    2

Embed Size (px)

Citation preview

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

Introduction

• Name: Marco Visser• Background:

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

• Contact: [email protected]

Agenda

• Short introduction to Kubernetes• Helm Charts• Demo

Short introduction to Kubernetes

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

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.

Docker?

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)

Kubernetes architecture

KubernetesMaster

Node 1

Node 2

Node n

API

UI

CLI

Image registry

Pods

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

Pod X

Container

AContainer

B

Replica Set

• Keeps track of pods

Replica Set

Replicas: 3Template: Pod

Container

Pod

Container

Pod

Container

Pod

Container

A B C

Pod

Container

D

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

Services

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

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

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

Node 1 Node 2

Mongo

MongoDB

Mongo

MongoDB

Vonk

Vonk

1.0.0

IngressControlle

r

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

Helm Charts

The package manager for Kubernetes

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

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.

Vonk Helm Chart

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

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

Demo