Cassandra ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ

์ด ์ฃผ์ œ์—์„œ๋Š” Cassandra Datastore ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ์น˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Cassandra๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ์•„ํ‚คํ…์ฒ˜์˜ cassandra ๊ตฌ์„ฑ์š”์†Œ์—์„œ ์‹คํ–‰๋˜๋Š” ์˜๊ตฌ Datastore์ž…๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค ๊ตฌ์„ฑ ๊ฐœ์š”๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

Cassandra ํฌ๋“œ๊ฐ€ ๋Œ€๊ธฐ์ค‘ ์ƒํƒœ๋กœ ๋ฉˆ์ถฐ ์žˆ์Œ

์ฆ์ƒ

์‹œ์ž‘ํ•˜๋ฉด Cassandra ํฌ๋“œ๊ฐ€ ๋Œ€๊ธฐ์ค‘ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€

kubectl๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ ์ƒํƒœ๋ฅผ ๋ณด๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ Cassandra ํฌ๋“œ๊ฐ€ Pending ์ƒํƒœ๋กœ ๋ฉˆ์ถฐ ์žˆ์Šต๋‹ˆ๋‹ค. Pending ์ƒํƒœ๋Š” Kubernetes๊ฐ€ ๋…ธ๋“œ์—์„œ ํฌ๋“œ๋ฅผ ์˜ˆ์•ฝํ•  ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํฌ๋“œ๋Š” ์ƒ์„ฑ ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubectl get pods -n namespace

NAME                                     READY   STATUS      RESTARTS   AGE
adah-resources-install-4762w             0/4     Completed   0          10m
apigee-cassandra-default-0               0/1     Pending     0          10m
...

๊ฐ€๋Šฅํ•œ ์›์ธ

ํฌ๋“œ๊ฐ€ ๋Œ€๊ธฐ์ค‘ ์ƒํƒœ๋กœ ๋ฉˆ์ถฐ ์žˆ๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์›์ธ ์„ค๋ช…
๋ฆฌ์†Œ์Šค ๋ถ€์กฑ ํฌ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” CPU ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.
๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ Pod๋Š” ์˜๊ตฌ ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค.

์ง„๋‹จ

์˜ค๋ฅ˜ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubectl -n namespace describe pods pod_name

์˜ˆ:

kubectl describe pods apigee-cassandra-default-0 -n apigee

์ถœ๋ ฅ์— ๋‹ค์Œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ์ด ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒฝ์šฐ CPU ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • Pod์— ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์€ ์ฆ‰๊ฐ์ ์ธ PersistentVolumeClaim(PVC)์ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒฝ์šฐ Pod์—์„œ ์˜๊ตฌ ๋ณผ๋ฅจ์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋ฆฌ์†Œ์Šค ๋ถ€์กฑ

CPU ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ถฉ๋ถ„ํ•˜๋„๋ก Cassandra ๋…ธ๋“œ ํ’€์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋…ธ๋“œ ํ’€ ํฌ๊ธฐ ์กฐ์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜๊ตฌ ๋ณผ๋ฅจ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ

์˜๊ตฌ ๋ณผ๋ฅจ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด PersistentVolumeClaim(PVC)์„ ์„ค๋ช…ํ•˜์—ฌ ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. ํด๋Ÿฌ์Šคํ„ฐ์˜ PVC๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
    kubectl -n namespace get pvc
    
    NAME                                        STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    cassandra-data-apigee-cassandra-default-0   Bound    pvc-b247faae-0a2b-11ea-867b-42010a80006e   10Gi       RWO            standard       15m
    ...
  2. ์‹คํŒจํ•œ ํฌ๋“œ์˜ PVC๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์–ด๋Š” ํฌ๋“œ apigee-cassandra-default-0์— ๋ฐ”์ธ๋”ฉ๋œ PVC๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
    kubectl apigee describe pvc cassandra-data-apigee-cassandra-default-0
    
    Events:
      Type     Reason              Age                From                         Message
      ----     ------              ----               ----                         -------
      Warning  ProvisioningFailed  3m (x143 over 5h)  persistentvolume-controller  storageclass.storage.k8s.io "apigee-sc" not found

    ์ด ์˜ˆ์‹œ์—์„œ๋Š” ์ด๋ฆ„์ด apigee-sc์ธ StorageClass๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ StorageClass ๋ณ€๊ฒฝ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ˆ„๋ฝ๋œ StorageClass๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Pod ๋””๋ฒ„๊น…๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

Cassandra Pod๊ฐ€ CrashLoopBackoff ์ƒํƒœ๋กœ ๋ฉˆ์ถฐ ์žˆ์Œ

์ฆ์ƒ

์‹œ์ž‘ํ•˜๋ฉด Cassandra ํฌ๋“œ๊ฐ€ CrashLoopBackoff ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€

kubectl๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ ์ƒํƒœ๋ฅผ ๋ณด๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ Cassandra ํฌ๋“œ๊ฐ€ CrashLoopBackoff ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด ์ƒํƒœ๋Š” Kubernetes๊ฐ€ ํฌ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubectl get pods -n namespace

