In this example we are using Elastic Cloud managed elasticsearch and will deploy the metricbeat to a k8s cluster.

Create Secret

apiVersion: v1
 data:
   ELASTICSEARCH_AUTH: [base64_encoded_auth]
   ELASTICSEARCH_CLOUD_ID: [base64_encoded_cloudid]
   ELASTICSEARCH_RABBITMQ_PASSWORD: [base64_encoded_password]
   ELASTICSEARCH_RABBITMQ_USER: [base64_encoded_user]
 kind: Secret
 metadata:
   name: metricbeat
 type: Opaque

Create DNS pointing to RabbitMQ

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
spec:
  externalName: your-rabbitmq-host-name.com
  type: ExternalName

Config Map

apiVersion: v1
data:
  metricbeat.yml: |
    cloud.id: '${ELASTICSEARCH_CLOUD_ID}'
    cloud.auth: '${ELASTICSEARCH_AUTH}'

    metricbeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false

    metricbeat.modules:
    - module: rabbitmq
      period: 10s
      hosts: ['rabbitmq:15672']
      username: ${ELASTICSEARCH_RABBITMQ_USER}
      password: ${ELASTICSEARCH_RABBITMQ_PASSWORD}  

    processors:
    - add_cloud_metadata: ~
    - add_docker_metadata: ~
kind: ConfigMap
metadata:
  name: metricbeat

Deploy

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  labels:
    app: metricbeat
  name: metricbeat
spec:
  selector:
    matchLabels:
      app: metricbeat
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: metricbeat
    spec:
      containers:
      - envFrom:
        - secretRef:
            name: metricbeat
            optional: false
        image: docker.elastic.co/beats/metricbeat:7.6.0
        imagePullPolicy: Always
        name: metricbeat
        resources: {}
        securityContext:
          allowPrivilegeEscalation: false
          capabilities: {}
          privileged: false
          readOnlyRootFilesystem: false
          runAsNonRoot: false
        stdin: true
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        tty: true
        volumeMounts:
        - mountPath: /usr/share/metricbeat/metricbeat.yml
          name: metricbeat
          subPath: metricbeat.yml
      volumes:
      - configMap:
          defaultMode: 292
          name: metricbeat
          optional: false
        name: metricbeat


0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *