Există un experiment mental simplu pe care îl poți face acasă, fără echipament special. Îți trebuie doar o hartă a lumii, un creion și capacitatea de a suporta adevăruri inconfortabile. Trasezi o linie de la Washington la Berlin, de la Pentagon la Bruxelles, și te întrebi: cine conduce de fapt continentul ăsta? Răspunsul e că Europa conduce singură — dar cu GPS-ul setat de altcineva.

Bine ați venit în cel mai mare spectacol de magie al secolului: cum să convingi un întreg continent că ideile altcuiva sunt ale lui.

“Europa e ca acel prieten care îți spune că el a ales restaurantul, uitând că tu i-ai trimis meniul cu două zile înainte.”

Actul I: Conducta care știa prea multe

Să începem cu Nord Stream. Un proiect de infrastructură energetică de câteva miliarde de euro, construit cu meticulozitate germano-rusă, menit să asigure “independența” energetică a Europei față de… oricine altcineva decât Rusia. Problema? Nu era “independență” față de America.

Și uite că, în 2022, cineva — un cineva cu scafandri foarte bine antrenați și o agendă foarte clară — a decis că țeava trebuie să dispară. Jurnalistul Seymour Hersh a documentat implicarea americană cu o precizie incomodă. Reacția Europei? Liniște diplomatică. Câteva întrebări retorice puse cu vocea celui care știe că nu va primi răspuns și nu dorește unul.

Germania, țara care a plătit cel mai mult pentru această conductă, a cerut scuze cum ceri scuze șefului când ți-a stricat mașina — adică nu ceri, zâmbești și îți cumperi alta. Că cine ești tu să-l deranjezi?

Actul II: Războiul la comandă

Ucraina — un conflict cu rădăcini reale, cu suferință reală, cu oameni reali care mor. Să nu reducem asta la cinism pur. Dar să fim onești: cine a câștigat cel mai mult din acest război? Europa plătește factura energetică dublată. Europa primește valuri de refugiați. Europa suportă inflație, instabilitate, dezechilibre politice interne.

America? America vinde gaz lichefiat la prețuri record către același continent pe care l-a ajutat să rămână fără gaz rusesc. America vinde armament. America și-a consolidat NATO — o alianță care fără Rusia ca amenințare activă ar fi murit lent de irelevantă. Coincidențe fascinante, nu?

“When it’s profitable to be the solution, it’s also profitable to be the problem.” — concept des invocat în critica industriei farmaceutice sau militare, fără un autor cert dar care se muleaza perfect pe situatia noastra.

Iar Europa, în loc să medieze, a ales să fie cel mai entuziast susținător al unui conflict pe propriul continent. Entuziasmul ăsta ar fi admirabil dacă ar fi dezinteresat. Dar când plătești tu facturile și altcineva colectează dividendele, se cheamă altceva.

Actul III: Iran și al doilea front

Acum este Iranul în scenă. Un nou conflict care e copt, cu Europa privind anxios cum America și Israel configurează un alt teatru de operații. Și care e răspunsul european? Sancțiuni, declarații solemne, preocupare profundă exprimată în comunicate de presă pe care nu le citește nimeni.

Între timp, fluxurile comerciale se reconfigurează. Rutele energetice se redefinesc. China — care a stat cuminte și a cumpărat petrol rusesc la reducere în timp ce Europa plătea premium — privește acest haos cu satisfacția unui jucător de șah care vede adversarul eliminându-și singur piesele.

Masterplanul, dacă există, e elegant în simplitatea lui: ține Europa ocupată cu crize la graniță, ține China izolată prin tensiuni comerciale și presiuni tehnologice, și asigură-te că dolarul rămâne moneda în care se rezolvă toate problemele. E imperialism 2.0 — fără colonii, fără ocupații, doar cu dependențe bine calibrate.

Interludiu special: România, elevul silitor din ultima bancă

Această secțiune este dedicată cu drag țării care a reușit performanța unică de a fi simultan victimă a geopoliticii și voluntar entuziast în propriul dezavantaj.

