๋กœ์ผ“๐Ÿพ
article thumbnail

AWS ์—์„œ GCP ๋กœ ๋„˜์–ด๊ฐ€๋ฉด์„œ ์ž์—ฐ์Šค๋ ˆ AWS Secrets Manager ์—์„œ GCP Secret Manager ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์ด๋ฆ„์ด AWS ์—์„  Secrets ๋ณต์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , GCP ์—์„  Secret ๋‹จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ธ€ ํ›„๋ฐ˜๋ถ€์—์„œ๋Š” ์™œ ์ด๋ ‡๊ฒŒ ์ง€์—ˆ๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!

 

Secret Manager ๋ผ๋Š” ์„œ๋น„์Šค๋Š” ์‚ฌ์‹ค ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ์ € ์‹œํฌ๋ฆฟ์„ ์ €์žฅํ•˜๋Š” ์ €์žฅ์†Œ ์—ญํ• ์„ ํ•˜๋Š”๋ฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์—์„œ External Secrets ๋‚˜ Argo Vault Plugin ์„ ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ์‹œํฌ๋ฆฟ์„ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

AWS Secrets Manager ์— ์ต์ˆ™ํ•œ ์ƒํƒœ์˜€๊ธฐ ๋•Œ๋ฌธ์— GCP ์—์„œ๋„ ๋น„์Šทํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ... ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์ฃ !

 

์ œ๊ฐ€ ๊ฒช์—ˆ๋˜ ์ƒํ™ฉ์„ ์ตœ๋Œ€ํ•œ ์ƒ์ƒํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์–ด์„œ ์ฐจ๊ทผ์ฐจ๊ทผ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

์ฒ˜์Œ์—” ๋ณ„ ๊ฑฑ์ • ์—†์ด ์‹œ์ž‘ํ–ˆ์ง€๋งŒ... Argo Vault Plugin ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น… ํ•˜๊ฒŒ๋˜๋Š” ์ƒํ™ฉ๊นŒ์ง€ ๊ฐ€๊ฒŒ ๋˜๋Š”๋ฐ...!!

 

AWS Secrets Manager ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์‹œํฌ๋ฆฟ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

AWS Console ์—์„œ ๋ณด๋ฉด ๋‹จ์ˆœํžˆ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹œํฌ๋ฆฟ๋“ค์ด ํ•œ์ค„ ํ•œ์ค„ ํ…์ŠคํŠธ๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์‹ค์ œ๋กœ ์ € ๊ฐ’๋“ค์€ Json ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค์€ JSON ํ˜•ํƒœ๋กœ ์ €์žฅ๋จ!

ํŽธ์ง‘์„ ๋ˆ„๋ฅด๊ณ  ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ณด๋ฉด JSON ์œผ๋กœ ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ Secrets Manager ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ์—ฌ๋Ÿฌ ์‹œํฌ๋ฆฟ๋“ค์„ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

AWS Secrets Manager > Secret Pool > JSON Secrets ์ด 3๊ฐœ์˜ Depth ๋ฅผ ๊ฐ€์ง€๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  Argo Vault Plugin ์„ ์ด์šฉํ•˜์—ฌ <test-secret> ์‹œํฌ๋ฆฟ์ด Secrets Manager ์„ ํ†ตํ•ด ๋ณ€ํ™˜๋˜๊ณ  ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค Secret ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด Secert ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด, avp.kubernetes.io/path ์–ด๋…ธํ…Œ์ด์…˜์„ Argo Vault Plugin ๊ฐ€ ๊ฐ์ง€ํ•˜๊ณ  "test-aws-secret" ์—์„œ test-secret ์˜ key ๋ฅผ ๊ฐ€์ง„ ์‹œํฌ๋ฆฟ์„ ๊ฐ€์ ธ์™€์„œ ๋ณ€ํ™˜์„ ํ•ด์ค๋‹ˆ๋‹ค.

apiVersion: v1
kind: Secret
metadata:
  name: aws-example
  annotations:
    avp.kubernetes.io/path: "test-aws-secret" # The name of your AWS Secret
stringData:
  sample-secret: <test-secret>
type: Opaque

 

์•„๋งˆ AWS Seceret Manager ์˜ "test-aws-secret"(Secret Pool) ์€ ์•„๋ž˜์™€ ๊ฐ™์€ ์‹œํฌ๋ฆฟ์„ ์ €์žฅํ•˜๊ณ  ์žˆ๊ฒ ์ฃ .

{
	"test-secert": "Hello World"
}

 

๋งŒ์•ฝ ์ถ”๊ฐ€์ ์ธ ์‹œํฌ๋ฆฟ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด "test-aws-secret"(Secret Pool) ์— "db-password" ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

