Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A dark story of bug hunting

A dark story of bug hunting

Talk from Software Circus, on how bugs in even small tools can require investigations which span projects, libraries, protocols and specifications.

Gareth Rushgrove

September 07, 2017
Tweet

More Decks by Gareth Rushgrove

Other Decks in Technology

Transcript

  1. apiVersion: v1 kind: Service metadata: name: redis-master labels: app: redis

    role: master tier: backend spec: ports: - port: 6379 targetPort: 6379 selector: app: redis role: master tier: backend Is this a valid Kubernetes configuration file?
  2. Is this Puppet code valid for Kubernetes? $ cat example.pp

    kubernetes_pod { 'sample-pod': ensure => present, metadata => { namespace => 'default', }, spec => { containers => [{ name => 'container-name', image => 'nginx', }] }, } $ puppet kubernetes compile --manifest example.pp
  3. Is this Helm template valid for Kubernetes? apiVersion: v1 kind:

    Service metadata: name: {{ template "fullname" . }} labels: app: {{ template "fullname" . }} chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: ports: - name: memcache port: 11211 targetPort: memcache selector: app: {{ template "fullname" . }}
  4. The bug in action $ tail -n 6 valid-config.yaml spec:

    ports: - port: 80 targetPort: 8082 selector: k8s-app: heapster $ kubeval valid-config.yaml The document valid-config.yaml is not a valid Service --> spec.ports.0.targetPort: Invalid type. Expected: string, given: integer
  5. The format property is an open string-valued property, and can

    have any value to support documentation needs.
  6. Bugs can be fixed in different places, often with different

    upfront and maintenance costs. Choose wisely