Dacă Europa e marioneta, România e marioneta marionetei — cu propria ei scenă, propria ei publicitate și un buget de producție făcut din fonduri europene cheltuite cu… creativitate.

România stă la granița cu Ucraina, găzduiește baze NATO cu zâmbetul larg al omului care tocmai și-a închiriat sufrageria și doarme în debara, și aplaudă fiecare escaladare militară din zonă cu un entuziasm care ar fi emoționant dacă nu ar fi atât de scump. Avem rachete Patriot poziționate strategic, soldați americani pe pământ românesc și o clasă politică atât de dedicată intereselor atlantice încât uneori uită să fie dedicată și intereselor românești.

Dar ce câștigă România în schimb? Promisiuni. Vize. Mai mult vize. Și ocazional, o vizită de stat în care un oficial american pronunță “București” cu un accent care face Carpații să plângă, după care pleacă și uită că am existat până la următoarea criză în care avem nevoie de teritoriul nostru.

“România e ca acel coleg de apartament care plătește chiria la timp, curăță baia și lasă cheia sub preș — și se miră de ce nu e invitat la petrecere.”

Între timp, acasă: spitale cu pereți căzuți, autostrăzi care există mai mult în comunicate de presă decât în asfalt, și o diasporă de câteva milioane de oameni care au votat cu picioarele pentru că au înțeles mai devreme decât politicienii că loialitatea unilaterală nu e o strategie, e un obicei prost.

Cel mai trist? România are o poziție geografică de invidiat, resurse naturale, oameni inteligenți și o istorie care ar justifica mult mai multă încredere în sine. Dar undeva pe drum, am confundat suveranitatea cu supunerea și am numit-o parteneriat strategic.

Epilog: Europa are nevoie de o oglindă

George Carlin spunea in 1996 că politicienii nu vin de pe Marte — îi creăm noi. Același lucru e valabil pentru Europa ca actor geopolitic: reflectă exact atâta voință câtă are. Și în acest moment, voința pare un contract de outsourcing.

Nu e o teorie a conspirației să observi că cel mai mare beneficiar al instabilității europene nu e european. Nu e anti-american să întrebi cui servesc deciziile tale. E pur și simplu igienă politică de bază — genul pe care Europa a ales să-l ignore în favoarea unui sentiment confortabil de solidaritate atlantică.

Solidaritate. Frumos cuvânt. Mai ales când plătești tu covrigul și mănâncă altul.

Dar stai liniștit, Europa. Ai în schimb valori. Și declarații. Și un viitor în care poate, poate, vei întreba și tu cine a setat GPS-ul înainte de a apăsa Start.

Iar tu, România — mai ales tu — ai putea să ridici o dată mâna și să întrebi: bine, dar ce primim noi? Nu e irespect față de aliați. E respectul față de tine însuți. Ceea ce, recunosc, e un concept relativ nou pe la noi.

  • Opiniile exprimate sunt satirice și nu reprezintă adevăruri absolute — cu excepția conductei, care e o chestiune de beton și explozivi. Și a autostărzilor, care sunt o chestiune de… speranță.

Sa ne tina dumnezeu sanatosi.


Previziuni timide: America o sa devina din ce in ce mai iubita in lume, la exemplul lor China isi ia Taivan, dupa care Trump face un atac supriza la Groenlanda, Rusia se muta si pe alte fronturi…
Bula AI se sparge, OpenAI o sa fie redus la tacere, singurii cu un produs valid raman Google.
Romania nu o sa reuseasca sa reglementeze pensiile speciale, statul roman nu vrea sa declare falimentul dar vor incerca sa faca bani din impozite din ce in ce mai mari. Europa nu o sa reuseasca pana la sfarsitul anului sa se impuna in nici un fel…
Oscarul o sa fie castigat de un film cu pisici care danseaza generat in totalitate cu AI.

