Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Zero to Continuous Delivery on Google Cloud
1. GOOGLE CLOUD - KUBERNETES -
DOCKER - CONTINUOUS
DEPLOYMENT - JENKINS - SPRING
BOOT - MAVEN - MICROSERVICES
JAMES HEGGS
2. SETTING THE SCENE…
ABOUT ME @EGGSY84
▸Software Developer - Bespoke software house
▸Software Developer - SaaS product based
▸Head of Operations - Config/Orchestration/Deploys etc
▸Co-Organiser DevOps Manchester Meetup
▸DevOps Consultant - GDS project
▸Head of Development - ResponseTap
3. SETTING THE SCENE…
THIS TALK
▸WILL:
▸Provide high level view of technologies
▸Share code examples and walkthroughs
▸WILL NOT:
▸Cover why you would do this
▸Whether you even should do this
5. OPERATIONS
GOOGLE CLOUD PLATFORM (GCP)
▸Utilises Google Container Engine (GKE)
▸(which is actually just Kubernetes)
▸Projects and Operations within them
▸Found GKE learning curve less steep than EC2 container
service
10. OPERATIONS
BOOTSTRAP SCRIPT
▸https://github.com/eggsy84/gcp-bootstrap-infrastructure
▸Will create GKE cluster in specified zone, under specified
project with specified number of nodes called “cd-cluster”
▸Uses k8s YAML files to deploy jenkins master
sh deploy.sh {project_name} {zone} {machine-type} {number-of-nodes} {service-
account-file.json}
sh deploy.sh docker-meetup europe-west1-b n1-standard-2 1 ~/srvc-account.json
14. DEVELOPMENT
JENKINSFILE
node('build-slave') {
// Project name will be passed in as a parameter
def project = "${GCP_PROJECT_NAME}"
def appName = 'spring-boot-app'
// BUILD_DATE_TIME defined as a build parameter in Jenkins
def imageTag = "eu.gcr.io/${project}/${appName}:${BUILD_DATE_TIME}"
// Code checkout stage
stage 'Checkout'
checkout scm
// Compile with maven stage
stage 'Compile'
sh "mvn clean compile”
. . .
19. PROMISES
COMING SOON…
▸As well as the open source code I will get round to putting a
blog together - promise :)
▸Slides will go up on slideshare
▸Code will get README’s and instructions
This talk is buzzword central and I wasn’t sure what to actually call it. So I just thought stuff it I’ll buzzword the hell out of the subject. On the plus side I’m sure it’ll lead to lots of attention on LinkedIn…
Hello everyone I’m James Heggs
Thought I’d start by setting a bit of context around my background.
I started out as a Software Developer working at a bespoke software house - largely on web based Java environments.
Moved to a SaaS based business as their first full time employee and only dev.
Trained on the job through that organisation transitioned to Tech Lead/Dev Lead, then on to Head of Operations focusing on Config/Orchestration/Deploys etc. It was at this stage when our processes and practices were in need of investment that I discovered DevOps - around 4 years ago.
I organised an continue to organise the community DevOps Manchester meetup.
Left that role and became a DevOps Consultant working on a GDS based project
Up to present day I’m currently Head of a Development team focusing on CALMS and empowerment!
GKE is essentially Kubernetes
Kubernetes services and pods
Java Network Launch Protocol
Java Network Launch Protocol
Notice how we use sed in the jenkinsfile to swap out the tagged docker image
Sets type as LoadBalancer which tells GKE to expose the IP address and port externally