{
	"test-secert": "Hello World"
	"db-password": "admin"
}

 

Argo Vault Plugin ์—์„  ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์ฃ .

 

 

AWS Secrets Manager + Argo Vault Plugin ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด,

  1. AWS Secrets Manager ๋Š” ํ•˜๋‚˜์˜ Secret Pool ์„ ์ƒ์„ฑํ•ด ๊ทธ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹œํฌ๋ฆฟ์„ JSON ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ
  2. Argo Vault Plugin ์—์„œ Placeholder ๋ฅผ ์ด์šฉํ•ด Secrets Manager ์—์„œ ์‹œํฌ๋ฆฟ์„ ๊ฐ€์ ธ์™€ ๋ณ€ํ™˜ํ•จ
  3. ๋ฌธ์ œ์—†์ด ์ž˜ ์‚ฌ์šฉํ•จ

 

๊ทธ๋ฆฌ๊ณ  GCP Secret Manager ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 

GCP Secret Manager ๋„ AWS ์™€ ๊ต‰์žฅํžˆ ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ JSON ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด๋„ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒํ™ฉ์— ๋”ฐ๋ผ JSON ํ˜•ํƒœ๋กœ ๋„ฃ์–ด๋„ ์ „ํ˜€ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค!
ํ…Œ๋ผํผ ์ฝ”๋“œ์—์„œ ์‹œํฌ๋ฆฟ์„ ๊ฐ€์ ธ์˜ฌ ๋• JSON ํ˜•ํƒœ๊ฐ€ ์˜คํžˆ๋ ค ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค!

๋‹ค๋งŒ, Argo Vault Plugin ์„ ์‚ฌ์šฉํ•˜๋Š” ์ž…์žฅ์—์„ ... ์•„๋‹ ์ˆ˜๋„ ์žˆ๋‹ค!

 

์ด๋ ‡๊ฒŒ ์‹œํฌ๋ฆฟ์„ ์ถ”๊ฐ€ํ•˜๊ณ  Argo Vault Plugin ๊ฐ€์ด๋“œ๋Œ€๋กœ ์ง„ํ–‰ ํ–ˆ๋Š”๋ฐ..

kind: Secret
apiVersion: v1
metadata:
  name: test-secret
  annotations:
    avp.kubernetes.io/path: projects/12345678987/secrets/test-secret
type: Opaque
data:
  password: <test-secret>

 

์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ฝ์–ด๋ณด๋‹ˆ test-secret ๋ผ๋Š” ํ‚ค๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

GCP Secret Manager ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๋ฌธ์ œ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ ‘๊ทผ์ด ๋˜๋Š”์ง€ ์•ˆ๋˜๋Š”์ง€๋ถ€ํ„ฐ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,
argocd-vault-plugin generate "." --verbose-sensitive-output ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

--verbose-sensitive-output ๋กœ ์ธํ•ด GCP Secret Manager ์˜ ๊ฐ’์ด ๋กœ๊ทธ๋กœ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์•„๋‹ˆ.. ๊ทผ๋ฐ ๋ถ„๋ช…ํžˆ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‚˜์™€์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ชจ๋‘ ๋‹ค ํ•ด๋ดค์ง€๋งŒ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒŒ ๊ณต์‹ ๋ฌธ์„œ์— ๋‚˜์™€์žˆ๋Š” ๊ฐ€์ด๋“œ ์ „๋ถ€์ธ๋ฐ.. ์ด๊ฑด ๋ญ ์‚ฌ์šฉ์ž๊ฐ€ ์•Œ์•„์„œ ๋ˆˆ์น˜๊ป ์‚ฌ์šฉํ•ด๋ผ ์ •๋„์ž…๋‹ˆ๋‹ค ใ…œใ…œ

 

์—๋Ÿฌ์— ๋Œ€ํ•œ ๋‚ด์šฉ๋„ ๊ตฌ๊ธ€๋ง ํ•ด๋ดค์ง€๋งŒ... ๋‚˜์˜ค์ง€ ์•Š์•„์„œ ๊ฒฐ๊ตญ ์ตœ์ข… ํ•„์‚ด๊ธฐ๋ฅผ ์จ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค..

 

์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๊นŒ๋ณด๊ธฐ๋กœ ํ•œ๊ฑฐ์ฃ ..!

 

์ฝ”๋“œ์—๋Š” ์ € ์—๋Ÿฌ ๋‚ด์šฉ์ด ์žˆ๊ฒ ๋‹ค ์‹ถ์–ด์„œ Argo Vault Plugin ์ฝ”๋“œ๋ฅผ Clone ํ•˜๊ณ  ๊นŒ๋ดค์Šต๋‹ˆ๋‹ค.

 

