๊ตฌ์„ฑ ์†์„ฑ ์ฐธ์กฐ

์ด ์„น์…˜์—๋Š” Apigee Hybrid ๋ฐฐํฌ์˜ ๋Ÿฐํƒ€์ž„ ์˜์—ญ์„ ๋งž์ถค์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ ์†์„ฑ์ด ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ƒ์œ„ ์†์„ฑ

๋‹ค์Œ ํ‘œ์—์„œ๋Š” overrides.yaml ํŒŒ์ผ์˜ ์ตœ์ƒ์œ„ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ƒ์œ„ ์†์„ฑ์€ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์†ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์กฐ์ง ๋˜๋Š” ํ™˜๊ฒฝ ์ˆ˜์ค€์—์„œ ์ ์šฉ๋˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
contractProvider ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: https://apigee.googleapis.com

์„ค์น˜ ์‹œ ๋ชจ๋“  API์˜ API ๊ฒฝ๋กœ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

gcpProjectID Deprecated: v1.2.0 ์ด์ƒ์—์„œ๋Š” gcp.projectID๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: none

ํ•„์ˆ˜

Google Cloud ํ”„๋กœ์ ํŠธ์˜ ID์ž…๋‹ˆ๋‹ค. k8sClusterName(์ง€์› ์ค‘๋‹จ๋จ) ๋ฐ gcpRegion(์ง€์› ์ค‘๋‹จ๋จ)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  apigee-logger์™€ apigee-metrics๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œํ•  ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

gcpRegion Deprecated: v1.2.0 ์ด์ƒ์—์„œ๋Š” gcp.region๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: us-central1

ํ•„์ˆ˜

Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด GCP ๋ฆฌ์ „ ๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. gcpProjectID(์ง€์› ์ค‘๋‹จ๋จ) ๋ฐ k8sClusterName(์ง€์› ์ค‘๋‹จ๋จ)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  apigee-logger์™€ apigee-metrics๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œํ•  ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

imagePullSecrets.name ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

docker-registry ์œ ํ˜•์œผ๋กœ ๊ตฌ์„ฑ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€ ์ด๋ฆ„์ด๋ฉฐ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

k8sClusterName Deprecated: v1.2.0 ์ด์ƒ์—์„œ๋Š” k8sCluster.name ๋ฐ k8sCluster.region์„ ๋Œ€์‹  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” Kubernetes(K8S) ํ”„๋กœํด๋Ÿฌ์Šคํ„ฐ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. gcpProjectID(์ง€์› ์ค‘๋‹จ๋จ) ๋ฐ gcpRegion(์ง€์› ์ค‘๋‹จ๋จ)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  apigee-logger์™€ apigee-metrics๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œํ•  ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

kmsEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: defaults.org.kmsEncryptionKey

์„ ํƒ์‚ฌํ•ญ. kmsEncryptionKey, kmsEncryptionPath, kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”.

Apigee KMS ๋ฐ์ดํ„ฐ์˜ ์•”ํ˜ธํ™” ํ‚ค์— ๋Œ€ํ•œ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

kmsEncryptionPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์„ ํƒ์‚ฌํ•ญ. kmsEncryptionKey, kmsEncryptionPath, kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

kmsEncryptionSecret.key ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์„ ํƒ์‚ฌํ•ญ. kmsEncryptionKey, kmsEncryptionPath, kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ํ‚ค์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

kmsEncryptionSecret.name ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์„ ํƒ์‚ฌํ•ญ. kmsEncryptionKey, kmsEncryptionPath, kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

kvmEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: defaults.org.kmsEncryptionKey

์„ ํƒ์‚ฌํ•ญ. kvmEncryptionKey, kvmEncryptionPath, kvmEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Apigee KVM ๋ฐ์ดํ„ฐ์˜ ์•”ํ˜ธํ™” ํ‚ค์— ๋Œ€ํ•œ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

kvmEncryptionPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์„ ํƒ์‚ฌํ•ญ. kvmEncryptionKey, kvmEncryptionPath, kvmEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

kvmEncryptionSecret.key ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์„ ํƒ์‚ฌํ•ญ. kvmEncryptionKey, kvmEncryptionPath, kvmEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ํ‚ค์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

kvmEncryptionSecret.name ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์„ ํƒ์‚ฌํ•ญ. kvmEncryptionKey, kvmEncryptionPath, kvmEncryptionSecret ์ค‘ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

namespace ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: apigee

Apigee ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์„ค์น˜๋  Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

org

๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

ํ•„์ˆ˜

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์„ค์น˜ ์ค‘์— Apigee๊ฐ€ ํ”„๋กœ๋น„์ €๋‹ํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ง€์› ์กฐ์ง์ž…๋‹ˆ๋‹ค. ์กฐ์ง์€ Apigee์˜ ์ตœ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ชจ๋“  API ํ”„๋ก์‹œ ๋ฐ ๊ด€๋ จ ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์กฐ์ง ์ด๋ฆ„์„ ๋งŒ๋“  ํ›„์— ์กฐ์ง ์ด๋ฆ„์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

revision ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: v120

Apigee Hybrid๋Š” ์ˆœ์ฐจ์  Kubernetes ์—…๋ฐ์ดํŠธ๋ฅผ ์ง€์›ํ•˜๋ฏ€๋กœ pod ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋กœ ์ ์ง„์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋‹ค์šดํƒ€์ž„ ์—†์ด ๋ฐฐํฌ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Kubernetes PodTemplateSpec์„ ๋ณ€๊ฒฝํ•˜๋Š” ํŠน์ • YAML ์žฌ์ •์˜๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ revision ์žฌ์ •์˜ ์†์„ฑ๋„ ๊ณ ๊ฐ์˜ override.yaml์—์„œ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ Kubernetes ApigeeDeployment(AD) ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ด์ „ ๋ฒ„์ „์—์„œ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์ˆœ์ฐจ์  ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์†Œ๋ฌธ์ž ํ…์ŠคํŠธ ๊ฐ’(์˜ˆ: 'blue', 'a', '1.0.0')์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

revision ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜๊ณ  ์ ์šฉ๋˜๋ฉด ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ์— ์ˆœ์ฐจ์  ์—…๋ฐ์ดํŠธ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด revision์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ˆœ์ฐจ์  ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

validateServiceAccounts ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: true

์„œ๋น„์Šค ๊ณ„์ • ๊ถŒํ•œ์„ ์—„๊ฒฉํ•˜๊ฒŒ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. Cloud Resource Manager API ๋ฉ”์„œ๋“œ์ธ 'testIamPermissions'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ณต๋œ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Apigee ์กฐ์ง์˜ ์„œ๋น„์Šค ๊ณ„์ •์ธ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ID ํ™•์ธ์€ ์กฐ์ง์— ๋งคํ•‘๋œ ID์ž…๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉ ๋ฐ Logger์˜ ๊ฒฝ์šฐ ํ™•์ธ๋œ ํ”„๋กœ์ ํŠธ๋Š” 'gcpProjectID' override.yaml ๊ตฌ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

gcpProjectID๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

ao

Apigee Operators(AO)๋Š” ApigeeDeployment(AD)๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ•˜์œ„ ์ˆ˜์ค€ Kubernetes ๋ฐ Istio ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ฉ”์‹œ์ง€ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ถœ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ApigeeDeployment ๊ตฌ์„ฑ์„ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์œ ์ง€ํ•˜๊ธฐ ์ „์— ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” Apigee ์—ฐ์‚ฐ์ž ao ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
ao.image.pullPolicy ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ao.image.tag ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 1.2.0

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

ao.image.url ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-deployment-controller"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

ao.resources.limits.cpu ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 250m

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ CPU ํ•œ๋„์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

ao.resources.limits.memory ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 256Mi

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

ao.resources.requests.cpu ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 250m

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

ao.resources.requests.memory ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 256Mi

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

authz

๋‹ค์Œ ํ‘œ์—์„œ๋Š” authz ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
authz.image.pullPolicy ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

authz.image.tag ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1.2.0

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

authz.image.url ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-authn-authz"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

authz.livenessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 2

์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes๊ฐ€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์˜ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

authz.livenessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 0

ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

authz.livenessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 5

ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

authz.livenessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1

ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

authz.readinessProbe.failureThreshold ๋ฒ„์ „: ๋ฒ ํƒ€2

๊ธฐ๋ณธ๊ฐ’: 2

Kubernetes๊ฐ€ ํฌ๋“œ๋ฅผ unready๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

authz.readinessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 0

์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

authz.readinessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 5

