๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ ๊ด€๋ฆฌ

์ด ์ฃผ์ œ์—์„œ๋Š” Apigee Hybrid ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ ๋ชฉ๋ก์€ ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค ๊ตฌ์„ฑ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์žฌ์ •์˜ ํŒŒ์ผ ์ •๋ณด

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„์„ ํด๋Ÿฌ์Šคํ„ฐ์— ์ฒ˜์Œ ์„ค์น˜ํ•  ๋•Œ๋Š” ๊ตฌ์„ฑ ์žฌ์ •์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”์— ๋”ฐ๋ผ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๊ณ , ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๊ณ , TLS ์ธ์ฆ์„œ ๋ฐ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๊ณ , Kubernetes ๋…ธ๋“œ ํ’€์„ ํŠน์ • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์„ฑ์š”์†Œ์— ํ• ๋‹นํ•˜๋Š” ์ผ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์„ค์น˜ ๋‹จ๊ณ„๋Š” ์žฌ์ •์˜ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์— ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ๋‚˜์ค‘์— ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋งŒ๋“  ์žฌ์ •์˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ๋ณ€๊ฒฝ

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์žฌ์ •์˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  apigeectl์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”์‹œ์ง€ ํ”„๋กœ์„ธ์„œ์—์„œ ๋ณต์ œ๋ณธ ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. OVERRIDES.yaml ํŒŒ์ผ์„ ์—ฝ๋‹ˆ๋‹ค. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„์„ ํด๋Ÿฌ์Šคํ„ฐ์— ์„ค์น˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์žฌ์ •์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ํŒŒ์ผ์—์„œ runtime ์š”์†Œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    ...
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 1
      replicaCountMax: 2
    ...
  3. ํ•„์š”์— ๋”ฐ๋ผ ๋ณต์ œ๋ณธ ์ˆ˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    ...
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 2
      replicaCountMax: 4
    ...
  4. apigeectl์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    apigeectl apply -f ./OVERRIDES.yaml --org --env ENV_NAME

์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ ์†์„ฑ

๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ๊ตฌ์„ฑ ์†์„ฑ ์ฐธ์กฐ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ์—๋Š” ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋งŒ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ์— ์—†๋Š” ์†์„ฑ์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์ฐธ์กฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

๊ตฌ์„ฑ ์†์„ฑ ์ฐธ์กฐ๋Š” ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฒซ ๋ฒˆ์งธ ํ•ญ๋ชฉ์€ ์ตœ์ƒ์œ„ ์š”์†Œ ์ด๋ฆ„ ๋‹ค์Œ์— ์†์„ฑ ๋ฐ ํ•˜์œ„ ์†์„ฑ์ด ์˜ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

authz.image.pullPolicy

์žฌ์ •์˜ ํŒŒ์ผ์—์„œ ์†์„ฑ์ด ์ ์ ˆํ•œ YAML ํ˜•์‹์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ ์ตœ์ƒ์œ„ authz ์š”์†Œ๋Š” ์™ผ์ชฝ ๋“ค์—ฌ์“ฐ๊ธฐ ๋˜๊ณ  ํ•˜์œ„ ์š”์†Œ ์†์„ฑ์€ ๊ทธ ์•„๋ž˜์— ๋“ค์—ฌ์“ฐ๊ธฐ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ YAML์—๋Š” ๊ฐ ์š”์†Œ์™€ ํ•˜์œ„ ์š”์†Œ์˜ ๋์— ์ฝœ๋ก ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด authz.image.pullPolicy ์†์„ฑ์„ Always๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด ์žฌ์ •์˜ ํŒŒ์ผ์—์„œ ์ด YAML ์Šคํƒ ์ž๋ฅผ ์ฐพ์•„์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•˜์„ธ์š”.

authz:
  image:
    pullPolicy: Always

๋‹ค๋ฅธ ์˜ˆ์‹œ์—์„œ๋Š” cassandra.auth.admin.password ์†์„ฑ(๊ตฌ์„ฑ ์†์„ฑ ์ฐธ์กฐ์— ๋‚˜์™€ ์žˆ์Œ)์ด Cassandra ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์žฌ์ •์˜ ํŒŒ์ผ์—์„œ ๋‹ค์Œ YAML์„ ์ฐพ์•„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra:
  auth:
    admin:
      password: abc123