Asa cum ne place sa privim inspre viitor, sa ghicim in stele sau in parul pubian prins pe cada de dus, in cafea, in liniile de pe palma, in vibratia zilei s.a.m.d – cum o sa fie 2026? Scenariul este un amestec de SF, Comedie neagra, cele mai proaste sitcom-uri si survivor la antena1. Viitorul arata ca gandurile care ne dau anxietate.

Pe Frontul Geopolitic: Unde se duce lumea?

Previziunile vorbeau despre o Americă brusc “mai iubită” pentru rezerverele de petrol din Venezuela (ironic, având în vedere tensiunile globale), urmată de o mișcare îndrăzneață a Chinei în Taiwan. Sună ca un joc de șah? Nu e sah, e etalare de cohones si pariuri pe faptul ca nimeni nu vrea WW3. Ca tacâmul să fie complet, un “atac surpriză” al lui Trump la Groenlanda (relicva unei intenții reale de cumpărare, acum transformată în scenariu de acțiune) și Rusia extinzându-se pe noi fronturi. Nu zic nimic despre Israel, ei doar nu mai vor hamas pe lume. Definitia hamasului este variabila in functie de narativ.

Sincer asta ne tine cu sufletul la gura, mai ca dabia mai respiram, mai rau decat versiunea alfa-beta covid. Esentialul este clar, resursele raman miza principala si suntem blestemati sa repetam greselile trecutului, pentru ca l-am uitat.

Bula AI se sparge? Adio, OpenAI, Salut, Google?

In mod ironic pentru ca lucrez in IT ma intriga bula AI. OpenAI, Nvidia si Oracle sunt prinsi acum intr-un cerc masturbatoric, ei spun ca nu o fac cand sunt cu plua partenerului in mana. Sper sa intre in faliment pentru ca AI-ul este un produs nociv pentru societate. Brain rot! Eficientizare procese? Imbunatatirea traiului celor care traiesc pe pamant? Nu. Doar imbunatatirea profitului, inrobirea celor care traiesc pe pamant. Masini care se conduc singure, gaini AI.

AI-ul este momentan un miraj, cu fanfara multa, concurenta acerba pentru un singur castigator. Cel care tine actiunile castigatorului in mana. Pentru noi se termina tot intr-o realitate rece, ca un dus pe vremea lui Ceausescu atunci cand faceam economii sa platim datoria externa a Romaniei.

România și Europa: O oglindă tristă a prezentului?

Aici, previziunile au un gust salciu de realism. “România nu o să reușească să reglementeze pensiile speciale,” “statul român nu vrea să declare falimentul, dar vor încerca să facă bani din impozite din ce în ce mai mari.” Sună familiar, nu? Cât timp mai poate dura acest dans politic? Ca sa fie bine nu trebuie sa fie un pic rau? dar noua romanilor nu ne este bine de multa vreme. Suntem satui ca nepotii de sarmale cand petrec vacanta de iarna pe la bunici.

Europa, la rândul ei, este văzută ca un colos lent, incapabil să se impună. Între birocrație și lipsa unei viziuni unitare, continentul pare să navigheze într-o ceață, căutându-și drumul într-o lume din ce în ce mai agitată.

Oscarul pentru Pisicile Dansatoare

Bomboana de pe tort: Oscarul câștigat de un film cu pisici dansatoare, generat integral de AI! O satiră inteligentă la adresa unei industrii care se luptă cu inovația și, în același timp, o premoniție deloc fantezistă.

Concluzie.

Nu trebuie sa ne afundam in pesimism. Lumea este intr-o continua miscare si trebuie sa fim constienti de provocari si sa cautam solutii. Eu sunt inca optimist ca vom vedea pe marile ecrane filmul cu pisici care danseaza, broadway ai! Ay!

Când înveți AWS, cel mai mare pericol nu e că nu înțelegi serviciile — e că uiți ceva pornit și găsești o factură surpriză la final de lună. Free Tier-ul AWS are limite clare, iar unele servicii nu au tier gratuit deloc. Iată 7 sfaturi practice ca să rămâi la zero.

