Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel6
outlinefalse
typelist
printablefalse

Walkthrough overview

Code Block
languagenone
[Telegraf] ---8086--> [InfluxDB] <---8086--- [CH Srv] <---443--- [External]
                          /\                    /\
                       8086|                     |
                           |9094                 |2379
                           \/                   \/
                      [Kapacitor]          [ETCD Cluster]

...

기본적인 사용법은 Quickstart Helm 을 참고하고, 아래 컴포넌트들을 하나씩 배포하여 보자.

Deploy InfluxDB

CloudHub와 호환되는 InfluxDB의 버전은 1.18이므로, InfluxDB:1.18로 배포하기 위해 아래 influxdata의 repo를 추가한다.

Add Helm Repo

만일 아래 influxdata의 repo가 추가되어 있지 않다면, 아래 명령어로 추가하여 준다.

Code Block
languagebash
$ helm repo add influxdata https://helm.influxdata.com/
$ helm search repo influxdb
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
bitnami/influxdb                5.7.0           2.7.1           InfluxDB(TM) is an open source time-series data...
influxdata/influxdb             4.12.3          1.8.10          Scalable datastore for metrics, events, and rea...
influxdata/influxdb-enterprise  0.1.22          1.10.0          Run InfluxDB Enterprise on Kubernetes
influxdata/influxdb2            2.1.1           2.3.0           A Helm chart for InfluxDB v2
influxdata/kapacitor            1.4.6           1.6.4           InfluxDB's native data processing engine. It ca...
influxdata/chronograf           1.2.5           1.9.4           Open-source web application written in Go and R...
influxdata/telegraf             1.8.28          1.26.3          Telegraf is an agent written in Go for collecti...
influxdata/telegraf-operator    1.3.11          v1.3.10         A Helm chart for Kubernetes to deploy telegraf-...

Installation

설치 명령어

위의 여러 버전들 중에 influxdata/influxdb 4.12.3 1.8.10을 목표 버전으로 하고, Helm chart를 통해 설치하는 방법은 아래 두 가지(세부적으로는 세 가지) 정도가 있다.

...

필자 생각에는 참고 삼아 배포하거나 show values 등의 명령을 사용하여 리서치할 용도가 아니라, 본인의 K8s에 배포를 목적으로 한다면, 위 1번이 버전을 따로 관리하기에도 편하고 charts 구조 및 내용을 탐색하기에도 편한 듯 하다.
캐바캐이니, 편한대로 하여도 좋으나, 여기서는 1번 방식으로 배포하도록 하겠다.

Values override

influxdata/influxdb 내부의 values를 상황에 맞게 override 하자.

...

  1. Influxdb는 데이터베이스 이므로 당연히 상태를 가지는 pod(kind: StatefulSet)가 생성되어야 한다.
    하지만 현재 persistence volume을 생성해두지 않았으므로, 일단 persistence.enabled = false로 하여 생성하여 pod 생성이 잘 되는 지 등, 그 밖에 기능들이 생각한 대로 워킹하는지 확인한다.
    차후, persistence volume으로 대체하기로 한다.

  2. helm show values influxdata/influxdb 결과의 values.config.http.bind-address: ":8086" 이므로 서비스 포트를 8086으로 지정하였다.
    또한, 외부 접근을 위해 externalIPs도 추가하였다.

  3. 1과 같이 공유 persistence volume을 사용하지 않기 때문에 pod가 업그레이드 되거나 혹은 재 생성되거나 할 때, 데이터 유지를 위해서는 반드시 같은 노드에 생성되어야 한다.
    따라서 nodeSelector를 통해 worker01노드에만 생성되도록 하였다.

Install influxdb

그럼 위의 influxdb_override.yaml와 함께 배포해본다.

...

여기까지 성공적으로 수행이 되었다면, http://10.20.2.235:8086 으로 CloudHub의 data source로 추가도 가능할 것이다.

...

To do

위에서 언급한 것처럼 StatefulSet을 위한 persistence volume claim을 생성하여 production 환경과 유사한 배포를 해볼 것이다.

Deploy Kapacitor

InfluxDB의 배포가 정상 가동되면, 이제 Kapacitor를 배포하여 보자.

...

Code Block
languagebash
$ helm pull influxdata/kapacitor

Values override

Kapacitor는 특별히 상태를 가지지 않아도 되므로 Deployment로 배포된다.
따라서 nodeSeletor는 따로 지정하지 않는다.

...

Code Block
languageyaml
$ vim kapacitor/values.yaml
...
## Specify a service type, defaults to NodePort
## ref: http://kubernetes.io/docs/user-guide/services/
##
service:
  type: ClusterIP
  ports:
    - port: 9092
    - targetPort: 9092
  #externalIPs:
...

Install kapacitor

이제 위에 만들어둔 kapacitor_override.yaml와 함께 설치(이미 설치되어 있으므로 upgrade)해 본다.

...

이제, 앞서 연결한 InfluxDB data source에 위 kapacitor를 연결하면 정상 작동 할 것이다.

...

Deploy ETCD

일단 모든 공개 허브에서 etcd를 검색해보면, 아래와 같이 여러 APP VERSION의 Repo가 출력된다.

...