Jak już pisałem, postanowiłem po latach ożywić starego pryka, ale przy okazji zmienić techologię. Na niby prostrzą czyli prosty blog oparty o markdown zasilany świetnym silnikiem hugo, nigdy nie miałem odpowiednio sporo weny i zaparcia, żeby starego wordpressa przemigrować na markdown, ale w końcu się zebrałem.

Pierwszym krokiem było znalezienie jakiegoś sensowanego narzędzia do migracji z backupu wordpressa do struktury strawnej dla hugo, znalazłem fajne (acz nie pozbawione wad) narzędzie wp2hugo. Problemy z migracją polegały głównie na tym, że mój stary blog średnio spełniał standardy i np. code-block na starych postach zdziebko trącił myszką. Tutaj z pomocą przyszedł stary dobry sed

No dobra po 20 minutach miałem gotową podstawkę, kolejna rzecz do mały custom dla theme. Powyższe narządko tworzy stronę hugo na bazie tematu PaperMod, który okazał się bardzo przyjemny i z dużymi możliwościami.

To na co patrzysz to delikatnie zmodyfikowany PaperMod. No ale dobra, wszysto fajnie, teraz warto jakoś sobie to wszystko pożenić z nowym światem, czyli kontenery, kubernetesy i inne blogowe tematy. Bo właśnie tak to jest zrobione, czyli full gitops, pełna automatyka i możliwość szybkiego pisania postów praktycznie z każdego urządzenia. Ogólnie proste rzeczy, ale jak sobie na to popatrzyłem z lotu ptaka i zobaczyłem ilość elementów jakie są w całej tej automatyce wykorzystane to ostatnim epitetem do określenia tego galimatiasu będzie proste 😻

Porównując starego wysłużonego już wordpressa z architekturą tego bloga, to wordpress był banalny, a co ciekawe chciałem go zaorać żeby nie utrzymywać upierdliwego php-fpm, za to mam gitea-actions, container registry, k8s, argocd, remark42 - no i własnie o tym chciałem w pierwszym dłuższym technologicznym poście napisać 😎

Blog to też komentarze

Hugo to statyczne strony, więc wszelakie formularze, komentarze czy inne “dynamiczne” elementy trzeba sobie zapewnić jakoś inaczej. Oczywiście naturalnym wyborem dla blogów opartych o hugo jest Disqus, ale ja jestem jednak z tych, którzy wyznają starą zasadę “ważne i prywatne dane trzymam na serwerach, z których adminem piłem” - sam ze sobą piłem, więc wolę takie rzeczy hostować “sam se” 😎 Na stronkach związanych z oglądanym theme znalazłem Remark42 świetny serwisik pozwalający na umieszczanie sekcji komentarzy na statycznych stronach, bardzo fajnie działa markdown, obsługuje większość popularnych OAuth2. Wystarczy skonfigurować, wystawić na jakiejś domence na świat i cieszyć się komentarzami na blogu.

Blog to proste pisanie

Tutaj przy założeniu, że jako stary opos aka devops lubię mieć rozwiązania na czasie i przy okazji bawić się procesami automatycznymi zależało mi na oczwiście kubernetesie, w aktualnej wersji cały blog to jeden kontener, wszystkie assety, htmle i jsy są w nim zawarte. Wszystko fajnie, ale jeżeli automat to na czym mi zależało? Na commicie do mastera i wystawieniu zmian na klastrze. Proste? Proste! Ale fajnie by było korzystać z repozytorium stanu, fajnie by było żeby całość leciała automatem i pozwalała na przyjemną pracę z tekstem.

U mnie proces wygląda prosto: commit do mastera, proces CI/CD oparty na gitea-actions (podobny patent jak github-actions), aktualizacja klastra czyli wystawienie nowej wersji kontenera. W pierwszej wersji proces sobie uprościłem do trzymania w repo stanu definicji kontenera z tagiem latest, czyli prosty deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cynarski-deployment
  namespace: default
spec:
  selector:
    matchLabels:
      run: cynarski
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  replicas: 2
  template:
    metadata:
      labels:
        run: cynarski
    spec:
      containers:
        - name: cynarski
          image: git.cynarski.pl/sites/cynarski.dev:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 80

Jak widać nie ma tu żadnej magii, usuwanie za pomocą kubectl podów powoduje postawienie pod’a na nowym obrazie, nie jest to świat idealny, ale na ten moment działa fajnie.

Druga wersja powyższego procesu będzie opisana już niebawem, a póki co cieszę się nowym layoutem i technologią bloga, co może pozwoli na częstsze pisanie o moich przebojach technologicznyh i nie tylko.

Howk!