์ค€๋น„ ํ”„๋กœ๋ธŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

authz.readinessProbe.successThreshold ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1

์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจ ํ›„ ์„ฑ๊ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ตœ์†Œ์˜ ์—ฐ์†์ ์ธ ์„ฑ๊ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

authz.readinessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1

ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

authz.resources.requests.cpu ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 50m

์ธ์ฆ ์š”์ฒญ์— ํ• ๋‹นํ•  CPU ๋ฆฌ์†Œ์Šค ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค.

authz.resources.requests.memory ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 128Mi

์ธ์ฆ ์š”์ฒญ์— ํ• ๋‹นํ•  ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค.

busyBoxInit(์ง€์› ์ค‘๋‹จ๋จ)

๋‹ค์Œ ํ‘œ์—์„œ๋Š” busyBoxInit ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
busyBoxInit.image.pullPolicy Deprecated.

๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

busyBoxInit.image.tag Deprecated.

๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "1.0.0"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

busyBoxInit.image.url Deprecated.

๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "busybox"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

cassandra

๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋Š” ๊ฒŒ์ดํŠธ์›จ์ด์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ, ๋ถ„์‚ฐ ํ• ๋‹น๋Ÿ‰ ์นด์šดํ„ฐ, API ํ‚ค, OAuth ํ† ํฐ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ Cassandra ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” cassandra ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
cassandra.auth.admin.password ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 'iloveapis123'

ํ•„์ˆ˜

Cassandra ๊ด€๋ฆฌ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋Š” Cassandra ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๋ชจ๋“  ๊ด€๋ฆฌ ํ™œ๋™์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

cassandra.auth.ddl.password ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 'iloveapis123'

ํ•„์ˆ˜

Cassandra ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด(DDL) ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ์ด๋Š” MART์—์„œ ํ‚ค ๊ณต๊ฐ„ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์ •์˜ ์ž‘์—…์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

cassandra.auth.default.password ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "iloveapis123"

ํ•„์ˆ˜

์ธ์ฆ์ด ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ์„ ๋•Œ ์ƒ์„ฑ๋œ ๊ธฐ๋ณธ Cassandra ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. Cassandra ์ธ์ฆ์„ ๊ตฌ์„ฑํ•  ๋•Œ ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Cassandra์šฉ TLS ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.auth.dml.password ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 'iloveapis123'

ํ•„์ˆ˜

Cassandra DML ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. DML ์‚ฌ์šฉ์ž๋Š” ํด๋ผ์ด์–ธํŠธ ํ†ต์‹ ์ด Cassandra์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

cassandra.auth.image.pullPolicy ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.auth.image.tag ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1.2.0

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

cassandra.auth.image.url ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-hybrid-cassandra-client"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

cassandra.backup.cloudProvider ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "GCP"

๋ฐฑ์—…์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ์Šคํ† ๋ฆฌ์ง€์˜ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด์ž…๋‹ˆ๋‹ค.

cassandra.backup.dbStorageBucket ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

๋ฐฑ์—…์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ๋ฐ์ดํ„ฐ์˜ Cloud Storage ๋ฒ„ํ‚ท์ž…๋‹ˆ๋‹ค.

cassandra.backup.enabled ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: false

๋ฐ์ดํ„ฐ ๋ฐฑ์—…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•˜์„ธ์š”.

Cassandra ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.backup.image.pullPolicy ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.backup.image.tag ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1.2.0

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

cassandra.backup.image.url ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-cassandra-backup-utility"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

cassandra.backup.schedule ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "0 2 * * *"

Chron ์ž‘์—…์˜ ์ผ์ •์ž…๋‹ˆ๋‹ค.

Cassandra ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.backup.serviceAccountPath ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

๋ฐฑ์—…์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ backup.serviceAccountPath ๋˜๋Š” backup.serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

cassandra.backup.serviceAccountSecretRef ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

๋ฐฑ์—…์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ backup.serviceAccountPath ๋˜๋Š” backup.serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

cassandra.clusterName ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "apigeecluster"

Cassandra ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra.datacenter ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "dc-1"

Cassandra ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra.dnsPolicy ๋ฒ„์ „: 1.1.1

๊ธฐ๋ณธ๊ฐ’: ClusterFirstWithHostNet

cassandra.hostNetwork๊ฐ€ true๋กœ ์„ค์ •๋˜๋ฉด Cassandra์—์„œ ์‚ฌ์šฉํ•  DNS ์ •์ฑ…์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. Anthos ๊ธฐ๋ฐ˜ ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ ClusterFirstWithHostNet์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

cassandra.hostNetwork์ด false๋กœ ์„ค์ •๋˜๋ฉด cassandra.dnsPolicy๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

cassandra.dnsPolicy์˜ ๊ฐ’์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Kubernetes ๋ฌธ์„œ์˜ pod์˜ DNS ์ •์ฑ…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.externalSeedHost ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

Cassandra ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋˜๋Š” IP์ž…๋‹ˆ๋‹ค. ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด Kubernetes ๋กœ์ปฌ ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

cassandra.heapNewSize ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 100M

์ตœ์‹  ๊ฐ์ฒด์— ํ• ๋‹น๋œ JVM ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค(๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„).

cassandra.hostNetwork ๋ฒ„์ „: 1.1.1

๊ธฐ๋ณธ๊ฐ’: Anthos ๋ฐฐํฌ์šฉ true Anthos ์™ธ ๋ฐฐํฌ์šฉ false

Anthos ๊ธฐ๋ฐ˜ ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra.hostNetwork๊ฐ€ true์ธ ๊ฒฝ์šฐ cassandra.dnsPolicy๊ฐ€ ClusterFirstWithHostNet์œผ๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

cassandra.image.pullPolicy ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.image.tag ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1.2.0

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

cassandra.image.url ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-hybrid-cassandra"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

cassandra.maxHeapSize ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 512M

Cassandra ์ž‘์—…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” JVM ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ƒํ•œ๊ฐ’์ž…๋‹ˆ๋‹ค(๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„).

cassandra.multiRegionSeedHost ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ƒˆ ๋ฆฌ์ „์œผ๋กœ ํ™•์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์กด Cassandra ํด๋Ÿฌ์Šคํ„ฐ์˜ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์‹œ๋“œ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.nodeSelector.key ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

ํ•„์ˆ˜

cassandra ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.nodeSelector.value ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

cassandra ๋ฐ์ดํ„ฐ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๊ณ  nodeSelector.apigeeData ์„ค์ •์„ ์žฌ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

nodeSelector๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.port ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 9042

Casandra์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.

cassandra.rack ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "ra-1"

Cassandra ๋…ธ๋“œ์˜ ๋ž™์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra.readinessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 2

Kubernetes๊ฐ€ ํฌ๋“œ๋ฅผ unready๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

cassandra.readinessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 0

์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

cassandra.readinessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 10

์ค€๋น„ ํ”„๋กœ๋ธŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

cassandra.readinessProbe.successThreshold ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1

์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจ ํ›„ ์„ฑ๊ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ตœ์†Œ์˜ ์—ฐ์†์ ์ธ ์„ฑ๊ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

cassandra.readinessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 5

ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

cassandra.replicaCount ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1

Cassandra๋Š” ๋ณต์ œ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค. ์ด ์†์„ฑ์€ StatefulSet๋กœ ์‚ฌ์šฉ๋˜๋Š” Cassandra ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra.resources.requests.cpu ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 500m

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

cassandra.resources.requests.memory ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1Gi

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

cassandra.restore.cloudProvider ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "GCP"

๋ณต์›์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

๋ฐฑ์—… ์Šคํ† ๋ฆฌ์ง€์˜ ํด๋ผ์šฐ๋“œ ์ œ๊ณต์—…์ฒด์ž…๋‹ˆ๋‹ค.

cassandra.restore.dbStorageBucket ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

๋ณต์›์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

๋ณต์›ํ•  ๋ฐฑ์—… ๋ฐ์ดํ„ฐ์˜ Cloud Storage ๋ฒ„ํ‚ท์ž…๋‹ˆ๋‹ค.

cassandra.restore.enabled ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: false

cassandra.restore.image.pullPolicy ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

cassandra.restore.image.tag ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1.2.0

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

cassandra.restore.image.url ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-cassandra-backup-utility"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

cassandra.restore.serviceAccountPath ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

๋ณต์›์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ restore.serviceAccountPath ๋˜๋Š” restore.serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

cassandra.restore.serviceAccountSecretRef ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

