Dneska jsem přišel na to, že mi slítnul v mém domácím Kubernetes kontainer, který se stará o stahování ceny ETF fondu SP500, které si z něj bere Prometheus a následně předává do mé Grafany.

Trošku jsem procházel logy, a došlo mi, že to pravděpodobně bude použitím staré knihovny v Pythonu, protože scrapování se mění, tak vychází i nové knihovny, které se přizpůsobují webu. Nicméně můj docker image zveřejněný na GitHubu byl snad naposledy aktualizován před rokem, a už je zastaralý. Napadlo mě, že by se mohl sestavovat automaticky každý měsíc s nejnovější verzí knihovny, což se v GitHub actions udělá takto:

name: CNB Exporter PROD CI

on:  
  workflow_dispatch: # Adds manual trigger
  schedule:
  # Runs at 05:05 UTC on the 5th day of every month
  # ┌───────────── minute (0 - 59)
  # │ ┌───────────── hour (0 - 23)
  # │ │ ┌───────────── day of the month (1 - 31)
  # │ │ │ ┌───────────── month (1 - 12)
  # │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday)
  # │ │ │ │ │
  # │ │ │ │ │
  # * * * * *
  - cron: '5 5 9 * *'

Trošku jsem si s tím ještě hrál, a vše nastavil na používání mého lokálního Runneru, který běží na mém serveru, a rovnou může i restartovat deployment na Kubernetes, který když má nastaveno Pull: Always si automaticky stáhne nový obraz. To není raketová věda, stačí nastavit, aby Runner měl vlastní roli v Kubernetes, která má právo restartovat deploymenty, role vypadá asi takto

kind: Role
...
rules:
- apiGroups:
  - apps
  resourceNames:
  - '*'
  resources:
  - deployments
  verbs:
  - get
  - list
  - patch

A najednou vše znovu funguje. Nasazování nejnovější verze bez testování bych asi nedoporučoval ve firemním prostředí, tam bych na to asi nejdříve napsal nějaké testy, co to otestují, ale doma se z toho hlediska, že na tom úplně nevisím a časové možnosti jsou omezené tomuto nebudu věnovat.

A takhle vypadal výpadek v Grafaně#

Grafana