More Related Content Similar to Continuous Delivery to Kubernetes Using Helm (20) Continuous Delivery to Kubernetes Using Helm10. Example: Kubernetes resource
apiVersion: v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: prydonius/node-todo:v1.0.0
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 120
timeoutSeconds: 5
18. Pipeline Stages: Build
environment {
IMAGE_NAME = 'prydonius/node-todo'
}
stage('Build') {
agent any
steps {
checkout scm
sh 'docker build -t $IMAGE_NAME:$BUILD_ID .'
}
}
19. Pipeline Stages: Push
stage('Image Release') {
agent any
when {
expression { env.BRANCH_NAME == 'master' }
}
steps {
withCredentials([[$class: 'UsernamePasswordMultiBinding',
credentialsId: 'dockerhub',
usernameVariable: 'DOCKER_USERNAME', passwordVariable:
'DOCKER_PASSWORD']]) {
sh '''
docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
docker push $IMAGE_NAME:$BUILD_ID
'''
}
}
}
Only release master builds
20. Pipeline Stages: Staging Deployment
stage('Staging Deployment') {
...
environment {
RELEASE_NAME = 'todos-staging'
SERVER_HOST = 'todos.staging.k8s.prydoni.us'
}
steps {
sh '''
. ./helm/helm-init.sh
helm dependencies build ./helm/todo
helm upgrade --install --namespace staging $RELEASE_NAME ./helm/todo
--set image.tag=$BUILD_ID,ingress.host=$SERVER_HOST
'''
}
}
21. Pipeline Stages: Manual Verification
stage('Deploy to Production?') {
when {
expression { env.BRANCH_NAME == 'master' }
}
steps {
// Prevent any older builds from deploying to production
milestone(1)
input 'Deploy to Production?'
milestone(2)
}
}
22. Pipeline Stages: Production Deployment
stage('Production Deployment') {
...
environment {
RELEASE_NAME = 'todos-production'
SERVER_HOST = 'todos.k8s.prydoni.us'
}
steps {
sh '''
. ./helm/helm-init.sh
helm dependencies build ./helm/todo
helm upgrade --install --namespace production $RELEASE_NAME ./helm/todo
--set image.tag=$BUILD_ID,ingress.host=$SERVER_HOST
'''
}
}
23. Helm Community
• Over 140 contributors
• Helm 2.4.1 released last week!
• Slack channel: Kubernetes #helm-users
• Public dev meetings: Thursdays @ 9:30 pacific (5:30pm BST)
• Weekly updates & demos at SIG-Apps meetings:
Mondays @ 9am pacific (5pm BST)
Join
us!