๋ณต์›์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ restore.serviceAccountPath ๋˜๋Š” restore.serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

cassandra.restore.snapshotTimestamp ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

๋ณต์›์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

๋ณต์›ํ•ด์•ผ ํ•˜๋Š” ๋ฐฑ์—…์˜ ํƒ€์ž„์Šคํƒฌํ”„์ž…๋‹ˆ๋‹ค.

cassandra.restore.user ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: ๊ด€๋ฆฌ์ž ๊ณ„์ •

์Šคํ‚ค๋งˆ ๋ฐฑ์—… ๋ณต์›์— ์‚ฌ์šฉ๋˜๋Š” Cassandra ์‚ฌ์šฉ์ž ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

cassandra.sslCertPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์‹œ์Šคํ…œ์˜ TLS ์ธ์ฆ์„œ ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

cassandra.sslKeyPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

์‹œ์Šคํ…œ์˜ TLS ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

cassandra.sslRootCAPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

๋ฃจํŠธ CA(์ธ์ฆ ๊ธฐ๊ด€)์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ์ฒด์ธ์ž…๋‹ˆ๋‹ค.

cassandra.storage.capacity ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 50Gi

storage.storageClass๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ ํ•„์ˆ˜

ํ•„์š”ํ•œ ๋””์Šคํฌ ํฌ๊ธฐ๋ฅผ ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra.storage.storageClass ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

์‚ฌ์šฉ ์ค‘์ธ ์˜จํ”„๋ ˜ ์Šคํ† ๋ฆฌ์ง€์˜ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

cassandra.terminationGracePeriodSeconds ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 300

ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

certmanager

cert-manager๋Š” Apigee์—์„œ ์‚ฌ์šฉํ•˜๋Š” Kubernetes ๊ตฌํ˜„์šฉ ์ธ์ฆ์„œ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค. cert-manager์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” certmanager ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
certmanager.image.tag ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "v0.12.0"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

certmanager.image.url ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "apigee-cert-manager-controller"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

certmanagercainjector

cert-manager CA ์ธ์ ํ„ฐ๋Š” CA ๋ฒˆ๋“ค์„ cert-manager ์›นํ›… ํ”„๋กœ์„ธ์Šค์— ์‚ฝ์ž…ํ•  ์ฑ…์ž„์ด ์žˆ๋Š” ์ธ์ฆ์„œ ๊ด€๋ฆฌ์ž ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. cert-manager ๋ฌธ์„œ์˜ CA ์ธ์ ํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” certmanagercainjector ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
certmanagercainjector.image.tag ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "v0.12.0"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

certmanagercainjector.image.url ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-cert-manager-cainjector"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

certmanagerwebhook

cert-manager ์›นํ›…์€ cert-manager ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋™์  ํ—ˆ์šฉ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. cert-manager ๋ฌธ์„œ์˜ ์›นํ›…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” certmanagerwebhook ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
certmanagerwebhook.image.tag ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "v0.12.0"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

certmanagerwebhook.image.url ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-cert-manager-webhook"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

connectAgent

Apigee Connect๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ธํ„ฐ๋„ท์— MART ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋…ธ์ถœํ•  ํ•„์š” ์—†์ด Apigee Hybrid ๊ด€๋ฆฌ ์˜์—ญ์„ ๋Ÿฐํƒ€์ž„ ์˜์—ญ์˜ MART ์„œ๋น„์Šค์— ์•ˆ์ „ํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Apigee Connect๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ ๋ณ„์นญ ๋ฐ ์Šน์ธ๋œ DNS ์ธ์ฆ์„œ๋กœ MART ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๊ตฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” connectAgent ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
connectAgent.enabled ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: false

์ด ์„ค์น˜๊ฐ€ mart์šฉ Istio ์ธ๊ทธ๋ ˆ์Šค ๋Œ€์‹  Apigee Connect๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‚˜์š”? true ๋˜๋Š” false.

Apigee Connect ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

connectAgent.server ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "apigeeconnect.googleapis.com:443"

์ด ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์„œ๋ฒ„ ๋ฐ ํฌํŠธ์˜ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

connectAgent.logLevel ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "INFO"

๋กœ๊ทธ ๋ณด๊ณ ์˜ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • INFO: ๊ฒฝ๊ณ , ์˜ค๋ฅ˜, ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ์™ธ์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…์— ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • WARNING: ์˜ค๋ฅ˜ ๋ฐ ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ์™ธ์— ์‹ฌ๊ฐํ•˜์ง€ ์•Š์€ ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค.
  • ERROR: ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜ ์™ธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š” ๋‚ด๋ถ€ ์˜ค๋ฅ˜ ๋ฐ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
  • FATAL: Apigee Connect์˜ ๋น„์ •์ƒ ์ข…๋ฃŒ๋ฅผ ์ดˆ๋ž˜ํ•˜๋Š” ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜ ๋ฐ ์ด๋ฒคํŠธ์ž…๋‹ˆ๋‹ค.
connectAgent.image.pullPolicy ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: IfNotPresent

kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

connectAgent.image.tag ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "1.2.0"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

connectAgent.image.url ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-connect-agent"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น URL์˜ values.yaml ํŒŒ์ผ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

connectAgent.replicaCountMax ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 5

์ž๋™ ํ™•์žฅ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

connectAgent.replicaCountMin ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 1

์ž๋™ ํ™•์žฅ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ๋‹จ๊ณ„์—์„œ๋Š” replicaCountCountMin์„ 3์œผ๋กœ ๋Š˜๋ ค์„œ ์•ˆ์ •์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์œ„ํ•œ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

connectAgent.resources.requests.cpu ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 100m

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

connectAgent.resources.requests.memory ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 30Mi

Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

connectAgent.targetCPUUtilizationPercentage ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 75

pod์—์„œ Apigee Connect ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ ๋Œ€์ƒ CPU ์‚ฌ์šฉ๋ฅ ์ž…๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์˜ ๊ฐ’์€ CPU ์‚ฌ์šฉ๋ฅ ์ด ์ด ๊ฐ’(์ตœ๋Œ€ replicaCountMax)์— ๋„๋‹ฌํ•  ๋•Œ Apigee Connect๊ฐ€ ์ž๋™ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

connectAgent.terminationGracePeriodSeconds ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: 600

ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

defaults

Apigee Hybrid ์„ค์น˜์˜ ๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” defaults ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
defaults.org.kmsEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "aWxvdmVhcGlzMTIzNDU2Nw=="

KMS์˜ ์กฐ์ง์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค์ž…๋‹ˆ๋‹ค.

defaults.org.kvmEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "aWxvdmVhcGlzMTIzNDU2Nw=="

KVM์˜ ์กฐ์ง์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค์ž…๋‹ˆ๋‹ค.

defaults.env.kmsEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "aWxvdmVhcGlzMTIzNDU2Nw=="

KMS์˜ ํ™˜๊ฒฝ(env)์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค์ž…๋‹ˆ๋‹ค.

defaults.env.kvmEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "aWxvdmVhcGlzMTIzNDU2Nw=="

KVM์˜ ํ™˜๊ฒฝ(env)์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค์ž…๋‹ˆ๋‹ค.

defaults.env.cacheEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: "aWxvdmVhcGlzMTIzNDU2Nw=="

ํ™˜๊ฒฝ(env)์˜ ๊ธฐ๋ณธ ์บ์‹œ ์•”ํ˜ธํ™” ํ‚ค์ž…๋‹ˆ๋‹ค.

envs

API ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๋ฐฐ์—ด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ™˜๊ฒฝ์€ API ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฉ๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ ๋˜๋Š” '์ƒŒ๋“œ๋ฐ•์Šค'๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ง€์› ์กฐ์ง์—๋Š” ํ™˜๊ฒฝ์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” envs ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
envs[].cacheEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

cacheEncryptionKey, cacheEncryptionPath ๋˜๋Š” cacheEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

envs[].cacheEncryptionPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

cacheEncryptionKey, cacheEncryptionPath ๋˜๋Š” cacheEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

envs[].cacheEncryptionSecret.key ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

cacheEncryptionKey, cacheEncryptionPath ๋˜๋Š” cacheEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ํ‚ค์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

envs[].cacheEncryptionSecret.name ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

cacheEncryptionKey, cacheEncryptionPath, cacheEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

envs[].hostAlias ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

์ง€์› ์ค‘๋‹จ๋จ: hostAliases[]๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์„ธ์š”.

envs[].hostAliases[] ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