NAME                                     READY   STATUS            RESTARTS   AGE
adah-resources-install-4762w             0/4     Completed         0          10m
apigee-cassandra-default-0               0/1     CrashLoopBackoff  0          10m
...

๊ฐ€๋Šฅํ•œ ์›์ธ

ํฌ๋“œ๊ฐ€ CrashLoopBackoff ์ƒํƒœ๋กœ ๋ฉˆ์ถฐ ์žˆ๋Š” ์ด์œ ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์›์ธ ์„ค๋ช…
๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ์ด์ „ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์™€ ๋‹ค๋ฆ„ ์ด ์˜ค๋ฅ˜๋Š” ์ด์ „ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์˜๊ตฌ ๋ณผ๋ฅจ์ด Cassandra Pod์— ์žˆ์œผ๋ฉฐ ์ƒˆ Pod๊ฐ€ ์ด์ „ ํด๋Ÿฌ์Šคํ„ฐ์— ์กฐ์ธํ•  ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์€ ๋ณดํ†ต ๋น„ํ™œ์„ฑ ์˜๊ตฌ ๋ณผ๋ฅจ์ด ๋™์ผํ•œ Kubernetes ๋…ธ๋“œ์— ์žˆ๋Š” ์ด์ „ Cassandra ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง€์†๋  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Cassandra๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Truststore ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ ์ด ์˜ค๋ฅ˜๋Š” Cassandra Pod๊ฐ€ TLS ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ˜„์ƒ์€ ์ œ๊ณต๋œ ํ‚ค์™€ ์ธ์ฆ์„œ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ง„๋‹จ

Cassandra ์˜ค๋ฅ˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ์˜ ์›์ธ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

  1. ํฌ๋“œ๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ์‹คํŒจํ•œ Cassandra ํฌ๋“œ์˜ ID๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    kubectl get pods -n namespace
  2. ์‹คํŒจํ•œ ํฌ๋“œ์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    kubectl logs pod_id -n namespace

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

ํฌ๋“œ ๋กœ๊ทธ์—์„œ ๋‹ค์Œ ๋‹จ์„œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ์ด์ „ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์™€ ๋‹ค๋ฆ„

์ด ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ:

Cannot start node if snitch's data center (us-east1) differs from previous data center
  • ํด๋Ÿฌ์Šคํ„ฐ์— ๋น„ํ™œ์„ฑ ๋˜๋Š” ์ด์ „ PVC๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ PVC๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ์„ค์ •์„ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    kubectl -n namespace get pvc
    kubectl -n namespace delete pvc cassandra-data-apigee-cassandra-default-0

Truststore ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ

์ด ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ:

Caused by: java.io.FileNotFoundException: /apigee/cassandra/ssl/truststore.p12
(No such file or directory)

์žฌ์ •์˜ ํŒŒ์ผ์— ์ œ๊ณต๋œ ํ‚ค์™€ ์ธ์ฆ์„œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ณ  ์œ ํšจํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

cassandra:
  sslRootCAPath: path_to_root_ca-file
  sslCertPath: path-to-tls-cert-file
  sslKeyPath: path-to-tls-key-file

๋…ธ๋“œ ์žฅ์• 

์ฆ์ƒ

์‹œ์ž‘ํ•˜๋ฉด Cassandra Pod๊ฐ€ ๋Œ€๊ธฐ์ค‘ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ ๋…ธ๋“œ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง„๋‹จ

  1. ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€ ์•Š์€ Cassandra Pod๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    $ kubectl get pods -n your_namespace
        NAME                  READY   STATUS    RESTARTS   AGE
        cassandra-default-0   0/1     Pending   0          13s
        cassandra-default-1   1/1     Running   0          8d
        cassandra-default-2   1/1     Running   0          8d
  2. ์›Œ์ปค ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. NotReady ์ƒํƒœ์ธ ์›Œ์ปค ๋…ธ๋“œ๋Š” ์‹คํŒจํ•œ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.
    kubectl get nodes -n your_namespace
    NAME                                              STATUS   ROLES    AGE   VERSION            INTERNAL-IP
    gke-hybrid-cluster-apigee-data-178811f1-lv5j      Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.198
    gke-hybrid-cluster-apigee-data-d63b8b8d-n41g      NotReady <none>   34d   v1.21.5-gke.1302   10.138.15.200
    gke-hybrid-cluster-apigee-data-ec752c0b-b1cr      Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.199
    gke-hybrid-cluster-apigee-runtime-ba502ff4-57mq   Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.204
    gke-hybrid-cluster-apigee-runtime-ba502ff4-hwkb   Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.203
    gke-hybrid-cluster-apigee-runtime-bfa558e0-08vw   Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.201
    gke-hybrid-cluster-apigee-runtime-bfa558e0-xvsc   Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.202
    gke-hybrid-cluster-apigee-runtime-d12de7df-693w   Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.241
    gke-hybrid-cluster-apigee-runtime-d12de7df-fn0w   Ready    <none>   34d   v1.21.5-gke.1302   10.138.15.206

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  1. ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ฃฝ์€ Cassandra Pod๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    $ kubectl exec -it apigee-cassandra-default-0 -- nodetool status
    $ kubectl exec -it apigee-cassandra-default-0 -- nodetool removenode deadnode_hostID
  2. ์ฃฝ์€ ๋…ธ๋“œ์—์„œ VolumeClaim์„ ์‚ญ์ œํ•˜์—ฌ ์–ดํ”ผ๋‹ˆํ‹ฐ๋กœ ์ธํ•ด Cassandra Pod๊ฐ€ ์ฃฝ์€ ๋…ธ๋“œ์—์„œ ๊ฐ€๋™๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    kubectl get pvc -n your_namespace
    kubectl delete pvc volumeClaim_name -n your_namespace
  3. ๋ณผ๋ฅจ ํ…œํ”Œ๋ฆฟ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋…ธ๋“œ์˜ PersistentVolume์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ณผ๋ฅจ ํ…œํ”Œ๋ฆฟ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: cassandra-data-3
    spec:
      capacity:
        storage: 100Gi
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: local-storage
      local:
        path: /apigee/data
      nodeAffinity:
        "required":
          "nodeSelectorTerms":
          - "matchExpressions":
            - "key": "kubernetes.io/hostname"
              "operator": "In"
              "values": ["gke-hybrid-cluster-apigee-data-d63b8b8d-n41g"]
  4. ๊ฐ’์„ ์ƒˆ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„/IP๋กœ ๋ฐ”๊พธ๊ณ  ํ…œํ”Œ๋ฆฟ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    kubectl apply -f volume-template.yaml