๊ด€๋ จํ•œ ์—๋Ÿฌ ๋‚ด์šฉ์€ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

util.go
์—๋Ÿฌ ๋‚ด์šฉ

 

์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด secertValue ๊ฐ€ nil ์ž„์— ๋”ฐ๋ผ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ else ๋กœ ์˜ค๋ฉด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ secertValue ๊ฐ€ ์™œ nil ์ผ๊นŒ? ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด secertValue ๊ฐ€ ์–ด๋””์„œ ์˜ค๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

util.go

 

์•„.. ๊ทผ๋ฐ ๋ฌธ์ž์—ด ๊ด€๋ จํ•œ ํ•จ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ณด๋‹ˆ ์ฝ”๋“œ๋งŒ ๋ณด๊ณ  ๋™์ž‘ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.. 

๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค ใ…œใ…œ

 

goland ๋ฅผ ์ผœ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด configuration ์„ ์„ค์ •ํ•ด์ฃผ๊ณ  ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

goland config

goland ์—†์ด ๋ช…๋ น์–ด๋งŒ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ go run ./main.go generate "./secret.yaml" --verbose-sensitive-output

 

์‹คํ–‰ํ•  ๋•Œ secret.yaml ์ด ํ•˜๋‚˜ ํ•„์š”ํ•œ๋ฐ, ์•„๋ž˜์ฒ˜๋Ÿผ ๋”ฐ๋กœ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

kind: Secret
apiVersion: v1
metadata:
  name: test-secret
  annotations:
    avp.kubernetes.io/path: projects/12345678987/secrets/test-secret
type: Opaque
data:
  password: <test-secret>
ํŽธ์˜์ƒ <test-secret> ๋กœ ์จ๋†“์•˜๋Š”๋ฐ, Secret ์ด๊ธฐ ๋•Œ๋ฌธ์— Base64 Encode ๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•˜๋‹ˆ ์•ˆ๋ณด์˜€๋˜ ๊ฒƒ๋“ค์ด ์ข€ ๋ณด์ด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์šฐ์„  go viper ๋ฅผ ์‚ฌ์šฉํ•ด ์‹คํ–‰๋˜๊ณ , AVP_TYPE ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด Config ๊ฐ์ฒด์˜ Backend ํ•„๋“œ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ GCP ๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

config.go

 

GCP ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ GCP ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” ๊ฒƒ ์•Œ ์ˆ˜ ์žˆ๊ณ ,

gcpsecretmanager.go

 

Backend ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ GCP ๋ฅผ ์ƒ์†๋ฐ›๊ณ ,

util.go

 

GCP ๊ฐ์ฒด์—๋Š” Backend ์ธํ„ฐํŽ˜์ด์Šค ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ธ GetIndividualSecret ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcpsecretmanager.go

 

๊ทธ๋Ÿผ ๋ˆˆ์น˜์ƒ ์ € ํ•จ์ˆ˜ ์•ˆ์— ์žˆ๋Š” a.GetSecrets ํ•จ์ˆ˜๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ํ•ต์‹ฌ ์—ญํ• ์„ ํ•˜๋Š” ํ•จ์ˆ˜์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋กœ์ง์„ ๋ณด๋‹ˆ ์ด์ œ์•ผ ๊ฐ€์ด๋“œ์— ์žˆ๋˜ ๋ฐฉ์‹๋“ค์ด ์ „๋ถ€ ์ดํ•ด๋ฉ๋‹ˆ๋‹ค.

gcpsecretmanager.go

 

๋นจ๊ฐ„์ƒ‰ ๋„ค๋ชจ์— ์žˆ๋Š” data ๊ฐ€ ๊ฒฐ๊ตญ secretValue ์ธ๋ฐ, ๋ณด์‹œ๋ฉด data[secertName] ์— ๋“ค์–ด๊ฐ€๋Š” secertName ์€ ์˜ค๋กœ์ง€ Secert Manager ID ์ž…๋‹ˆ๋‹ค.

 

์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ,

"test-secert" ์— ์•„๋ฌด๋ฆฌ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด๋„

{
	"test-secert": "Hello World"
	"db-password": "admin"
}

 

data["test-secret"] ๋กœ ๋ฐ–์— ์•ˆ๋˜์„œ, data["test-secret"]["db-password"] ์™€ ๊ฐ™์ด JSON ์˜ ํŠน์ • ํ‚ค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