ํ™˜๊ฒฝ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜ธ์ŠคํŠธ ๋ณ„์นญ์ž…๋‹ˆ๋‹ค. ๊ฐ ํ˜ธ์ŠคํŠธ ๋ณ„์นญ์€ ์ •๊ทœํ™”๋œ ๋„๋ฉ”์ธ ์ด๋ฆ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

envs[].httpProxy.host ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

HTTP ํ”„๋ก์‹œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

httpProxy ์†์„ฑ์„ scheme, host, port์˜ ์ˆœ์„œ๋กœ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

envs:
  - name: test
    httpProxy:
      scheme: HTTP
      host: 10.12.0.47
      port: 3128
      ...

์ฐธ๊ณ : API ํ”„๋ก์‹œ์˜ ์ „๋‹ฌ ํ”„๋ก์‹œ ๊ตฌ์„ฑ

envs[].httpProxy.port ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

HTTP ํ”„๋ก์‹œ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์†์„ฑ์„ ์ƒ๋žตํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ HTTP์—๋Š” ํฌํŠธ 80์„, HTTPS์—๋Š” ํฌํŠธ 443์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

envs[].httpProxy.scheme ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

HTTP ํ”„๋ก์‹œ์˜ ์œ ํ˜•์„ HTTP ๋˜๋Š” HTTPS๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ 'HTTP'๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

envs[].httpProxy.username ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

HTTP ํ”„๋ก์‹œ์— ๊ธฐ๋ณธ ์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

envs[].httpProxy.password ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

HTTP ํ”„๋ก์‹œ์— ๊ธฐ๋ณธ ์ธ์ฆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

envs[].kmsEncryptionKey ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

kmsEncryptionKey, kmsEncryptionPath ๋˜๋Š” kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

Apigee KMS ๋ฐ์ดํ„ฐ์˜ ์•”ํ˜ธํ™” ํ‚ค์— ๋Œ€ํ•œ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

envs[].kmsEncryptionPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

kmsEncryptionKey, kmsEncryptionPath ๋˜๋Š” kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

envs[].kmsEncryptionSecret.key ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

kmsEncryptionKey, kmsEncryptionPath, kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ํ‚ค์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

envs[].kmsEncryptionSecret.name ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

kmsEncryptionKey, kmsEncryptionPath ๋˜๋Š” kmsEncryptionSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

envs[].name ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

ํ•„์ˆ˜

๋™๊ธฐํ™”ํ•  Apigee ํ™˜๊ฒฝ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

envs[].pollInterval ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

์กฐ์ง ๋ฐ ํ™˜๊ฒฝ ๋™๊ธฐํ™” ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํด๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๊ฒฉ(์ดˆ)์ž…๋‹ˆ๋‹ค.

envs[].port ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: None

HTTPS ํŠธ๋ž˜ํ”ฝ์˜ TCP ํฌํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.

envs[].serviceAccountPaths.synchronizer ๋ฒ„์ „: GA

๊ธฐ๋ณธ๊ฐ’: None

Apigee ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ๋กœ์ปฌ ์‹œ์Šคํ…œ ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

envs[].serviceAccountPaths.udca ๋ฒ„์ „: GA

๊ธฐ๋ณธ๊ฐ’: None

Apigee ์• ๋„๋ฆฌํ‹ฑ์Šค ์—์ด์ „ํŠธ ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์˜ ๋กœ์ปฌ ์‹œ์Šคํ…œ ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

envs[].serviceAccountSecretRefs.synchronizer ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. Apigee ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

envs[].serviceAccountSecretRefs.udca ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. Apigee Analytic Agent ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

envs[].sslCertPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์˜ TLS ์ธ์ฆ์„œ ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

envs[].sslKeyPath ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์˜ TLS ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

envs[].sslSecret ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

TLS ์ธ์ฆ์„œ์™€ ๋น„๊ณต๊ฐœ ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์— ์ €์žฅ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. TLS ์ธ์ฆ์„œ์™€ ํ‚ค ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ:

gcp

apigee-logger์™€ apigee-metrics๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œํ•˜๋Š” GCP ํ”„๋กœ์ ํŠธ ID ๋ฐ ๋ฆฌ์ „์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” gcp ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
gcp.region ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

ํ•„์ˆ˜

apigee-logger์™€ apigee-metrics๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œํ•˜๋Š” GCP ๋ฆฌ์ „์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

gcp.projectID ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

ํ•„์ˆ˜

apigee-logger์™€ apigee-metrics๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘ธ์‹œํ•˜๋Š” Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

gcp.projectIDRuntime ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: None

๋Ÿฐํƒ€์ž„ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

projectIDRuntime ์†์„ฑ์€ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ projectID ๊ฐ’์ด Apigee ์กฐ์ง์˜ GCP ํ”„๋กœ์ ํŠธ์™€ ๋Ÿฐํƒ€์ž„ K8S ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

httpProxy

httpProxy๋Š” HTTP ์ „๋‹ฌ ํ”„๋ก์‹œ ์„œ๋ฒ„์˜ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. overrides.yaml๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ MART, ๋™๊ธฐํ™” ๋‹ด๋‹น์ž, UDCA ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ธํ„ฐ๋„ท ํ†ต์‹ ์ด ํ”„๋ก์‹œ ์„œ๋ฒ„๋ฅผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.

MART, ๋™๊ธฐํ™” ๋‹ด๋‹น์ž, UDCA๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” httpProxy ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
httpProxy.host ๋ฒ„์ „: 1.1.1

๊ธฐ๋ณธ๊ฐ’: None

HTTP ํ”„๋ก์‹œ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

httpProxy.port ๋ฒ„์ „: 1.1.1

๊ธฐ๋ณธ๊ฐ’: None

HTTP ํ”„๋ก์‹œ์˜ ํฌํŠธ์ž…๋‹ˆ๋‹ค.

httpProxy.scheme ๋ฒ„์ „: 1.1.1

๊ธฐ๋ณธ๊ฐ’: HTTPS

ํ”„๋ก์‹œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šคํ‚ค๋งˆ์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ HTTP ๋˜๋Š” HTTPS์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์€ ๋Œ€๋ฌธ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ingress

์ธ๊ทธ๋ ˆ์Šค๋Š” Istio ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด์˜ ์ธ์Šคํ„ด์Šคํ™”์ž…๋‹ˆ๋‹ค. ์ธ๊ทธ๋ ˆ์Šค๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์— ๋…ธ์ถœํ•ด์•ผ ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ์„ค์น˜๋Š” ๋‹ค์Œ ๋‘ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•œ ์ธ๊ทธ๋ ˆ์Šค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ๋Ÿฐํƒ€์ž„
  • MART

๊ด€๋ จ ์ฃผ์ œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ingress ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
ingress.enableAccesslog ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: false

์ธ๊ทธ๋ ˆ์Šค ์•ก์„ธ์Šค ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ • ๋˜๋Š” ์‚ฌ์šฉ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์ค‘์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ingress.envoyHeaders.headers ๋ฒ„์ „: 1.0.0
๊ธฐ๋ณธ๊ฐ’:
"x-envoy-decorator-operation"
"x-envoy-expected-rq-timeout-ms"
"x-envoy-external-address"
"x-istio-attributes"

์—†์Œ

Envoy ํ—ค๋” ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

ingress.envoyHeaders.preserved ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: false

Envoy์˜ ํ—ค๋”๋ฅผ ๋ณด์กดํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ณด์กด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ingress.httpsRedirect ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: true

๋ชจ๋“  ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ์ž๋™ HTTPS ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

ingress.mart.loadBalancerIP ๋ฒ„์ „: 1.1.1

๊ธฐ๋ณธ๊ฐ’: 10.0.10.252

MART ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์˜ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

ingress.minTLSProtocolVersion ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: minTLSProtocolVersion ๋˜๋Š” maxTLSProtocolVersion๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ธ๊ทธ๋ ˆ์Šค๋Š” Envoy ํ”„๋ก์‹œ ๋ฌธ์„œ์˜ ์ผ๋ฐ˜์ ์ธ TLS ๊ตฌ์„ฑ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๊ธฐ๋ณธ TLS_AUTO๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ธ๊ทธ๋ ˆ์Šค์˜ ์ตœ์†Œ TLS ๋ฒ„์ „์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ 1.0, 1.1, 1.2, 1.3์ž…๋‹ˆ๋‹ค.