๊ตฌ์„ฑ ์†์„ฑ ์ฐธ์กฐ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์œ„์— ์„ค๋ช…๋œ ํŒจํ„ด์„ ๋”ฐ๋ผ ํด๋Ÿฌ์Šคํ„ฐ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ์žฌ์ •์˜ ํŒŒ์ผ์—์„œ ์ด๋Ÿฌํ•œ ์š”์†Œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ „ ์ •์˜๋œ ์˜ˆ์‹œ ์žฌ์ •์˜ ํŒŒ์ผ ์‚ฌ์šฉ

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„์„ ์ฒ˜์Œ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ์˜ˆ์‹œ ์žฌ์ •์˜ ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋ฅผ Apigee์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ๋Š” ํ”„๋กœ๋•์…˜ ๋˜๋Š” ํ…Œ์ŠคํŠธ ์„ค์น˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํŠน์ • ์„ค์น˜ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•œ ์ „์ฒด ๊ตฌ์„ฑ ์†์„ฑ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ์— ์ ์ ˆํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์— ์žฌ์ •์˜ ํŒŒ์ผ ์ ์šฉ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ 7๋‹จ๊ณ„: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ตฌ์„ฑ ๊ธฐ๋ณธ๊ฐ’ ์ •๋ณด

Apigee๋Š” HYBRID_ROOT_DIR/config/values.yaml ํŒŒ์ผ์—์„œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์š”์†Œ ๊ตฌ์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์žฌ์ •์˜ ํŒŒ์ผ์€ values.yaml๊ณผ ๋™์ผํ•œ YAML ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์žฌ์ •์˜ ํŒŒ์ผ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ values.yaml์— ์žˆ๋Š” ๊ตฌ์„ฑ ์†์„ฑ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์†์„ฑ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์— ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ฉด ์žฌ์ •์˜๊ฐ€ ๊ธฐ๋ณธ๊ฐ’๊ณผ ๋ณ‘ํ•ฉ๋˜์–ด ์™„์ „ํ•œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉ๋œ ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ์ฝ”๋“œ๋Š” values.yaml์— ์žˆ๋Š” mart ๊ตฌ์„ฑ์š”์†Œ์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ์ง€๋งŒ sslCertPath ๋ฐ sslKeyPath์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ฐ’์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์น˜ ๋‹จ๊ณ„์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์žฌ์ •์˜ ํŒŒ์ผ์— ์ด๋Ÿฌํ•œ ๋ˆ„๋ฝ๋œ ๊ฐ’์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ ์†์„ฑ ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜์—ฌ ๊ธฐ๋ณธ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

...
mart:
  replicaCountMin: 2
  replicaCountMax: 4
  targetCPUUtilizationPercentage: 75
  terminationGracePeriodSeconds: 30
  sslCertPath:
  sslKeyPath:
  hostAlias:
  nodeSelector:
    key:
    value:
  revision: blue
  image:
    url: "gcr.io/apigee-release/hybrid/apigee-mart-server"
    tag: "1.3.6"
    pullPolicy: IfNotPresent
  resources:
    requests:
      cpu: 500m
      memory: 512Mi
  initCheckCF:
    resources:
      requests:
        cpu: 10m
  livenessProbe:
    timeoutSeconds: 1
    failureThreshold: 12
    periodSeconds: 5
    initialDelaySeconds: 15
  readinessProbe:
    timeoutSeconds: 1
    successThreshold: 1
    failureThreshold: 2
    periodSeconds: 5
    initialDelaySeconds: 15
  metricsURL: "/v1/server/metrics"
  cwcAppend: |
...

๊ตฌ์„ฑ์š”์†Œ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ณ  ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๊ตฌ์„ฑ์š”์†Œ ์žฌ์ •์˜ ํŒŒ์ผ์— ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ YAML์„ values.yaml์—์„œ ์žฌ์ •์˜ ํŒŒ์ผ์— ๋ณต์‚ฌํ•˜์—ฌ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ ์žฌ์ •์˜ ํŒŒ์ผ

Apigee๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฐฐํฌ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ผ๋ จ์˜ ์ƒ˜ํ”Œ ์žฌ์ •์˜ ํŒŒ์ผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๊ฐ€์žฅ ์ผ์น˜ํ•˜๋Š” ์žฌ์ •์˜ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์ƒ˜ํ”Œ์€ HYBRID_ROOT_DIR/examples ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ˜ํ”Œ ์žฌ์ •์˜ ํŒŒ์ผ ์„ค๋ช…
overrides-small.yaml ์ด ์ƒ˜ํ”Œ์€ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ๋•Œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œ ๊ถŒ์žฅ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ƒ˜ํ”Œ ๊ตฌ์„ฑ์€ ๊ธฐ๋ณธ ์„ค์ • ๋ฐ ๊ฐ’์— ์ตœ๋Œ€ํ•œ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ตœ์†Œ ๋ณต์ œ๋ณธ์€ 1๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
overrides-medium.yaml ์ด ์ƒ˜ํ”Œ์€ ํ…Œ์ŠคํŠธ ๋ฐ QA ํ™˜๊ฒฝ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์ข‹์€ ์ถœ๋ฐœ์ ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๊ตฌ์„ฑ์š”์†Œ์—๋Š” ์ถ”๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์œ„ ์ˆ˜์ค€ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. Cassandra๋Š” ์„ฑ๋Šฅ์„ ์œ„ํ•ด SSD ๋””์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ณ„ ๋…ธ๋“œ์— ์Šคํ…Œ์ดํŠธํ’€(Stateful) ๋ฐ ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ „์šฉ ๋…ธ๋“œ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.
overrides-large.yaml ์ด ์ƒ˜ํ”Œ์€ ์‚ฌ์ „ ํ”„๋กœ๋•์…˜ ๋ฐ ํ”„๋กœ๋•์…˜๊ณผ ๊ฐ™์€ ๊ณ ์„ฑ๋Šฅ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ์ข‹์€ ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ์—๋Š” ์•”ํ˜ธํ™” ํ‚ค, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ์„ ์„ค์ •ํ•˜๋Š” ์†์„ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์ตœ์†Œ 2๊ฐœ์˜ ๋ณต์ œ๋ณธ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์ฃผ์„

