FiaaS

Eller: hvordan migrering til FiaaS

gjør oss bedre

Hva er FiaaS?

FINN [Container] as a Service

https://confluence.schibsted.io/display/FI/FIAAS+-+Finn+Container+as+a+Service

Stacken

Innfinn

ad-input-server

http

<ordre, produkt, betaling>

Oblig implementasjonsdetaljer

  • Dockerfile
     
  • fiaas.yml
     
  • finnbuild.json

Dockerfile

https://github.com/finn-no/tomcat8-docker

FROM finntech/tomcat8:8.5.4-3

COPY target/ad-input-server-*.war /app

fiaas.yml

http://fiaas-deploy-daemon.k8s.dev.finn.no/defaults

Eller: Hva er egentlig FiaaS?

---
has_secrets: true
resources:
  requests:
    memory: 1024m
services:
  - exposed_port: 8080
    readiness: /smoketest
    liveness: /smoketest
    probe_delay: 300

finnbuild

Hvordan faktisk deploye?

#!/bin/bash
IMAGE_NAME=finntech/ad-input-server
VERSION=$(git rev-parse HEAD)

mvn clean deploy \
  && docker build -t $IMAGE_NAME:$VERSION . \
  && docker push $IMAGE_NAME:$VERSION \
  && echo UPLOADED DOCKER IMAGE $IMAGE_NAME:$VERSION \
  && mvn deploy:deploy-file \
    -Durl=http://mavenproxy.finntech.no/finntech-internal-snapshot \
    -Dfile=./fiaas.yml \
    -DgroupId=no.finntech.advert \
    -DartifactId=ad-input-server-fiaas \
    -Dversion=$VERSION-SNAPSHOT

database.ini <3

[kubernetes]
SYBASE_FINN_SERVER=sybase
-DCONSTRETTO_TAGS=kubernetes,dev,kubernetes-dev

Kule ting

  • Røska opp i "it's always been that way"
     
  • Helt sinnssykt lett å starte opp apper lokalt
     
  • dev/prod parity: egen Java-versjon uten puppetroot!
     
  • Lett å definere replicas, rolling updates
     
  • Service discovery er mye enklere!

Gotchas

  • Les ARTIFACT_NAME fra env, ikke properties
     
  • Monorepo? Putt filene i modulen
     
  • $ kubectl exec -it <pod name> bash

Veien videre

  • Lede litt trafikk til ad-input-server på FiaaS
     
  • Migrere innfinn (ikke mer stress å starte den opp)
     
  • ???
     
  • Far vel, gammel deploy!
    • og Greenpages
    • og (forhåpentligvis) Constretto
Made with Slides.com