ingress.maxTLSProtocolVersion ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: minTLSProtocolVersion ๋˜๋Š” maxTLSProtocolVersion๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ธ๊ทธ๋ ˆ์Šค๋Š” Envoy ํ”„๋ก์‹œ ๋ฌธ์„œ์˜ ์ผ๋ฐ˜์ ์ธ TLS ๊ตฌ์„ฑ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๊ธฐ๋ณธ TLS_AUTO๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ธ๊ทธ๋ ˆ์Šค์˜ ์ตœ๋Œ€ TLS ๋ฒ„์ „์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ 1.0, 1.1, 1.2, 1.3์ž…๋‹ˆ๋‹ค.

ingress.runtime.loadBalancerIP ๋ฒ„์ „: 1.1.1

๊ธฐ๋ณธ๊ฐ’: 10.0.10.251

Apigee ๋Ÿฐํƒ€์ž„ ๊ฐ์ฒด์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

ingress.serviceType ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: LoadBalancer

์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์„ ๋‚ด๋ถ€ ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์„œ๋น„์Šค ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ClusterIP(์ง€์›๋˜์ง€ ์•Š์Œ)
  • LoadBalancer
  • NodePort

istio

Google Cloud Platform(GCP)์˜ Istio ๊ตฌํ˜„์€ ๊ธฐ์กด Apigee ์ธ์Šคํ„ด์Šค์— ๊ณ„์ธตํ™”๋˜์–ด ๋กœ๊น… ํ”Œ๋žซํผ, ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ, ์ •์ฑ… ์‹œ์Šคํ…œ๊ณผ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์„œ๋น„์Šค ๋ฉ”์‹œ์ž…๋‹ˆ๋‹ค.

GCP์˜ Istio ๋ฌธ์„œ ๋ฐ Istio๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” istio ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช…
istio.citadel.image.url ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-citadel"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

istio.galley.image.url ๋ฒ„์ „: 1.2.0

๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-galley"

์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

istio.ingressgateway.replicaCountMax ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 5

ํ•„์ˆ˜

ํ—ˆ์šฉ๋˜๋Š” Istio ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋ณต์ œ๋ณธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

istio.ingressgateway.replicaCountMin ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 1

ํ•„์ˆ˜

ํ•„์š”ํ•œ Istio ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋ณต์ œ๋ณธ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

istio.ingressgateway.resources.requests.cpu ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 100m

ํ•„์ˆ˜

์ธ๊ทธ๋ ˆ์Šค ์ปจํŠธ๋กค๋Ÿฌ์— ํ• ๋‹น๋œ CPU ๋ฆฌ์†Œ์Šค๋กœ, ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ตœ์ ์˜ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

istio.ingressgateway.resources.requests.memory ๋ฒ„์ „: 1.0.0

๊ธฐ๋ณธ๊ฐ’: 128Mi