์ฃผ์„์€ Apigee Hybrid Kubernetes pod์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค/๊ฐ’ ๋งต์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์†์„ฑ ์ฐธ์กฐ์— ๋‚˜์—ด๋œ ๋‹ค์Œ ์†์„ฑ์— ๋Œ€ํ•˜์—ฌ ์ปค์Šคํ…€ ์ฃผ์„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๊ฐ ๊ตฌ์„ฑ์š”์†Œ์˜ OVERRIDES.yaml ํŒŒ์ผ์— ์Šคํƒ ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” runtime ํฌ๋“œ์—์„œ ์ฃผ์„์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

runtime:
  annotations:
    businessunit: "bu1"

๋ณ‘ํ•ฉ๋œ ๊ตฌ์„ฑ ํ…Œ์ŠคํŠธ

--dry-run ํ”Œ๋ž˜๊ทธ๋ฅผ apigeectl๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ณ‘ํ•ฉ๋œ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉํ•  ๋‚ด์šฉ์„ ์ •ํ™•ํžˆ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ ๋ฌธ์ œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ์— ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์†Œ์Šค ์ œ์–ด์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Apigee Hybrid์—์„œ --dry-run ํ”Œ๋ž˜๊ทธ์˜ ๋ฌธ๋ฒ•์€ ์‹คํ–‰ ์ค‘์ธ kubectl ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ kubectl ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

kubectl version

kubectl ๋ฒ„์ „ 1.17 ์ดํ•˜:

APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES.yaml --dry-run=true

kubectl ๋ฒ„์ „ 1.18 ์ด์ƒ:

APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES.yaml --dry-run=client

์ž์„ธํ•œ ๋‚ด์šฉ์€ apigeectl๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•„์š”์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์žฌ์ •์˜ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

์žฌ์ •์˜ ํŒŒ์ผ์€ ์›ํ•˜๋Š” ๋งŒํผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ํŒŒ์ผ์—๋Š” ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๋•์…˜์šฉ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ์žฌ์ •์˜ ํŒŒ์ผ๊ณผ ํ…Œ์ŠคํŠธ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์žฌ์ •์˜ ํŒŒ์ผ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์†Œ์Šค ์ œ์–ด ์‹œ์Šคํ…œ์—์„œ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apigeectl๊ณผ ํ•จ๊ป˜ -f ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์žฌ์ •์˜ ํŒŒ์ผ์˜ ์œ„์น˜์™€ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

apigeectl apply  -f ./test_env_override.yaml

์ž์„ธํ•œ ๋‚ด์šฉ์€ apigeectl๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ „์šฉ ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ ์‚ญ์ œ

ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ „์šฉ ๋Ÿฐํƒ€์ž„ ์˜์—ญ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด apigeectl delete ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์š”์†Œ์—๋Š” synchronizer, mart, runtime, cassandra, udca๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์žฌ์ •์˜ ํŒŒ์ผ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

apigeectl delete -f ./OVERRIDES.yaml

apigeectl apply ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apigeectl apply --org --env ENV_NAME -f ./OVERRIDES.yaml

์ž์„ธํ•œ ๋‚ด์šฉ์€ apigeectl๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠน์ • ๊ตฌ์„ฑ์š”์†Œ ์‚ญ์ œ

์˜ˆ๋ฅผ ๋“ค์–ด synchronizer ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

apigeectl delete --org --env ENV_NAME -f ./OVERRIDES.yaml

๊ทธ๋Ÿฐ ๋‹ค์Œ apigeectl apply ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apigeectl apply --org --env ENV_NAME -f ./OVERRIDES.yaml

์ž์„ธํ•œ ๋‚ด์šฉ์€ apigeectl๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ ์‚ญ์ œ

apigeectl init ๋ช…๋ น์–ด๋กœ ์ƒ์„ฑ๋œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์š”์†Œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด --all ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋œ apigeectl delete ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์žฌ์ •์˜ ํŒŒ์ผ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

apigeectl delete -f ./OVERRIDES.yaml --all

์ž์„ธํ•œ ๋‚ด์šฉ์€ apigeectl๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.