Versions Compared

Key

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

Github

아래 예제들에 대한 전체 helm chart는 https://github.com/snetsystems/K8s-Objects/tree/master/helm-charts 에서 볼 수 있다.

Walkthrough overview

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

...

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

Values override

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

...

따라서, 아래와 같이 upgrade 를 통해 influxdb_customoverride.yaml의 내용을 적용하도록 하겠다.

Code Block
languagebash
# helm upgrade -n helm-test influxdb-1688227557 -f influxdb_customoverride.yaml ./influxdb
Release "influxdb-1688227557" has been upgraded. Happy Helming!
NAME: influxdb-1688227557
LAST DEPLOYED: Mon Jul  3 13:50:43 2023
NAMESPACE: helm-test
STATUS: deployed
REVISION: 6
TEST SUITE: None
NOTES:
InfluxDB can be accessed via port 8086 on the following DNS name from within your cluster:

  http://influxdb-1688227557.helm-test:8086

You can connect to the remote instance with the influx CLI. To forward the API port to localhost:8086, run the following:

  kubectl port-forward --namespace helm-test $(kubectl get pods --namespace helm-test -l app=influxdb-1688227557 -o jsonpath='{ .items[0].metadata.name }') 8086:8086

You can also connect to the influx CLI from inside the container. To open a shell session in the InfluxDB pod, run the following:

  kubectl exec -i -t --namespace helm-test $(kubectl get pods --namespace helm-test -l app=influxdb-1688227557 -o jsonpath='{.items[0].metadata.name}') /bin/sh

To view the logs for the InfluxDB pod, run the following:

  kubectl logs -f --namespace helm-test $(kubectl get pods --namespace helm-test -l app=influxdb-1688227557 -o jsonpath='{ .items[0].metadata.name }')

[root@test-k8s-master-centos8 helm]# kubectl get svc -n helm-test
NAME                  TYPE        CLUSTER-IP      EXTERNAL-IP               PORT(S)             AGE
influxdb-1688227557   ClusterIP   10.97.73.25     10.20.2.235,10.20.2.236   8086/TCP,8088/TCP   36h
nginx-1688100975      NodePort    10.106.11.197   <none>                    80:30117/TCP        2d23h

...

Code Block
languagebash
# helm install -n helm-test -g -f etcd_override.yaml ./etcd
NAME: etcd-1688819715
LAST DEPLOYED: Sat Jul  8 21:35:15 2023
NAMESPACE: helm-test
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: etcd
CHART VERSION: 9.0.2
APP VERSION: 3.5.9

** Please be patient while the chart is being deployed **

etcd can be accessed via port 2379 on the following DNS name from within your cluster:

    etcd-1688819715.helm-test.svc.cluster.local

To create a pod that you can use as a etcd client run the following command:

    kubectl run etcd-1688819715-client --restart='Never' --image docker.io/bitnami/etcd:3.5.9-debian-11-r18 --env ROOT_PASSWORD=$(kubectl get secret --namespace helm-test etcd-1688819715 -o jsonpath="{.data.etcd-root-password}" | base64 -d) --env ETCDCTL_ENDPOINTS="etcd-1688819715.helm-test.svc.cluster.local:2379" --namespace helm-test --command -- sleep infinity

Then, you can set/get a key using the commands below:

    kubectl exec --namespace helm-test -it etcd-1688819715-client -- bash
    etcdctl --user root:$ROOT_PASSWORD put /message Hello
    etcdctl --user root:$ROOT_PASSWORD get /message

To connect to your etcd server from outside the cluster execute the following commands:

    kubectl port-forward --namespace helm-test svc/etcd-1688819715 2379:2379 &
    echo "etcd URL: http://127.0.0.1:2379"

 * As rbac is enabled you should add the flag `--user root:$ETCD_ROOT_PASSWORD` to the etcdctl commands. Use the command below to export the password:

    export ETCD_ROOT_PASSWORD=$(kubectl get secret --namespace helm-test etcd-1688819715 -o jsonpath="{.data.etcd-root-password}" | base64 -d)

Deploy CloudHub

위의 예제들과 기본적 개념은 유사하므로, https://github.com/snetsystems/K8s-Objects/tree/master/helm-charts 를 참고하도록 한다.