1. Monitorizează storage-ul ca pe proprii bani

EBS are o limită de 30 GB total pentru toate volumele combinate în Free Tier. Nu per instanță, ci total. Dacă ai două instanțe cu câte 20 GB fiecare, ești deja peste limită.

S3 are o limită de 5 GB gratuit. Dacă urci fișiere mari pentru teste, pune lifecycle rules care șterg automat obiectele vechi.

Cel mai important: oprirea unei instanțe nu șterge volumul EBS atașat. Volumul continuă să existe și să consume din cei 30 GB. Dacă nu mai ai nevoie de el, șterge-l explicit.

Sfat practic: folosește un singur volum per instanță când e posibil.

2. Urmărește orele de compute cu atenție

Free Tier oferă 750 ore/lună pentru instanțe eligibile (t2.micro sau t3.micro, în funcție de regiune). 750 de ore înseamnă exact o instanță care rulează non-stop — 24h × 31 zile = 744 ore.

Dacă pornești două instanțe simultan, orele se adună: 2 instanțe × 24h = 48 ore pe zi, deci depășești limita în mai puțin de 16 zile.

Soluție: pornești instanțe suplimentare doar când le folosești activ și le oprești imediat după.

3. Evită serviciile fără Free Tier

Unele servicii AWS nu au tier gratuit deloc și încep să coste imediat ce le pornești:

  • NAT Gateway — costă per oră și per GB procesat. Dacă ai nevoie de acces la internet dintr-un subnet privat, folosește în schimb o instanță EC2 ca NAT instance (mai complicat, dar gratuit).
  • Load Balancer (ALB/NLB/CLB) — costă per oră, chiar dacă nu trece niciun trafic prin el.
  • RDS cu Provisioned IOPS — IOPS provizionat costă separat față de instanță. Folosește doar storage-ul standard gp2/gp3.
  • Elastic IP neutilizat — un Elastic IP alocat dar neatasat la o instanță activă costă câțiva cenți pe oră. Pare puțin, dar se adună.

Regula generală: dacă testezi ceva, pornești, testezi și ștergi în aceeași zi.

4. Curăță agresiv după teste

AWS taxează resursele provizionate, nu pe cele folosite efectiv. Asta înseamnă că o resursă uitată costă la fel ca una care procesează trafic intens.

Lista de verificat după fiecare sesiune de learning:

  • Instanțe EC2 oprite (nu terminate) — volumele EBS continuă să existe
  • Snapshots EBS rămase după ștergerea instanței
  • AMI-uri custom create pentru teste
  • CloudWatch Logs — log groups vechi ocupă storage și costă
  • Elastic IPs neatașate

5. Critic: Setează alarme de billing din prima zi

Înainte să faci orice altceva în AWS, mergi la Billing → Budgets și creează un budget de 1–2 USD cu alertă prin email. AWS te va notifica imediat ce depășești limita, înainte să ajungi la o factură serioasă.

Pași:

  1. AWS Console → Billing → Budgets → Create Budget
  2. Alege „Cost budget”
  3. Setează suma la 1 USD și alertă la 80% din budget
  4. Adaugă adresa de email

Costă zero să setezi un budget. Poate salva de o factură de 20–50 USD dintr-un NAT Gateway uitat.

6. Folosește Cost Explorer și Free Tier Usage

AWS are o pagină dedicată vizualizării consumului din Free Tier: Billing → Free Tier. Îți arată per serviciu câte procente din limita lunară ai consumat deja.

Dacă vezi un serviciu la 80% pe 15 ale lunii, știi că trebuie să reduci activitatea în a doua jumătate.

7. Pentru sesiuni intensive de learning

Dacă vrei să înveți servicii mai mari (instanțe mai puternice, baze de date, etc.) fără să plătești, strategia optimă e:

  • Menține o singură instanță t3.micro ca baseline lab, pornită 24/7 — aceasta consumă exact cele 750 ore gratuite
  • Pornești instanțe mai mari sau servicii extra doar când ești activ în fața calculatorului
  • Ștergi tot la finalul sesiunii