data["test-secret"] ๋Š” JSON ์˜ "test-secret" ํ‚ค๋ฅผ ๋งํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ  GCP Secret Manager ์˜ Secret Pool ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์ œ๊ฐ€ ์›ํ–ˆ๋˜ ๋ฐฉ์‹์€ "test-secret" ์ด๋ผ๋Š” Secret Manager ์•ˆ์—์„œ db-password ๋ผ๋Š” ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์›ํ–ˆ๋Š”๋ฐ, ๋™์ž‘๋ฐฉ์‹์€

data["test-secret"] ๋ฐ–์— ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— db-password ํ‚ค์— ๋Œ€ํ•ด์„  ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

 

data["test-secret"] ๋ฅผ ํ†ตํ•ด JSON ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ  ์›ํ•˜๋Š” ํ‚ค๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”๋ฐ data["test-secret"] ๋ฐ–์— ์•ˆ๋˜์„œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๊ฐ€์ ธ์™€ ๊ทธ ์•ˆ์—์„œ ํŠน์ • ํ‚ค์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ํ•˜๋Š” ํ–‰์œ„๋ฅผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์•„๋ฌด๋ฆฌ JSON ์˜ key ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ๋ณ„์ง“์„ ๋‹ค ํ–ˆ์—ˆ์–ด๋„ ์†Œ์šฉ์ด ์—†๋˜๊ฑฐ์ฃ .

 

์งœ์—ฌ์ง„ ์ฝ”๋“œ๋กœ๋Š” ์™„์ „ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ใ…œใ…œ

 

๊ทธ๋Ÿผ ๋ฐ˜๋ฉด AWS Secrets Manager ์ชฝ์€ ์–ด๋–ป๊ฒŒ ๋˜์–ด์žˆ๋Š๋ƒ?

 

JSON ์„ ํ•ธ๋“ค๋ง ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ณด์ž…๋‹ˆ๋‹ค ใ…œใ…œ ๊ทธ๋ž˜์„œ AWS Secrets Manager ๋Š” ๋œ๊ฑฐ์˜€์–ด์š”.

awssecretsmanager.go

 

์• ์ดˆ์— ํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๊ฑธ ํ•˜๋ฃจ ์ข…์ผ ๋˜๊ฒŒ ํ•œ๋‹ค๊ณ  ๊ณ ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค ใ…œใ…œใ…œ

 

Secrets Manager ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๊ทธ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹œํฌ๋ฆฟ์„ JSON ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋˜, AWS ์™€ ๋‹ฌ๋ฆฌ GCP Secret Manager ๋Š” ํ•˜๋‚˜์˜ Seceret Manager ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ์‹œํฌ๋ฆฟ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ–ˆ๋˜ ์ฐจ์ด๊ฐ€ ์žˆ์žˆ๋˜ ๊ฑฐ์ฃ .

 

AWS ๋Š” 3 Depth ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฐ˜๋ฉด, GCP ๋Š” 2 Depth ๋ฐ–์— ์•ˆ๋˜๋Š” ๊ฒƒ์ด์ฃ .

 

GCP ์—์„œ ๊ฐ€์ด๋“œ ํ•˜๋Š” ๊ฒƒ์ด JSON ๋ฐฉ์‹์€ ์•„๋‹ˆ์งˆ๋ผ๋„ ์œ ์—ฐ์„ฑ์„ ์œ„ํ•ด JSON ๋ฐฉ์‹์œผ๋กœ๋„ Argo Vault Plugin ์—์„œ ์ง€์›ํ•ด์คฌ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ Argo Vault Plugin  Issue ์— ์ด ๋ฌธ์ œ๋ฅผ ์ž‘์„ฑํ•ด๋†“์•˜๊ณ , ์‹œ๊ฐ„์ด ์žˆ์œผ๋ฉด ์ง์ ‘ Contribute ๋ฅผ ํ•œ๋ฒˆ ์‹œ๋„ํ•ด๋ด์•ผ๊ฒ ๋„ค์š”. ์‹œ๊ฐ„์ด ์žˆ์„๋ผ๋‚˜..

 

์–ด์ฐŒ๋๋“ , ๋ฌธ์ œ ์›์ธ์€ ์•Œ์•„๋ƒˆ์ง€๋งŒ AWS ์™€ ๋‹ฌ๋ฆฌ GCP + Argo Vault Plugin ์กฐํ•ฉ์€ ํฐ ๋ฉ”๋ฆฌํŠธ๊ฐ€ ์—†์–ด ๋ณด์—ฌ์„œ ์ตœ์ข…์ ์œผ๋กœ๋Š” External Secrets ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค!

 

์˜ค๋Š˜์€ ์—ฌ๊ธฐ๊นŒ์ง€!

profile on loading

Loading...