๋””๋ฒ„๊น…์„ ์œ„ํ•œ ํด๋ผ์ด์–ธํŠธ ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ

์ด ์„น์…˜์—์„œ๋Š” cqlsh์™€ ๊ฐ™์ด Cassandra ๋””๋ฒ„๊น… ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” Cassandra ํ…Œ์ด๋ธ”์„ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ  ๋””๋ฒ„๊น… ๋ชฉ์ ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ปจํ…Œ์ด๋„ˆ ๋งŒ๋“ค๊ธฐ

ํด๋ผ์ด์–ธํŠธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ์ปจํ…Œ์ด๋„ˆ์—๋Š” apigee-cassandra-user-setup Pod์˜ TLS ์ธ์ฆ์„œ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ด ์ธ์ฆ์„œ ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    kubectl get secrets -n apigee --field-selector type=kubernetes.io/tls | grep apigee-cassandra-user-setup | awk '{print $1}'

    ์ด ๋ช…๋ น์–ด๋Š” ์ธ์ฆ์„œ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด apigee-cassandra-user-setup-rg-hybrid-b7d3b9c-tls์ž…๋‹ˆ๋‹ค.

  2. ์ƒˆ ํŒŒ์ผ์„ ์—ด๊ณ  ๋‹ค์Œ Pod ์‚ฌ์–‘์„ ์—ฌ๊ธฐ์— ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.
    apiVersion: v1
    kind: Pod
    metadata:
      labels:
      name: cassandra-client-name   # For example: my-cassandra-client
      namespace: apigee
    spec:
      containers:
      - name: cassandra-client-name
        image: "gcr.io/apigee-release/hybrid/apigee-hybrid-cassandra-client:1.7.6"
        imagePullPolicy: Always
        command:
        - sleep
        - "3600"
        env:
        - name: CASSANDRA_SEEDS
          value: apigee-cassandra-default.apigee.svc.cluster.local
        - name: APIGEE_DML_USER
          valueFrom:
            secretKeyRef:
              key: dml.user
              name: apigee-datastore-default-creds
        - name: APIGEE_DML_PASSWORD
          valueFrom:
            secretKeyRef:
              key: dml.password
              name: apigee-datastore-default-creds
        volumeMounts:
        - mountPath: /opt/apigee/ssl
          name: tls-volume
          readOnly: true
      volumes:
      - name: tls-volume
        secret:
          defaultMode: 420
          secretName: your-secret-name    # For example: apigee-cassandra-user-setup-rg-hybrid-b7d3b9c-tls
      restartPolicy: Never
  3. .yaml ํ™•์žฅ์œผ๋กœ ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด my-spec.yaml์ž…๋‹ˆ๋‹ค.
  4. ํด๋Ÿฌ์Šคํ„ฐ์— ์‚ฌ์–‘์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    kubectl apply -f your-spec-file.yaml -n apigee
  5. ์ปจํ…Œ์ด๋„ˆ์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
    kubectl exec -n apigee cassandra-client -it -- bash
  6. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cassandra cqlsh ์ธํ„ฐํŽ˜์ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    cqlsh ${CASSANDRA_SEEDS} -u ${APIGEE_DML_USER} -p ${APIGEE_DML_PASSWORD} --ssl

ํด๋ผ์ด์–ธํŠธ ํฌ๋“œ ์‚ญ์ œ

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cassandra ํด๋ผ์ด์–ธํŠธ Pod๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

kubectl delete pods -n apigee cassandra-client

์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค

Apigee ๋ฐ Apigee Hybrid ํ”Œ๋ ˆ์ด๋ถ ์†Œ๊ฐœ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.