Dacă ai un credit AWS (din AWS Educate, evenimente, sau alte promoții), acesta acoperă costurile suplimentare. Direcționează creditul spre sesiunile intensive, nu spre resurse lăsate pornite.

Concluzie

Free Tier-ul AWS e generos dacă îl respecți. Cel mai frecvent motiv pentru facturi neașteptate nu e ignoranța, ci uitarea — o resursă pornită pentru un test rapid și neștearsă ulterior. Cu alarme de billing setate și o rutină de curățare după fiecare sesiune, poți învăța AWS luni întregi fără să plătești nimic.

Uptime Kuma este un tool dragut de monitorizare, face automat rapoarte SLA, monitorizeaza site-uri, este destul de util. Pentru a monitoriza ill.ro folosesc altceva (UptimeRobot), m-am gandit sa fie independent de homelab, ca daca pica homelab-ul nu mai imi zice nimeni ca a cazut site-ul…
Voi folosi ArgoCD pentru a testa si invata cum functioneaza acest tool… l-am instalat si pana acum e doar o interfata web… Asadar sa instalam cu ArgoCD.

Pentru pasii astia avem niste prerechizite:
1. Un share nfs pentru persistent storage (il foloseste uptime kuma ca sa tina minte tot ce face)
2. Un cont de github sau orice repo, eu o sa folosesc github ca inca nu am deployat asa ceva in homelab.
3. metalLB functional 🙂

1. Mai intai share-ul NFS: am folosit v3 pentru simplitate, am permis accesul full din reteaua de acasa, desigur in afara homelab-ului vom avea autentificare si altele. Am creat un share numit uptime-kuma.

Pe nodurile k8s (control/worker) vom instala nfs-common si testam daca share-ul nfs este disponibil si putem scrie pe el.

apt install -y nfs-common
mkdir /mnt/test-nfs
mount -t nfs -o nfsvers=3 IP_NFS:/uptime-kuma /mnt/test-nfs
touch testnfs
cd /mnt/test-nfs && ls

Ar trebui sa vedem fisierul. Daca e acolo, inseamna ca nodurile noastre pot accesa NFS, trecem mai departe.

2. Github. Facem un nou repo, o sa il numesc argoCD si vom crea intr-un director nou urmatoarele fisiere:

Prima oara facem un namespace, fisierul uptimekuma-namespace.yaml.

apiVersion: v1
kind: Namespace
metadata:
  name: uptime-kuma

Definim un persistent volume – uptimekuma-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv-uptime-kuma
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=3
  nfs:
    path: /uptime-kuma
    server: IP_NFS #adresa ip a serverului nfs

Persistent volume claim uptimekuma-pvclaim.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: uptime-kuma-pvc
  namespace: uptime-kuma
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  resources:
    requests:
      storage: 1Gi
  storageClassName: slow

Definim serviciul – uptimekuma-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: uptime-kuma-tcp
  namespace: uptime-kuma
spec:
  type: LoadBalancer #nu specificam ip, lasam metallb sa aleaga pentru noi
  ports:
  - name: web-ui
    protocol: TCP
    port: 3001
    targetPort: 3001
  selector:
    app: uptime-kuma

Si in final, deployment-ul uptimekuma-deplyment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: uptime-kuma
  namespace: uptime-kuma
spec:
  selector:
    matchLabels:
      app: uptime-kuma
  replicas: 1
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: uptime-kuma
    spec:
      containers:
      - name: uptime-kuma
        image: louislam/uptime-kuma:1
        imagePullPolicy: IfNotPresent
        env:
        # only need to set PUID and PGUI because of NFS server
        - name: PUID
          value: "1000"
        - name: PGID
          value: "1000"
        ports:
        - containerPort: 3001
          name: web-ui
        resources:
          limits:
            cpu: 200m
            memory: 512Mi
          requests:
            cpu: 50m
            memory: 128Mi
        livenessProbe:
          tcpSocket:
            port: web-ui
          initialDelaySeconds: 60
          periodSeconds: 10
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /
            port: web-ui
          initialDelaySeconds: 30
          periodSeconds: 10
        volumeMounts:
        - name: data
          mountPath: /app/data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: uptime-kuma-pvc

