Table of Contents

Zabbix Deployment V2

Secret

$ cat pgsql-secret
dbname=zabbix
host=pgsql.juntotelecom.com.br
password=senha
port=5432
user=zabbix
kubectl create secret generic pgsql-secret -n zabbix \
--from-env-file=pgsql-secret -o yaml \
--dry-run=client > pgsql-secret.yaml
pgsql-secret.yaml
$ cat pgsql-secret.yaml 
apiVersion: v1
data:
  dbname: emFiYml4
  host: cGdzcWwuanVudG90ZWxlY29tLmNvbS5icg==
  password: c2VuaGEK
  port: NTQzMg==
  user: emFiYml4
kind: Secret
metadata:
  name: pgsql-secret
  namespace: zabbix

Zabbix server

zabbix-server.yaml
$ cat zabbix-server.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zabbix
  name: zabbix-server
  namespace: zabbix 
spec:
  selector:
    matchLabels:
      app: zabbix
  template:
    metadata:
      labels:
        app: zabbix
    spec:
      containers:
      - env:
        - name: DB_SERVER_HOST
          valueFrom:
            secretKeyRef:
              key: host
              name: pgsql-secret
        - name: DB_SERVER_PORT
          valueFrom:
            secretKeyRef:
              key: port
              name: pgsql-secret
        - name: POSTGRES_USER
          valueFrom:
            secretKeyRef:
              key: user
              name: pgsql-secret 
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: pgsql-secret
        - name: POSTGRES_DB
          valueFrom:
            secretKeyRef:
              key: dbname
              name: pgsql-secret
        - name: ENABLE_TIMESCALEDB
          value: "true"
        - name: ZBX_AUTOHANODENAME
          value: hostname
        - name: ZBX_NODEADDRESS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP
        - name: ZBX_WEBSERVICEURL
          value: http://zabbix-webservice:10053/report
        - name: ZBX_STARTREPORTWRITERS
          value: "1"
        image: zabbix/zabbix-server-pgsql:ol-6.2-latest
        imagePullPolicy: IfNotPresent
        name: zabbix-server
        ports:
        - containerPort: 10051
          name: zabbix-server
          protocol: TCP
        - containerPort: 10052
          name: zabbix-jmx
          protocol: TCP
        resources: {}
      - env:
        - name: ZBX_HOSTNAME
          value: Zabbix server
        - name: ZBX_SERVER_HOST
          value: 127.0.0.1
        - name: ZBX_SERVER_PORT
          value: "10051"
        - name: ZBX_PASSIVE_ALLOW
          value: "true"
        - name: ZBX_PASSIVESERVERS
          value: 127.0.0.1
        - name: ZBX_ACTIVE_ALLOW
          value: "true"
        - name: ZBX_ACTIVESERVERS
        - name: ZBX_DEBUGLEVEL
        - name: ZBX_TIMEOUT
        - name: ZBX_LOADMODULE
        image: zabbix/zabbix-agent2:ol-6.2-latest
        imagePullPolicy: IfNotPresent
        name: zabbix-agent
        ports:
        - containerPort: 10050
          name: zabbix-agent
          protocol: TCP
        resources: {}
      restartPolicy: Always
      securityContext: {}
service-server.yaml
$ cat service-server.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: zabbix
  name: zabbix-server
  namespace: zabbix
spec:
  ports:
  - name: zabbix-server
    port: 10051
    protocol: TCP
    targetPort: 10051
  - name: zabbix-jmx
    port: 10052
    protocol: TCP
    targetPort: 10052
  selector:
    app: zabbix
  type: ClusterIP
service-agent.yaml
$ cat service-agent.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: zabbix
  name: zabbix-agent
  namespace: zabbix 
spec:
  ports:
  - name: zabbix-agent
    port: 10050
    protocol: TCP
    targetPort: 10050
  selector:
    app: zabbix
  type: ClusterIP

Webservice

zabbix-webservice.yaml
$ cat zabbix-webservice.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zabbix
  name: zabbix-webservice
  namespace: zabbix 
spec:
  selector:
    matchLabels:
      app: zabbix
  template:
    metadata:
      labels:
        app: zabbix
    spec:
      containers:
      - env:
        - name: ZBX_ALLOWEDIP
          value: ::/0
        image: zabbix/zabbix-web-service:ol-6.2-latest
        imagePullPolicy: IfNotPresent
        name: zabbix-webservice
        ports:
        - containerPort: 10053
          name: webservice
          protocol: TCP
        resources: {}
      restartPolicy: Always
      securityContext: {}
service-webservice.yaml
$ cat service-webservice.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: zabbix
  name: zabbix-webservice
  namespace: zabbix 
spec:
  ports:
  - name: webservice
    port: 10053
    protocol: TCP
    targetPort: 10053
  selector:
    app: zabbix
  type: ClusterIP

Zabbix Web

zabbix-web.yaml
$ cat zabbix-web.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zabbix
  name: zabbix-web
  namespace: zabbix 
spec:
  selector:
    matchLabels:
      app: zabbix
  template:
    metadata:
      labels:
        app: zabbix
    spec:
      containers:
      - env:
        - name: DB_SERVER_HOST
          valueFrom:
            secretKeyRef:
              key: host
              name: pgsql-secret 
        - name: DB_SERVER_PORT
          valueFrom:
            secretKeyRef:
              key: port
              name: pgsql-secret
        - name: POSTGRES_USER
          valueFrom:
            secretKeyRef:
              key: user
              name: pgsql-secret
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              key: password
              name: pgsql-secret 
        - name: POSTGRES_DB
          valueFrom:
            secretKeyRef:
              key: dbname
              name: pgsql-secret
        image: zabbix/zabbix-web-nginx-pgsql:ol-6.2-latest 
        imagePullPolicy: IfNotPresent
        name: zabbix-web
        ports:
        - containerPort: 8080
          name: zabbix-web
          protocol: TCP
        resources: {}
      restartPolicy: Always
      securityContext: {}
service-web.yaml
$ cat service-web.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: zabbix
  name: zabbix-web
  namespace: zabbix 
spec:
  ports:
  - name: zabbix-web
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: zabbix
  type: ClusterIP