Espen Henriksen

Senioringeniør

Statens Kartverk

esphen_

esphen

espen.dev

SKIP Workshop

Del II

Plan

  • Hvordan jobber produktteamene med SKIP?

  • Argo CD

  • Hvordan skal dere håndtere deploy på SKIP?

  • Sikkerhet på SKIP. Runtime og buildtime. Hvordan kan produktteamene ta i bruk hele verktøykassa?

  • Diskusjon

Deploy-drømmen

Det var en gang

Lars foreslo en endring

Teamet kodet endringen

I produksjon på dagtid samme dag

Teamet itererte

Glede brøt ut,

snipp snapp snute

Hvorfor er dette et mål?

Cycle time

  • Fra kode til verdi raskest mulig
  • Teamet fokuserer på å levere verdi over leveransevinduer
  • Slipper å vente uker om man misser et vindu
  • Minst mulig byråkrati
  • Hot-swappe komponenter på dagtid
  • Mindre overtidsarbeid

Brukerfokus

  • Test ut nye funksjoner med ekte brukere
  • Få tilbakemelding på hypoteser
  • Iterere på idéer
  • A/B testing
  • Canary-deploy
  • Kundene merker når man evner å snu seg raskt

Deploy på SKIP

CI

  • Kontinuerlig integrasjon
  • Delt koderepo som merges til
  • Bygg trigges for hver push
  • Kjøre tester i hvert bygg
  • Gi tilbakemelding når testene feiler
  • Feedback loop

CD

  • Kontinuerlig leveranse OG kontinuerlig utrulling
  • Leveranse: At koden kan deployes til enhver tid og at når det gjøres er det automatisk (en knapp)
  • Utrulling: At leveranser skjer kontinuerlig og automatisk når ny funksjonalitet kodes
  • Snakker først og fremst om kontinuerlig utrulling

GitOps

Skiperator

Operator

Enkelt eksempel

apiVersion: skiperator.kartverket.no/v1alpha1
kind: Application
metadata:
  name: testapp
  namespace: test
spec:
  image: nginxinc/nginx-unprivileged
  port: 80
  replicas: 2
  ingresses:
    - espentester.dev.skip.statkart.no

Jsonnet

Jsonnet

  • All JSON er gyldig Jsonnet
  • ✨ Spicy JSON ✨
  • Templating-språk for å genererere JSON
  • Features: Variabler, conditionals, funksjoner og gjenbrukbare maler
  • Designet for å gjøre vedlikehold av komplekse konfigurasjoner og dynamisk data enkelt

Hvorfor Jsonnet?

  • Jsonnet allows for modular and reusable code, making it easier to maintain and update configurations.
  • It provides a concise and expressive syntax, reducing the amount of code needed to define complex data structures.
  • Jsonnet's ability to generate dynamic data enables the creation of flexible and customizable configurations.

Trivielt eksempel

Ikke-trivielt eksempel

Sikkerhet

Zero Trust-arkitektur

GitHub Advanced Security

  • Code Scanning
  • Secret Scanning
  • Dependency Review (Dependabot)

Praktisk oppgave

Oppgave

Diskusjon

  • Hvordan kan vi samarbeide bedre?
  • Hva vil dere lære mer om?
  • Hvordan håndtere alarmer
  • Mer rundt kompetanse
  • Forventninger og muligheter

Fin

https://slides.com/esphen/skip-workshop-2

SKIP Workshop 2

By Eline H

SKIP Workshop 2

  • 31