Pasul 2, sa intram in ArgoCD, sa definim un repository si o aplicatie. Rezultatele ar arata ca in printscreen-urile de mai jos. Avem nevoie de 2-3 lucruri:
– repository URL: tip https sau cum vreti voi, si path-ul.
– project – o sa fie default, ca nu am altceva definit
– cluster – o sa aleaga automat clusterul pe care este instalat
– path: uptimekuma – e directorul unde am pus tot.
– sync: am lasat manual

Dupa ce accesezi aplicatia si dai click pe sync, argo o sa downloadeze yaml-urile din repo, din directorul ales si o sa inceapa sa le aplice.
Rezultatul ar trebui sa arate asa:

Teoretic ar trebui sa poti accesa uptime kuma, pe ip-ul pe care il aloca metallb… si sa vezi interfata.

Orice schimbare a yaml-urilor din github vor fi semnalate de ArgoCD. Daca ai pus sincronizarea pe automat ar trebui ca orice modificare faci sa fie deployata in Kubernetes automat, sa zicem ca modifici numarul de replici (pod-uri) pentru aplicatia ta.. sau faci un update… Mai jos exemplu:

“BestMan” m-a sfatuit sa ma uit si la ArgoCD. Rachete, magie, gitops, kubernetzi…
Sa incepem cu o traducere:

Argo CD este un instrument declarativ CICD pentru aplicațiile Kubernetes. Acesta utilizează stilul GitOps pentru a crea și gestiona clustere Kubernetes. Atunci când se fac modificări în configurația aplicației din Git, Argo CD o compară cu configurația aplicației care rulează și notifică utilizatorii pentru a sincroniza starea dorită cu cea actuală.
Argo CD a fost dezvoltat în cadrul proiectului Argo al Cloud Native Computing Foundation (CNCF), un proiect destinat în special gestionării ciclului de viață al aplicațiilor Kubernetes. Acest proiect include, de asemenea, Argo Workflow, Argo Rollouts și Argo Events. Fiecare dintre acestea rezolvă un set specific de probleme în procesul de dezvoltare agilă și contribuie la livrarea scalabilă și securizată a aplicațiilor Kubernetes.

Cumva in github pui yaml-urile, asta verifica ce e acolo si face treaba. Asta e magie, ca pana acum stateam cu 20j de fisiere yaml pe nodu de control si le pierdeam, le suprascriam, nu mai stiam care fisier e ce imi trebuie… nah, gandire de sysadmin.
Am deja cont de github, o sa fac un repo nou si o sa il folosesc pentru a instala “Uptime Kuma” cu ArgoCD.

Instalarea ArgoCD e simpla, am facut un namespace nou si am folosit manifestul lor.
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Dupa 2-3 minute am vazut si podurile:

Mai devreme am pus MetalLB si as vrea sa il folosesc sa ajung la ArgoCD. Se poate folosi si nodeport dar e mai elegant asa, fara sa accesezi porturi ciudate. Dezavantajul pe care il vad eu pe termen lung o sa trebuiasca sa extinzi pool-ul de ip-uri folosit de metallb. Deci, revenim:
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

Teoretic acum ar trebui sa am ArgoCD publicat pe unu din ip-urile alea din loadbalancer, pe porturile 443 si 80.

O sa avem nevoie de parola (userul e admin). Avem o parola random creata la instalare…
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Accesam 192.168.111.220:80, user si parola avem. Iaca!

Avem ArgoCD functional, teoretic putem incepe sa il folosim.
Next post, instalare “Uptime Kuma” cu ArgoCD.