์ธ๊ทธ๋ ˆ์Šค ์ปจํŠธ๋กค๋Ÿฌ์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋กœ, ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ตœ์ ์˜ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ๊ทธ๋ ˆ์Šค ๊ฐ์ฒด
  • Istio ๋ฌธ์„œ์˜ ์ธ๊ทธ๋ ˆ์Šค ๊ฒŒ์ดํŠธ์›จ์ด
  • Kubernetes ๋ฌธ์„œ์˜ ์ธ๊ทธ๋ ˆ์Šค ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • istio.kubectl.image.url ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-kubectl"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    istio.mixer.image.url ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-mixer"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    istio.node_agent_k8s.image.url ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-node-agent-k8s"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    istio.nodeSelector.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    istio ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค. mart.nodeselector์˜ ํ‚ค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด istio ์„œ๋น„์Šค์—์„œ nodeSelector ๊ฐ์ฒด์— ์ง€์ •๋œ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    istio.nodeSelector.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    istio ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค. nodeSelector ๊ฐ์ฒด๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

    istio.pilot.image.url ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-pilot"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    istio.pilot.replicaCountMax ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ํ•„์ˆ˜

    envoy ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ์™€ ํ†ต์‹ ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ pilot ํ•ต์‹ฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ์ž…๋‹ˆ๋‹ค. replicaCountMax๋Š” ํ—ˆ์šฉ๋˜๋Š” Istio ํŒŒ์ผ๋Ÿฟ ๋ณต์ œ๋ณธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค.

    Istio ๋ฌธ์„œ์˜ ํŒŒ์ผ๋Ÿฟ: ํ•ต์‹ฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ์ฐธ์กฐ

    istio.pilot.replicaCountMin ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ•„์ˆ˜

    envoy ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ์™€ ํ†ต์‹ ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ pilot ํ•ต์‹ฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ์ž…๋‹ˆ๋‹ค. replicaCountMax๋Š” ํ•„์š”ํ•œ Istio ํŒŒ์ผ๋Ÿฟ ๋ณต์ œ๋ณธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค.

    Istio ๋ฌธ์„œ์˜ ํŒŒ์ผ๋Ÿฟ: ํ•ต์‹ฌ ํŠธ๋ž˜ํ”ฝ ๊ด€๋ฆฌ ์ฐธ์กฐ

    istio.pilot.resources.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 500m

    ํ•„์ˆ˜

    ํŒŒ์ผ๋Ÿฟ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ CPU ๋ฆฌ์†Œ์Šค๋กœ, ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ตœ์ ์˜ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    istio.pilot.resources.requests.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2048Mi

    ํŒŒ์ผ๋Ÿฟ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋กœ, ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ตœ์ ์˜ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    istio.proxyv2.image.url ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-proxyv2"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    istio.sidecar_injector.image.url ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-istio-sidecar-injector"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    istio.version ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: 1.4.6

    ์ด Apigee ๊ตฌํ˜„์— ์‚ฌ์šฉํ•  Istio ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

    ์ฐธ๊ณ : GitHub์—์„œ Istio ์ถœ์‹œ

    k8sCluster

    ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„์ด ์„ค์น˜๋œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” k8sCluster ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    k8sCluster.name ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„์ด ์„ค์น˜๋œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    k8sCluster.region ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ƒ์„ฑ๋œ GCP ๋ฆฌ์ „์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

    kubeRBACProxy

    Apigee๊ฐ€ Kubernetes ์—ญํ•  ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์ฐพ์„ ์œ„์น˜๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” kubeRBACProxy ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    kubeRBACProxy.image.pullPolicy ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    kubeRBACProxy.image.tag ๋ฒ„์ „: "v0.4.1"

    ๊ธฐ๋ณธ๊ฐ’: 1.2.0

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    kubeRBACProxy.image.url ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-kube-rbac-proxy"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    Google Docker Hub๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  Docker ์ด๋ฏธ์ง€๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ํ˜ธ์ŠคํŒ…๋˜๋Š” ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    logger

    ์šด์˜ ๋กœ๊ทธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  Apigee Hybrid ์„œ๋น„์Šค๊ฐ€ ์ด ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ Logging์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” logger ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    logger.enabled ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: true

    ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋น„GKE์ธ ๊ฒฝ์šฐ true๋กœ ์„ค์ •ํ•˜๊ณ , Anthos ๋˜๋Š” GKE์˜ ๊ฒฝ์šฐ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    logger.fluentd.buffer_chunk_limit ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 512k

    ํ—ˆ์šฉ๋˜๋Š” ๋ฒ„ํผ ์ฒญํฌ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค(ํ‚ฌ๋กœ๋ฐ”์ดํŠธ ๋‹จ์œ„). ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ฒญํฌ๋Š” ์ถœ๋ ฅ ํ์— ์ž๋™์œผ๋กœ ํ”Œ๋Ÿฌ์‹œ๋ฉ๋‹ˆ๋‹ค.

    logger.fluentd.buffer_queue_limit ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 6

    ์ถœ๋ ฅ ํ์˜ ์ตœ๋Œ€ ๊ธธ์ด์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ œํ•œ์€ 256 ์ฒญํฌ์ž…๋‹ˆ๋‹ค.

    logger.fluentd.flush_interval ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5s

    ๋‹ค์Œ ๋ฒ„ํผ ํ”Œ๋Ÿฌ์‹œ๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ๋Œ€๊ธฐํ•˜๋Š” ๊ฐ„๊ฒฉ(์ดˆ)์ž…๋‹ˆ๋‹ค.

    logger.fluentd.max_retry_wait ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 30

    ์“ฐ๊ธฐ ์žฌ์‹œ๋„ ์‚ฌ์ด์˜ ์ตœ๋Œ€ ๊ฐ„๊ฒฉ(์ดˆ)์ž…๋‹ˆ๋‹ค.

    logger.fluentd.num_threads ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    ๋ฒ„ํผ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์Šค๋ ˆ๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    logger.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    logger.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "1.6.8"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    logger.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-stackdriver-logging-agent"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    logger.livenessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 3

    ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes๊ฐ€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์˜ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    logger.livenessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 0

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    logger.livenessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 60

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    logger.livenessProbe.successThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจ ํ›„ ์„ฑ๊ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ตœ์†Œ ์—ฐ์†์ ์ธ ์„ฑ๊ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    logger.livenessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    logger.nodeSelector.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "apigee.com/apigee-logger-enabled"

    ํ•„์ˆ˜

    logger ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    logger.nodeSelector.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "true"

    ํ•„์ˆ˜

    logger ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    logger.proxyURL ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ๊ณ ๊ฐ ํ”„๋ก์‹œ ์„œ๋ฒ„์˜ URL์ž…๋‹ˆ๋‹ค.

    logger.resources.limits.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 500Mi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

    logger.resources.limits.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 200m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ CPU ํ•œ๋„์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    logger.resources.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 100m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    logger.resources.requests.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 250Mi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

    logger.serviceAccountPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    ๋กœ๊ทธ ์ž‘์„ฑ์ž ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    logger.serviceAccountSecretRef ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ ์ž‘์„ฑ์ž ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    logger.terminationGracePeriodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 30

    ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    mart

    KMS(API ํ‚ค ๋ฐ OAuth ํ† ํฐ), KVM, ํ• ๋‹น๋Ÿ‰, API ์ œํ’ˆ๊ณผ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต๊ฐœ Apigee API์˜ API ์ œ๊ณต์—…์ฒด ์—ญํ• ์„ ํ•˜๋Š” MART(๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ์šฉ Management API) ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” mart ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    mart.hostAlias ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    MART ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜ธ์ŠคํŠธ ๋ณ„์นญ์ž…๋‹ˆ๋‹ค. ์ด ์†์„ฑ์„ * ๋˜๋Š” ์ •๊ทœํ™”๋œ ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    mart.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    mart.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1.2.0

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    mart.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-mart-server"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ํŠน์ • URL์˜ values.yaml ํŒŒ์ผ์„ ํ™•์ธํ•˜์„ธ์š”. ์ด ํŒŒ์ผ์€ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    mart.initCheckCF.resources.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 10m

    Cloud Foundry ํ”„๋กœ์„ธ์Šค์˜ ์ดˆ๊ธฐํ™” ํ™•์ธ์— ํ• ๋‹น๋œ CPU ๋ฆฌ์†Œ์Šค์˜ ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค.

    mart.livenessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 12

    ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes๊ฐ€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์˜ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    mart.livenessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 15

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    mart.livenessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    mart.livenessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    mart.metricsURL ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "/v1/server/metrics"

    mart.nodeSelector.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    mart ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค. mart.nodeselector์˜ ํ‚ค๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋Ÿฐํƒ€์ž„์€ nodeSelector ๊ฐ์ฒด์— ์ง€์ •๋œ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    mart.nodeSelector.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    mart ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค. nodeSelector ๊ฐ์ฒด๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    mart.readinessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    Kubernetes๊ฐ€ ํฌ๋“œ๋ฅผ unready๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    mart.readinessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 15

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    mart.readinessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    mart.readinessProbe.successThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจ ํ›„ ์„ฑ๊ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ตœ์†Œ์˜ ์—ฐ์†์ ์ธ ์„ฑ๊ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    mart.readinessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    mart.replicaCountMax ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ์ž๋™ ํ™•์žฅ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    mart.replicaCountMin ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ์ž๋™ ํ™•์žฅ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    mart.resources.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 500m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    mart.resources.requests.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 512Mi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

    mart.serviceAccountPath ๋ฒ„์ „: 1.1.1

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    ์—ญํ• ์ด ์—†๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    mart.serviceAccountSecretRef ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์—ญํ•  ์—†์Œ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    mart.sslCertPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    SSL ์ธ์ฆ์„œ๋ฅผ ๋ณด์•ˆ ๋น„๋ฐ€์— ๋กœ๋“œํ•˜๊ณ  ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    mart.sslKeyPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    SSL ํ‚ค๋ฅผ ๋ณด์•ˆ ๋น„๋ฐ€์— ๋กœ๋“œํ•˜๊ณ  ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    mart.sslSecret ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    TLS ์ธ์ฆ์„œ์™€ ๋น„๊ณต๊ฐœ ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์— ์ €์žฅ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. TLS ์ธ์ฆ์„œ์™€ ํ‚ค ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ์กฐ:

    mart.targetCPUUtilizationPercentage ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 75

    ํฌ๋“œ์˜ MART ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋Œ€์ƒ CPU ์‚ฌ์šฉ๋ฅ ์ž…๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋ฅ ์ด replicaCountMax ๊ฐ’์— ๋„๋‹ฌํ•˜๋ฉด ์ด ํ•„๋“œ์˜ ๊ฐ’์€ MART๊ฐ€ ์ž๋™ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    mart.terminationGracePeriodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 30

    ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    metrics

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

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ธก์ •ํ•ญ๋ชฉ ์ปฌ๋ ‰์…˜ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” metrics ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    metrics.enabled ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: false

    Apigee ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    metrics.nodeSelector.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    metrics ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    metrics.nodeSelector.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    metrics ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    metrics.prometheus.args.storage_tsdb_retention ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 48h

    Prometheus๊ฐ€ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์—์„œ ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„(์‹œ๊ฐ„ ๋‹จ์œ„)์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.containerPort ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 9090

    Prometheus ์ธก์ •ํ•ญ๋ชฉ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ํฌํŠธ์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    metrics.prometheus.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "v2.9.2"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-prom-prometheus"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.livenessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 6

    ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes๊ฐ€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์˜ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.livenessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.livenessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 3

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.readinessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 120

    Kubernetes๊ฐ€ ํฌ๋“œ๋ฅผ unready๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.readinessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    metrics.prometheus.readinessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 3

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    prometheus.sslCertPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    Prometheus ์ธก์ •ํ•ญ๋ชฉ ์ˆ˜์ง‘ ํ”„๋กœ์„ธ์Šค์˜ SSL ์ธ์ฆ์„œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. Prometheus๋Š” Apigee๊ฐ€ ์ธก์ •ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

    ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    prometheus.sslKeyPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    Prometheus ์ธก์ •ํ•ญ๋ชฉ ์ˆ˜์ง‘ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ SSL ํ‚ค ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. Prometheus๋Š” Apigee๊ฐ€ ์ธก์ •ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

    ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    metrics.proxyURL ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ธก์ •ํ•ญ๋ชฉ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ์˜ URL์ž…๋‹ˆ๋‹ค.

    metrics.resources.limits.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 250m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ CPU ํ•œ๋„์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    metrics.resources.limits.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 256Mi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

    metrics.resources.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 250m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    metrics.resources.requests.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 256Mi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

    metrics.sdSidecar.containerPort ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 9091

    StackDriver ์ธก์ •ํ•ญ๋ชฉ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ํฌํŠธ์ž…๋‹ˆ๋‹ค.

    metrics.sdSidecar.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    Kubelet์—์„œ ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ •์ฑ…์ด ์ด๋ฏธ ์žˆ๋”๋ผ๋„ ํ•ญ์ƒ ์ •์ฑ…์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

      ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    metrics.sdSidecar.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "release-0.4.0"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    metrics.sdSidecar.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-stackdriver-prometheus-sidecar"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    metrics.serviceAccountPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Monitoring ์ธก์ •ํ•ญ๋ชฉ ์ž‘์„ฑ์ž ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    metrics.serviceAccountSecretRef ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. Monitoring ์ธก์ •ํ•ญ๋ชฉ ์ž‘์„ฑ์ž ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    metrics.terminationGracePeriodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 300

    ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    nodeSelector

    nodeSelector ๊ฐ์ฒด๋Š” Apigee ์ธ์Šคํ„ด์Šค์˜ ๋…ธ๋“œ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. apigeectl์ด ์‹คํ–‰๋˜๋ฉด ์ด๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ apigeeRuntime ๋ฐ apigeeData์˜ ๋ผ๋ฒจ ํ‚ค-๊ฐ’์ด ๊ฐœ๋ณ„ Istio ๋ฐ MART ๊ตฌ์„ฑ์š”์†Œ์— ๋งคํ•‘๋˜๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. istio:nodeSelector ๋ฐ mart:nodeSelector ์†์„ฑ์—์„œ ๊ฐœ๋ณ„ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ด๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” nodeSelector ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    nodeSelector.apigeeData.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 'cloud.google.com/gke-nodepool'

    ApigeeData๋Š” Cassandra ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. Apigee ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    nodeSelector.apigeeData.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 'apigee-data'

    apigee-data๋Š” Cassandra ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. Apigee ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    nodeSelector.apigeeRuntime.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 'cloud.google.com/gke-nodepool'

    Apigee ๋Ÿฐํƒ€์ž„์€ ํ”„๋กœ์ ํŠธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. Apigee ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    nodeSelector.apigeeRuntime.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 'apigee-runtime'

    apigee-runtime์€ ํ”„๋กœ์ ํŠธ์˜ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์˜ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. Apigee ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    nodeSelector.requiredForScheduling ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: false

    requiredForScheduling ์†์„ฑ์˜ ๊ธฐ๋ณธ๊ฐ’์€ false์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์ด true๋กœ ์žฌ์ •์˜๋˜๋ฉด, Kubernetes๊ฐ€ ๋ผ๋ฒจ ํ‚ค/๊ฐ’์ด ๊ตฌ์„ฑ๋œ ๋…ธ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ pod๊ฐ€ VM ์›Œ์ปค ๋…ธ๋“œ์—์„œ ์˜ˆ์•ฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ํ”„๋กœ๋•์…˜์˜ ๊ฒฝ์šฐ nodeSelector.requiredForScheduling์€ true๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    runtime

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” runtime ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    runtime.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    runtime.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1.2.0

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    runtime.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค์น˜์˜ ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ URL"google/apigee-runtime"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    runtime.livenessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes๊ฐ€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์˜ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    runtime.livenessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 60

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    runtime.livenessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    runtime.livenessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    runtime.nodeSelector.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    runtime ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

    nodeSelector ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    runtime.nodeSelector.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    runtime ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    runtime.readinessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    Kubernetes๊ฐ€ ํฌ๋“œ๋ฅผ unready๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    runtime.readinessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 60

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    runtime.readinessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    runtime.readinessProbe.successThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจ ํ›„ ์„ฑ๊ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ตœ์†Œ์˜ ์—ฐ์†์ ์ธ ์„ฑ๊ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    runtime.readinessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    runtime.replicaCountMax ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 4

    ์ž๋™ ํ™•์žฅ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    runtime.replicaCountMin ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ์ž๋™ ํ™•์žฅ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Œ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    runtime.resources.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 500m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    runtime.resources.requests.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 512Mi(์•„๋ž˜ ์ฐธ๊ณ  ์ฐธ์กฐ)

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„(Mi) ๋˜๋Š” ๊ธฐ๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„(Gi)).

    runtime.service.type ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: ClusterIP

    ์„œ๋น„์Šค ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ClusterIP๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด LoadBalancer์ž…๋‹ˆ๋‹ค.

    runtime.targetCPUUtilizationPercentage ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 75

    ํฌ๋“œ์˜ ๋Ÿฐํƒ€์ž„ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋Œ€์ƒ CPU ์‚ฌ์šฉ๋ฅ ์ž…๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋ฅ ์ด replicaCountMax ๊ฐ’์— ๋„๋‹ฌํ•˜๋ฉด ์ด ํ•„๋“œ์˜ ๊ฐ’์€ ๋Ÿฐํƒ€์ž„์ด ์ž๋™ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    runtime.terminationGracePeriodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 180

    ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    synchronizer

    ๋ฉ”์‹œ์ง€ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ตœ๊ทผ ๋ฐฐํฌ๋œ API ํ”„๋ก์‹œ ๋ฒˆ๋“ค๊ณผ ํ•จ๊ป˜ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๊ฐ€ ๊ด€๋ฆฌ ์˜์—ญ์„ ํด๋งํ•˜๋ฉฐ, ์ƒˆ ๊ณ„์•ฝ์ด ๊ฐ์ง€๋˜๋ฉด ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๋Š” ์ด๋ฅผ ๋Ÿฐํƒ€์ž„ ์˜์—ญ์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” synchronizer ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    synchronizer.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    synchronizer.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1.2.0

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    synchronizer.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-synchronizer"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    synchronizer.livenessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes๊ฐ€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์˜ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    synchronizer.livenessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 0

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    synchronizer.livenessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    synchronizer.livenessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    synchronizer.nodeSelector.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    synchronizer ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

    nodeSelector๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    synchronizer.nodeSelector.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    synchronizer ์„œ๋น„์Šค์˜ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ์„ ํƒ์  ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    nodeSelector๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    synchronizer.pollInterval ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 60

    ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๊ฐ€ ํด๋ง ์ž‘์—… ์‚ฌ์ด์— ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๋Š” Apigee ์ œ์–ด ์˜์—ญ ์„œ๋น„์Šค๋ฅผ ํด๋งํ•˜์—ฌ ์ƒˆ ๋Ÿฐํƒ€์ž„ ๊ณ„์•ฝ์„ ๊ฐ์ง€ํ•˜๊ณ  ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    synchronizer.readinessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    Kubernetes๊ฐ€ ํฌ๋“œ๋ฅผ unready๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    synchronizer.readinessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 0

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    synchronizer.readinessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    synchronizer.readinessProbe.successThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ์ค€๋น„ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹คํŒจ ํ›„ ์„ฑ๊ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ์ตœ์†Œ์˜ ์—ฐ์†์ ์ธ ์„ฑ๊ณต์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    synchronizer.readinessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    synchronizer.replicaCount ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    ์ž๋™ ํ™•์žฅ์˜ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    synchronizer.replicaCountMax ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: 4

    ์ž๋™ ํ™•์žฅ์˜ ์ตœ๋Œ€ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    synchronizer.replicaCountMin ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ์ž๋™ ํ™•์žฅ์˜ ์ตœ์†Œ ๋ณต์ œ๋ณธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    synchronizer.resources.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 100m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    synchronizer.resources.requests.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1Gi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ๋‹จ์œ„).

    synchronizer.serviceAccountPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Apigee ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    synchronizer.serviceAccountSecretRef ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. Apigee ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ด€๋ฆฌ์ž ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    synchronizer.targetCPUUtilizationPercentage ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 75

    ํฌ๋“œ์˜ ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋Œ€์ƒ CPU ์‚ฌ์šฉ๋ฅ ์ž…๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋ฅ ์ด replicaCountMax ๊ฐ’์— ๋„๋‹ฌํ•˜๋ฉด ์ด ํ•„๋“œ์˜ ๊ฐ’์€ ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๊ฐ€ ์ž๋™ ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

    synchronizer.terminationGracePeriodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 30

    ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    udca

    (๋ฒ”์šฉ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์—์ด์ „ํŠธ) ๋Ÿฐํƒ€์ž„ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํฌ๋“œ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค๋Š” ๋ถ„์„ ๋ฐ ๋ฐฐํฌ ์ƒํƒœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ํ†ตํ•ฉ ๋ถ„์„ ํ”Œ๋žซํผ(UAP)์œผ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ถ„์„ ๋ฐ ๋ฐฐํฌ ์ƒํƒœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” udca ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    udca.fluentd.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    udca.fluentd.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1.2.0

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    udca.fluentd.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-stackdriver-logging-agent"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    udca.fluentd.resource.limits.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 500Mi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ ํ•œ๋„์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

    udca.fluentd.resource.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 500m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    udca.fluentd.resource.requests.memory ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 250Mi

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋ฉ”๋น„๋ฐ”์ดํŠธ ๋‹จ์œ„).

    udca.image.pullPolicy ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: IfNotPresent

    kubelet์ด ํฌ๋“œ์˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • IfNotPresent: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด ์ƒˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • Always: ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    udca.image.tag ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "1.2.0"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.

    udca.image.url ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: "google/apigee-udca"

    ์ด ์„œ๋น„์Šค์˜ Docker ์ด๋ฏธ์ง€ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    udca.jvmXms ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 256m

    ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ pod์˜ JVM์— ๋Œ€ํ•œ ์‹œ์ž‘ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ž…๋‹ˆ๋‹ค.

    udca.jvmXmx ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 256m

    ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ pod์˜ JVM์— ๋Œ€ํ•œ ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ž…๋‹ˆ๋‹ค.

    udca.livenessProbe.failureThreshold ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 2

    ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Kubernetes๊ฐ€ ํ™œ์„ฑ ํ”„๋กœ๋ธŒ์˜ ์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    udca.livenessProbe.initialDelaySeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 0

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋˜์–ด ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

    udca.livenessProbe.periodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 5

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๋ฅผ ์‹คํ–‰ํ•  ๋นˆ๋„(์ดˆ)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    udca.livenessProbe.timeoutSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    ํ™œ์„ฑ ํ”„๋กœ๋ธŒ๊ฐ€ ํƒ€์ž„์•„์›ƒ๋œ ํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ตœ์†Ÿ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค.

    udca.nodeSelector.key ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    udca ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ํ‚ค์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    udca.nodeSelector.value ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    udca ๋Ÿฐํƒ€์ž„ ์„œ๋น„์Šค์˜ ์ „์šฉ Kubernetes ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ ์„ ํƒ๊ธฐ ๋ผ๋ฒจ ๊ฐ’์ž…๋‹ˆ๋‹ค.

    ๋…ธ๋“œ ์„ ํƒ๊ธฐ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    udca.pollingIntervalInSec ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    UDCA๊ฐ€ ํด๋ง ์ž‘์—… ์‚ฌ์ด์— ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. UDCA๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ pod์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํด๋งํ•˜์—ฌ ์—…๋กœ๋“œํ•  ์ƒˆ ํŒŒ์ผ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    udca.replicaCountMax ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 4

    UDCA ๋ฐฐํฌ์— ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํฌ๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค. UDCA๋Š” ReplicaSet๋กœ ๊ตฌํ˜„๋˜๋ฏ€๋กœ pod๋Š” ๋ณต์ œ๋ณธ์ž…๋‹ˆ๋‹ค.

    udca.replicaCountMin ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 1

    UDCA ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ตœ์†Œ ํฌ๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค. UDCA๋Š” ReplicaSet๋กœ ๊ตฌํ˜„๋˜๋ฏ€๋กœ pod๋Š” ๋ณต์ œ๋ณธ์ž…๋‹ˆ๋‹ค.

    CPU ์‚ฌ์šฉ๋Ÿ‰์ด udca.targetCPUUtilizationPercentage๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋Š” pod ์ˆ˜๋ฅผ ์ตœ๋Œ€ udca.replicaCountMax๊นŒ์ง€ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

    udca.resource.requests.cpu ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 250m

    Kubernetes ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฆฌ์†Œ์Šค์˜ ์ •์ƒ ์ž‘๋™์— ํ•„์š”ํ•œ CPU์ž…๋‹ˆ๋‹ค(๋ฐ€๋ฆฌ์ฝ”์–ด ๋‹จ์œ„).

    udca.revision ๋ฒ„์ „: 1

    ๊ธฐ๋ณธ๊ฐ’: "v1"

    ์นด๋‚˜๋ฆฌ์•„ ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ๋ฒจ์— ์ฑ„์›Œ์ง€๋Š” ์ •์  ๊ฐ’์ž…๋‹ˆ๋‹ค.

    udca.serviceAccountPath ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Apigee ์• ๋„๋ฆฌํ‹ฑ์Šค ์—์ด์ „ํŠธ ์—ญํ• ์ด ์žˆ๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    udca.serviceAccountSecretRef ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    serviceAccountPath ๋˜๋Š” serviceAccountSecretRef ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. Apigee ์• ๋„๋ฆฌํ‹ฑ์Šค ์—์ด์ „ํŠธ ์—ญํ• ์„ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Google ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    udca.targetCPUUtilizationPercentage ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 75

    ReplicaSet์—์„œ ํฌ๋“œ ์ˆ˜๋ฅผ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•œ CPU ์‚ฌ์šฉ๋Ÿ‰์˜ ๊ธฐ์ค€์ ์ด๋ฉฐ, ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ CPU ๋ฆฌ์†Œ์Šค์˜ ๋ฐฑ๋ถ„์œจ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋Š” ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํฌ๋“œ์— ์žˆ๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์˜ ํ†ตํ•ฉ ์‚ฌ์šฉ๋ฅ (fluentd ๋ฐ UDCA ๋ชจ๋‘)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์‚ฌ์šฉ๋ฅ ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

    CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋Š” ReplicaSet์˜ pod ์ˆ˜๋ฅผ ์ตœ๋Œ€ udca.replicaCountMax๊นŒ์ง€ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

    udca.terminationGracePeriodSeconds ๋ฒ„์ „: 1.0.0

    ๊ธฐ๋ณธ๊ฐ’: 600

    ํฌ๋“œ ์‚ญ์ œ๊ฐ€ ์š”์ฒญ๋˜๋Š” ์‹œ์ ๊ณผ ํฌ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ์‹œ์  ์‚ฌ์ด์˜ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ชจ๋“  ์‚ฌ์ „ ์ค‘์ง€ ํ›„ํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    virtualhosts

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

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ๋‹ค์Œ ํ‘œ์—์„œ๋Š” virtualhosts ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    ์†์„ฑ ์„ค๋ช…
    virtualhosts[].additionalGateways ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํŠธ๋ž˜ํ”ฝ์„ ๋ผ์šฐํŒ…ํ•  Istio ๊ฒŒ์ดํŠธ์›จ์ด์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

    virtualhosts[].name ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    virtualhost์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    virtualhosts[].hostAliases[] ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    ํ•„์ˆ˜

    ์„œ๋ฒ„์— ํ•˜๋‚˜ ์ด์ƒ์˜ DNS ์ด๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์˜ˆ๋ฅผ ๋“ค๋ฉด foo-test.mydomain.com์ž…๋‹ˆ๋‹ค.

    ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ์—์„œ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ํ˜ธ์ŠคํŠธ ๋ณ„์นญ์€ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋กœ foo-test.mydomain.com ๋ฐ foo-prod.mydomain.com๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    virtualhosts[].routingRules[].connectTimeout ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: 300.

    ์ •์˜๋œ ๊ฒฝ๋กœ ์ง‘ํ•ฉ์˜ ์—ฐ๊ฒฐ ์‹œ๊ฐ„ ์ œํ•œ(์ดˆ)์ž…๋‹ˆ๋‹ค.

    connectTimeout์€ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

    virtualhosts[].routingRules[].env ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None.

    ํ•„์ˆ˜

    API ํ˜ธ์ถœ์ด ๋ผ์šฐํŒ…๋  ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์„ 1๊ฐœ ์ด์ƒ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    paths ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ env ํ•ญ๋ชฉ์€ ์ด ํ™˜๊ฒฝ์— ๋งคํ•‘๋œ ๊ฒฝ๋กœ ์•„๋ž˜์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

    virtualhosts[].routingRules[].paths[] ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” /์ž…๋‹ˆ๋‹ค.

    ํ”„๋ฆฌํ”ฝ์Šค ๊ธฐ๋ณธ ๊ฒฝ๋กœ ๋ผ์šฐํŒ…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์šฐํŒ… ๊ทœ์น™์€ env๋กœ ์ง€์ •๋œ ํ™˜๊ฒฝ์œผ๋กœ ํ™•์ธ๋˜๋„๋ก API ํ˜ธ์ถœ์„ ํŠน์ • ๊ฒฝ๋กœ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. paths[]๋Š” ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋Š” /์ž…๋‹ˆ๋‹ค.

    ๋ผ์šฐํŒ… ๊ทœ์น™ ๊ตฌ์„ฑ์€ ๋‹ค์Œ ํŒจํ„ด์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

    org: hybrid
    virtualhosts:
    - name: default
      routingRules:
        - paths:
            - path-1
            - path-2
            - path-n
          env: test
        - paths:
            - /v1/customers
          env: prod

    ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

    virtualhosts[].selector ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: app: istio-ingressgateway

    ํ•„์ˆ˜

    ๋‹ค๋ฅธ ์ธ๊ทธ๋ ˆ์Šค ์„ ํƒ๊ธฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค-๊ฐ’ ์„ ํƒ๊ธฐ-๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค.

    virtualhosts[].sslCertPath ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    ์‹œ์Šคํ…œ์˜ TLS ์ธ์ฆ์„œ ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    virtualhosts[].sslKeyPath ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    ์‹œ์Šคํ…œ์˜ TLS ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

    virtualhosts[].sslSecret ๋ฒ„์ „: 1.2.0

    ๊ธฐ๋ณธ๊ฐ’: None

    sslCertPath/sslKeyPath ๋˜๋Š” sslSecret ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

    TLS ์ธ์ฆ์„œ์™€ ๋น„๊ณต๊ฐœ ํ‚ค๊ฐ€ ํฌํ•จ๋œ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์— ์ €์žฅ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. TLS ์ธ์ฆ์„œ์™€ ํ‚ค ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด์•ˆ ๋น„๋ฐ€์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ์กฐ: