Skip to content
Menu
msandor honlapja
  • Bemutatkozás
msandor honlapja

Kubernetes 2. lecke: zabbix szerver telepítése

Posted on 2024.03.30.2024.11.12.

Az 1. kubernetes leckében telepítettünk egy virtuális gépet (VM), abba egy microk8s-t, amire pedig egy dokuwiki weboldalt. A dokuwiki-deployment.yml öt különböző erőforrást tartalmazott. Lehet, hogy valakinek ez zavaró, ezért a mai leckében a zabbix szerver telepítést sok kis yaml fáj segítségével fogom bemutatni.

Egy kis segítség: ha a yaml fájlokat a virtuális szerver /vagrant mappájába hozzátok létre, akkor a VM törlése után is megmaradnak. Így később is fel tudjátok használni.

A zabbix szerver egy alkalmazás, de mit sem ér a webes felülete nélkül, sőt, adatbázis szerver nélkül sem fog működni. Így máris három podnál tartunk. Két lehetőség van:

  • külső, már létező adatbázis szerveren hozunk létre a zabbix számára egy adatbázist
  • vagy dedikálunk egy adatbázis szervert a zabbixnak a kubernetes alatt

Mi a 2. változatot fogjuk használni.

1. lépés: a MariaDB telepítése

Hozzunk létre egy „1.configmap.yml” nevű fájlt az alábbi tartalommal:

apiVersion: v1
kind: ConfigMap
metadata:
  name: zabbix
  namespace: default
  labels:
    app1: zabbix-server
    app2: zabbix-web
    app3: mariadb
    type: monitoring
data:
# közös változók
  DB_SERVER_HOST: mariadb
  DB_SERVER_PORT: "3306"
  MYSQL_DATABASE: zabbix
  MYSQL_USER: zabbix
  MYSQL_PASSWORD: zabbixtitkosjelszo
  ZBX_SERVER_HOST: zabbix-server
  ZBX_SERVER_PORT: "10051"
# server
  ZBX_STARTPINGERS: "3"
  ZBX_LISTENPORT: "10051"
# web
  ZBX_SERVER_NAME: microk8s.vagrant
  PHP_TZ: Europe/Budapest
# mariadb
  MYSQL_ROOT_PASSWORD: titok

Ebben benne van mindhárom alkalmazás által használt összes változó. Kevesebb nem nagyon lehet, szükség esetén több igen.

Hozzunk létre egy „2.pvc.yml” fájlt az alábbi tartalommal:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mariadb-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/data/pvc/mariadb"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mariadb-pvc
  namespace: default
  labels:
    app: mariadb
    type: local-storage
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

Ez már ismerős lehet az előző cikkből, csak a mappa neve változott.

Jöhet a „3.mariadb-deploy.yml” fájlt az alábbi tartalommal:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mariadb
  namespace: default
  labels:
    app: mariadb
    type: database
    storage: local
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mariadb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mariadb
        type: database
        storage: local
    spec:
      containers:
      - name: mariadb
        image: mariadb:10.6
        envFrom:
        - configMapRef:
            name: zabbix
        volumeMounts:
          - mountPath: /var/lib/mysql
            name: mariadbdata
      volumes:
        - name: mariadbdata
          persistentVolumeClaim:
            claimName: mariadb-pvc
      restartPolicy: Always

Végezetül hozzuk létre a „4.mariadb-service.yml” fájlt az alábbi tartalommal:

apiVersion: v1
kind: Service
metadata:
  name: mariadb
  namespace: default
  labels:
    app: mariadb
    type: database
spec:
  clusterIP: None
  ports:
  - name: mysql
    port: 3306
    protocol: TCP
  selector:
    app: mariadb

A MariaDB működéséhez elég az első három fájl, de a zabbix a 4. nélkül nem fogja megtalálni, így mind a négyet töltsük be (vesszővel elválasztva, szóközök nélkül többet is be lehet tölteni):

kubectl apply -f 1.configmap.yml,2.pvc.yml,3.mariadb-deploy.yml,4.mariadb-service.yml

Ellenőrizzük le az eddigieket:

Létrejöttek-e az adatbázis fájlok: „ls -l /data/pvc/mariadb/„

Ezzel két legyet is lecsaptunk, ugyanis ha a Persistent Volume és a Persistent Volume Claims nem jön létre, akkor a MariaDB sem tuja létrehozni a fájljait.

A biztonság kedvéért nézzük meg a MariaDB logjait. Nyissuk meg a dashboardot a „Pods” menüpontnál, kattintsunk a mariadb kezdetű linkre, majd a megnyíló adatlapon a jobb felső sarokban találunk egy 3,5 soros ikont, ha az egeret fölé visszük, mutatni fogja, hogy „View logs„. Nálam ez látszik:

Nincs hibaüzenet, minden rendben van. Szándékosan úgy írtam meg a „4.mariadb-service.yml” fájlt, hogy az adatbázist csak bentről lehet elérni, kintről nem. Mivel ez dedikáltan a zabbixé lesz, teljesen jó így.

2. lépés: a Zabbix telepítése

Hozzuk létre az „5.zabbix-services.yml” nevű fájlt az alábbi tartalommal:

apiVersion: v1
kind: Service
metadata:
  name: zabbix-web
  namespace: default
  labels:
    app: zabbix-web
    type: frontend
spec:
  type: NodePort
  ports:
   - targetPort: 8080
     port: 8080
     nodePort: 30280
     name: http
  selector:
    app: zabbix-web
---
apiVersion: v1
kind: Service
metadata:
  name: zabbix-server
  namespace: default
  labels:
    app: zabbix-server
    type: monitoring
spec:
  type: NodePort
  ports:
   - targetPort: 10051
     port: 10051
     nodePort: 30051
     name: server
  selector:
    app: zabbix-server

Végül jöjjön az utolsó fájl, „6.zabbix-deploy.yml” néven az alábbi tartalommal:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-server
  namespace: default
  labels:
    app: zabbix-server
    type: server
    storage: stateless
    db: internal
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-server
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: zabbix-server
        type: server
        storage: stateless
        db: internal
    spec:
      containers:
      - name: zabbix-server-pod
        image: zabbix/zabbix-server-mysql:alpine-6.4-latest
        envFrom:
        - configMapRef:
            name: zabbix
      restartPolicy: Always
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-web
  namespace: default
  labels:
    app: zabbix-web
    type: frontend
    storage: stateless
    db: internal
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-web
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: zabbix-web
        type: frontend
        storage: stateless
        db: internal
    spec:
      containers:
      - name: zabbix-web-pod
        image: zabbix/zabbix-web-apache-mysql:alpine-6.4-latest
        envFrom:
        - configMapRef:
            name: zabbix
      restartPolicy: Always

Ezeket is töltsük be:

kubectl apply -f 5.zabbix-services.yml,6.zabbix-deploy.yml

Ezt is ellenőrizzük:

kubectl get pod

vagy a dashboardon a Pods menüpont alatt:

Nézzük meg a zabbix szerver logjait (részlet):

Nézzük meg a zabbix-web logjait is:

Minden rendben van, nincs más hátra, mint megnyitni a zabbix weboldalát:

A default username/password a szokásos „Admin” és „zabbix”.

És kész is vagyunk! A zabbixról itt nem írok többet, korábban már megtettem. Ez most a kubernetes alatti telepítéséről szólt. Illetve egy dolgot még meg kell említenem vele kapcsolatban, a zabbix szerver 30051-es tcp porton figyel, kintről így tudnak hozzá az agentek , proxyk csatlakozni:

Van még valami?

A korábbi cikkben meséltem a replicaset-ről. Ugyanúgy érvényes a zabbixra vagy a mariadb-re, ha változtatunk a deploy erőforráson, automatikusan létrejön 1-1 új replicaset.

A törlés is ugyanúgy történik, csak le kell cserélni az „apply„-t „delete„-re. Egyszerre így törölhetünk mindent:

kubectl delete -f 1.configmap.yml,2.pvc.yml,3.mariadb-deploy.yml,4.mariadb-service.yml,5.zabbix-services.yml,6.zabbix-deploy.yml

Ha szeretnél bejelentkezni az adatbázisba, a mariadb podból (vagy a zabbix-web podból) megteheted. Parancssorból így tudsz rá belépni, és onnan az adatbázisba lépni:

Előbb lekérdezzük a podok aktuális neveit: „kubectl get pod„:

Most, hogy megvan a mariadb pod teljes neve, be is léphetünk az adatbázisba:

kubectl exec -it mariadb-8b8874cb6-ds784 -- mysql -h mariadb -u root -ptitok

Természetesen a dashboardból is be tudunk lépni az adatbázisba. Keressétek meg a Podok között a mariadb-t (nem meglepő módon ugyanaz a neve, mint a parancssorban látottnak), és a jobb felső sarokban lesz egy ikon, „Exec into pod„.

Végszó

Én jobban szeretem, ha az itt látott 6 yaml fájl egyben van, persze ez már csak ízlés kérdése. Ha összemásoljátok egy fájlba, a sorrend teljesen mindegy, csak el kell választani őket egymástól 3 kötőjellel (---).

Vélemény, hozzászólás? Válasz megszakítása

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Kategóriák

  • ansible
  • docker
  • e-mail
  • git
  • hardware
  • hibakeresés
  • kubernetes
  • ldap
  • Linux
  • MariaDB
  • OpenWrt
  • Proxmox
  • security
  • SNMP
  • Synology
  • teszt
  • Unifi
  • UPS
  • vagrant
  • Virtualbox
  • zabbix
©2025 msandor honlapja | WordPress Theme by Superb WordPress Themes

Adatkezelési tájékoztató || Hibát talált az oldalon? Írja meg nekem. || Impresszum || Powered by WordPress

Oldalunk cookie-kat ("sütiket") használ. Ezen fájlok információkat szolgáltatnak számunkra a felhasználó oldallátogatási szokásairól a legjobb felhasználói élmény nyújtása érdekében, de nem tárolnak személyes információkat, adatokat. Szolgáltatásaink igénybe vételével Ön beleegyezik a cookie-k használatába. Kérjük, hogy kattintson az Elfogadom gombra, amennyiben böngészni szeretné weboldalunkat.ElfogadomAdatvédelmi irányelvek