How to use Kubernetes Sidecar Container with NSQ

Introduction

Kali ini saya akan membahas konfigurasi tentang sidecar yang dimana saya melakukan setup POD atau container ini dikarenakan kebutuhan atau by study case, dan ini mungkin salah stau judul dan percobaan yang tepat “How to use Kubernetes Sidecar Container with NSQ”

Study case : nsq dibagi menjadi 3 yaitu nsqlookupd, nsqd & nsqadmin, yang dimana bagian itu terpisah atau masing-masing POD nya, disini kita mencoba untuk menyatukan nsqlookupd & nsqd.

Sebelum kesana kita perlu pahami terlebih dahulu tentang NSQ , message platform di sini https://nsq.io/

Hal Yang perlu disiapkan:

  • Cluster Kube

Langkah-langkah membuat helmchart saya bagi menjadi 2 stage sebagai berikut :

Step 1 – Create manifests

Yang pertama kita lakukan adalah menyiapkan file manifests, karena imagenya opensource kita hanya tinggal menyesuaikan arguments & port saja sbb

manifests file

  • deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nsq-service
  namespace: test
  labels:
    app: nsq-service
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nsq-service
  template:
    metadata:
      labels:
        app: nsq-service
    spec:
      volumes:
      - name: share-logs
        emptyDir: {}
      containers:
      - name: nsqlookupd
        image: nsqio/nsq:latest
        command: ["/bin/sh"]
        args: ["-c", "/nsqlookupd -verbose"]

        volumeMounts:
        - name: share-logs
          mountPath: /etc/log
        ports:
        - containerPort: 4160
          name: tcp-nsqlookupd
        - containerPort: 4161
          name: http-nsqlookupd
        imagePullPolicy: Always

      - name: nsqd
        image: nsqio/nsq:latest
        command: ["/bin/sh"]
        args: ["-c", "/nsqd --lookupd-tcp-address=nsq-service.test.svc.cluster.local:4160 --broadcast-address=nsq-service.test.svc.cluster.local"]

        volumeMounts:
        - name: share-logs
          mountPath: /etc/log
        ports:
        - containerPort: 4150
          name: tcp-nsqd
        - containerPort: 4151
          name: http-nsqd  
        imagePullPolicy: Always
        resources:
          requests:
            cpu: "30m"
            memory: "64Mi"
          limits:
            cpu: "128m"
            memory: "512Mi"

  • Service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nsq-service
  namespace: test
  labels:
    app: nsq-staging
spec:
  selector:
    app: nsq-staging
  ports:
  - name: http-nsqd
    port: 4151
    targetPort: 4151
  - name: http-nsqlookupd
    port: 4161
    targetPort: 4161
  - name: tcp-nsqd
    port: 4150
    targetPort: 4150
  - name: tcp-nsqlookupd
    port: 4160
    targetPort: 4160

Step 2 – Apply & Check

Kemudian selanjutnya kita apply deployment & juga servicenya

kubectl apply -f name-file-nsq

Outputnya adalah POD kita mempunyai 2 container dengan metode sidecar dan servicenya mempunya 4 port dengan port yang sudah di sesuaikan seperti ini

Ciri khas sidecar adalah ada 2 tanda hijau dengan nama yang sudah di setup : nsqd & nsqlookupd

Selamat mencoba

Leave a Reply

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