EKS ์ ๋ฐฐํฌ๋ ํ๋๋ค์ AWS ์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
- EC2 Instance Profile
- IAM Role for Service Account
EC2 Instance Profile ์ ์์ปค ๋ ธ๋์๊ฒ AWS ์ ์ ๊ทผํ ์ ์๋ ์๊ฒฉ ์ฆ๋ช ์ ํด์ฃผ์ฃ .
์ ํด์ง EC2 ์ธ์คํด์ค์ ์ ํด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ค๋ฉด ์ ๋ฐฉ๋ฒ์ ์์ฃผ ์ข์ ๋ฐฉ๋ฒ์ด์์.
ํ์ง๋ง, ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์ ๋ฐฐํฌ๋๋ ํ๋๋ค์ ํ๋์ ํน์ ํ ๋ ธ๋์ ๋ฐฐํฌ๋์ง ์์์.
NodeAffinity ์ Label ์ ํตํด์ ๋ ธ๋๋ฅผ ์ ํํ๊ธด ํ์ง๋ง ๋์จํ๊ฒ ๊ทธ๋ฃนํ์ ํ์ฃ .
๋ง์ฝ ์ฟ ๋ฒ๋คํฐ์ค ํ๊ฒฝ์์ App ์ด Replica 3 ๊ฐ๋ก ๋ฐฐํฌ๋๊ณ , Hard PodAffinity ๋ฅผ ์ฃผ์ด ํ๋๋ฅผ ์ ๋ถ ๋ค๋ฅธ ๋ ธ๋์ ๋ฐฐํฌ๋๊ฒ๋ ํ๋ค๋ฉด, ๋ ๋ค๋ฅธ 3๊ฐ์ ๋ ธ๋๊ฐ ๋ชจ๋ Instance Profile ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ค ์ ๋ฐ์ดํธ ํ๋ฉด์ ๊ธฐ์กด ํ๋๋ค์ด ์์ ๋ค๋ฅธ ๋ ธ๋๋ค์ ๋ฐฐํฌ๋๋ค๋ฉด, ๋ ๊ทธ ๋ ธ๋๋ค์ Instance Profile ์ ์ง์ ํ๊ณ , ์ด์ ๋ ธ๋์์๋ ์ง์์ผ ํฉ๋๋ค. ๋๋ฌด ๊ท์ฐฎ์์..
๊ทธ๋์ ์ฟ ๋ฒ๋คํฐ์ค์์ IRSA (IAM Role for Service Account) ์ ์ง์ํฉ๋๋ค.
ํ๋์ ServiceAccount ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ AWS ์ ์ ๊ทผํ ์ ์๋ ํ ํฐ์ด ํ๋ ๋ด ์ปจํ ์ด๋๋ค์ ๋ง์ดํธ๋ฉ๋๋ค.
ํด๋น ํ ํฐ์ pod-identity-webhook ์ด๋ผ๋ EKS ์ ์ฉ ์ ๋์จ์ผ๋ก ์ธํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋ฉ๋๋ค. Admission Contoller ์ Mutate ๋ฐฉ์์ ์ด์ฉํ์ฃ .
์๋ฌดํผ IRSA ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ด์ ๋ ธ๋ ๋จ์๊ฐ ์๋ ํ๋ ๋จ์๋ก AWS ์ ์ ๊ทผํ ์ ์๊ฒ ๋ฉ๋๋ค.
IRSA ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค.
์๋ก ์ด ๋๋ฌด ๊ธธ์๋ค์... ๊ทธ๋๋ EKS ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด IRSA ๋ถ๋ถ์ ๋งค์ฐ ์ค์ํ๋ค ๋ณด๋ ์ด์ง ๋ค๋ค๋ณด์์ต๋๋ค.
๊ทธ๋ผ ๋ณธ๋ก ์ผ๋ก ๋์ด๊ฐ์ ์ด๋ฌํ IRSA ๋ฅผ ์ผ์์๋ ๋ถ๊ตฌํ๊ณ ์ Vault ๋ DynamoDB ์ ์ ๊ทผ์ ๋ชปํ๋์ง ์์๋ณด๊ณ , ์ด๋ป๊ฒ ํด๊ฒฐ ํ๋์ง ์์๋ณด๋๋ก ํ์ฃ .
๋ ์ธ ๋๋์ฝ๋~
Vault ๋ ๋ค์ํ ๋ฐฑ์๋ ์คํ ๋ฆฌ์ง๋ฅผ ์ง์ํ๋๋ฐ ์ ๋ HA ๋ชจ๋๋ก ๋ฐฐํฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ DynamoDB ๋ฅผ ์ ํํ์ต๋๋ค.
Consul ๊ณผ Raft ๋ ์์๋ฆฌ์คํธ์ ์์์ง๋ง, ์ต์ข ์ ์ผ๋ก๋ DynamoDB ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ด์ ๋ ์ฌํํฉ๋๋ค. Consul ์ Vault ์ฒ๋ผ ํ์์ฝํ์ฌ์ ์ ํ์ธ๋ฐ ์ ๋ชฐ๋ผ์.. ๊ทธ๋ฆฌ๊ณ Raft ๋ Intergrated Storage ๋ฐฉ์์ธ๋ฐ ๋ ธ๋๋ง๋ค Raft ๋ฅผ ๊ฐ์ ธ์ผ ํด์ ๊ด๋ฆฌ ์ธก๋ฉด์์ ์์ด ๋ง์ด ๊ฐ ๊ฒ์ฒ๋ผ ์๊ฐ๋์๊ณ , ๋ฌด์๋ณด๋ค ๊ฐ๊ฐ์ Raft ๋ฅผ ๋ฐฑ์ ํ๊ณ ์ ํ๋ ๋ฐฐ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ๋ ํฐ ์๊ฐ์ด ๋ค์์ต๋๋ค.
๊ทธ๋์ ๊ฒฐ๊ตญ DynamoDB ๋ฅผ ์ ํํ์ต๋๋ค. AWS ์์ ๊ด๋ฆฌํด์ฃผ๊ณ , ํ์ฅ์ฑ์ด ์ข์ผ๋ฉฐ, ๋ฌด์๋ณด๋ค AWS Backup Policy ๋ฅผ ํตํด์ ๋ฐฑ์ ์ด ์ฝ๊ฒ ๊ฐ๋ฅํ๊ฑฐ๋ ์.
์๋๋ ๊ตฌ์ฑํ๊ณ ์ ํ Vault ์ํคํ ์ฒ์ ๋๋ค.
backend storage ๋ก dynamodb ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋์ฒ๋ผ config.hcl ์ ๊ตฌ์ฑํ๊ณ ,
storage "dynamodb" {
ha_enabled = "true"
region = "ap-northeast-2"
table = "vault"
}
ํ์์ฝํ์์ ๊ณต์์ ์ผ๋ก ์ ๊ณต๋๋ Vault Helm Chart ๋ฅผ ์ด์ฉํด Vault ๋ฅผ HA ๋ชจ๋๋ก ๋ฐฐํฌํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์๋์ ๊ฐ์ด dynamoDB ์ ์ ๊ทผํ ์ ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฏธ์ง์๋ ์ ๊ฐ ๊ฒ์ ์์ผ๋ก ๊ฐ์ก์ง๋ง ์๊ฒฉ ์ฆ๋ช ์ Web Token ์ฆ, IRSA ๋ก ํ๋ ๊ฒ์ด ์๋๋ผ EC2 Instance Profile ์ ํตํด์ ํ๋๊ตฐ์. ํ๋ ๋ด์ IRSA ๋ฅผ Vault ๊ฐ ์ธ์ํ์ง ๋ชปํ์ต๋๋ค.
IRSA ๋ฅผ ๋จผ์ ํ์ธํ๊ณ , ์์ผ๋ฉด EC2 Instance Profile ๋ฅผ ํ์ธํ๋๋ฐ EC2 Instance Profile ๋ฅผ ์ด์ฉํด์ ์๊ฒฉ ์ฆ๋ช ์ ํ ๊ฒ์ ๋ณด์ํ๋ ์๋ง ํ๋์ IRSA ๊ฐ ํ ๋น๋์ง ์์ ๊ฒ ๊ฐ์์ต๋๋ค.
๊ทธ๋์ IRSA ์์ฑ ๊ณผ์ ์ ํน์๋ ์คํ๊ฐ ์์๊น ๋์ผ๋ก ์ง์ yaml ์ ํ์ธํ๊ณ , IRSA ๋ฅผ ํ ์คํธ ํด๋ณผ ํ๋๋ฅผ ๋ง๋ค์ด ํ์ธํ ๊ฒฐ๊ณผ dynamoDB ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ Vault ํ๋์์ ์๊พธ ๊ถํ์ด ์๋ค๊ณ ๋์ค๋ค์..
IRSA ์ ์คํ๋ ์๊ณ , ํ๋์๋ ๋ถ๋ช /var/run/secrets/eks.amazonaws.com/serviceaccount/token ๋ ์ ๋ง์ดํธ๋์ด ์๊ณ , ๋๋จธ์ง ํ๊ฒฝ๋ณ์๋ ์ ์ค์ ๋์ด ์์ต๋๋ค.
ํน์ Vault ๊ฐ ๋ฐฐํฌ๋๋ ์์ปค ๋ ธ๋์ ๋ฌธ์ ๊ฐ ์๋ ๊ฑธ๊น?
ํ์ง๋ง ๋ฐฐํฌ๋๋ ๋ ธ๋์๋ aws-node ๋ ์ ์คํ๋๊ณ ์๊ณ , describe node ๋ฅผ ํด๋ณธ ๊ฒฐ๊ณผ ํ๊ฒฝ ๋ณ์๋ค๋ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ ธ๋ ๋ฌธ์ ๋ ์๋ ๊ฑฐ ๊ฐ์์..!!
์ ๋ง์ ๋ง์ ๋ง์ ๋ง์ ๋ง ๋ฌธ์ ๊ฐ ์์ด ๋ณด์ด๋๋ฐ, ์๋๋ค... ๋ฏธ์น๋ค..
์ด ์ง๊ฒฝ๊น์ง ์ค๋ ์ ๊ฐ ์๊ณ ์๋ EKS ์ง์๋ค์ด ๋ถ์ ๋นํ๋ ๊ธฐ๋ถ๊น์ง๋ ๋ค์์ฃ ..
ํน์ ๋ชฐ๋ผ์ Vault Repository ์ Issue ๋ค์ ํ๋ฒ ์ดํด๋ณด์๋๋ฐ..!! ๋น์ทํ ๋ฌธ์ ๋ฅผ ๊ฒช๋ ์ฌ๋๋ค์ด ๊ฝค ์์์ต๋๋ค!!
hashicorp/vault-helm ์ด ์๋ hashicorp/vault ์ ์๋ Issue ๋ค์ด๋ค.. hashicorp/vault-helm ์๋ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ง ์๋ค..
๊ทธ ์ค ํ๋๋ฅผ ๋ค์ด๊ฐ์ ์ดํด๋ณด์ฃ .
์ด ๋ถ์ AWS KMS ์ ๋ํ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ์ด์ง๋ง ์ด์ฐ๋๋ AWS ์ ๊ทผ์ ๋ํ ๋ฌธ์ ์ด๋ ๋ณ๋ฐ ๋ค๋ฅผ ๊ฒ์ด ์์ด ๋ณด์ ๋๋ค.
๋ฐ์ผ๋ก ์คํฌ๋กค ํ๊ณ ์๋๋ฐ ์ด๋ฐ ์ฝ๋ฉํธ๊ฐ ์๋๊ตฐ์.
"1.14.1 ๋ฒ์ ์ ์ฌ์ฉํด๋ด!!"
ํน์ ๋ชฐ๋ผ์ ๋ค๋ฅธ Issue ๋ ์ดํด๋ณด์์ต๋๋ค.
์ผ์ถ๋ด๋ ์ ๊ฐ ๊ฒช๋ ๋ฌธ์ ์ ๋น์ทํด๋ณด์ด์ฃ ?
ํ์คํฉ๋๋ค. 1.14.1 ๋ฒ์ ์ผ๋ก ๋์ด๋ฉด ๋ ๊ฑฐ ๊ฐ์์!!
1.14.1 ๋ฒ์ ๋ถํฐ ๋ฌธ์ ๊ฐ fix ๋์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋๋ต 20๋ 11์๋ถํฐ ์์๋๋ฐ… 3์ฃผ ์ ์ ํด๊ฒฐ์ด ๋จ…!!
์ฐธ๊ณ ๋ก ๊ธ ์์ฑ ๊ธฐ์ค์ผ๋ก ์ค๋์ 23๋ 08์15์ผ์ ๋๋ค... 3๋ ...
๊ทธ์ ๋ฐํด ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ Vault Chart ์์ ์ฌ์ ํ 1.14.0 ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
์ดํ ๋ฒ์ ์ 1.14.1 ๋ก ์ ๊ทธ๋ ์ด๋ ์์ผ์คฌ๋๋ ๋ฌด์ฌํ ๋ฐฐํฌ๊ฐ ๋์์ต๋๋ค.
๋ ๋ฌธ์ ๊ฐ ๊ทธ๋ ๋ฏ ๊ฐ๋จํ ํ๋๋ฅผ ๋ฐ๊พธ๋ฉด ๋๋๋ฐ.. ๊ทธ๊ฑธ ์ฐพ๊ธฐ๊ฐ ์ฝ์ง ์๋ค์..
๊ฐํน๋ณด๋ฉด WEB_TOKEN_FILE ๋ก AWS ์ธ์ฆ์ด ๋ถ๊ฐ๋ฅํ ํ๋ก์ ํธ๋ค์ด ์์ต๋๋ค. (์. Goofys)
์ด๋ด ๊ฒฝ์ฐ AWS_SECRET_KEY ๋ฅผ ์ง์ ์ ๊ณตํด์ฃผ๋๋ฐ.. IAM Role ๊ฐ์ ๊ฒฝ์ฐ ์ต๋ 24์๊ฐ๋ง๋ค ๊ฐฑ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
์๋๋ฉด IAM User ๋ฅผ ์ฌ์ฉํด์ผ ํ๋๋ฐ IAM User ๋ ์ ๋ ์๋๊ฑฐ ๊ฐ์์.
๊ฒฐ๊ตญ 24์๊ฐ๋ง๋ค ๊ฐฑ์ ํ ์ ์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ผํ ํ ๋ฐ.. ๊ณผ์ฐ ์ด๊ฒ ์ต์ ์ผ๊น ๋ผ๋ ๊ถ๊ธ์ฆ์ด ๋ญ๋๋ค!!
ํน์ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๊ผญ ์๋ ค์ฃผ์ธ์ :)
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง!
PS.
๊ธ์์ ์๋ต๋์์ง๋ง ์ฒ์์ IRSA ๊ฐ ์ ์๋จนํ๋์ง ํ ์คํธ ํด๋ณด๊ณ ์ถ์ด์ HA ๋ชจ๋๊ฐ ์๋ Dev ๋ชจ๋๋ก ์คํํ๋๋ฐ.. ์ด๋๋ AWS ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ์ต๋๋ค. ์ด๊ฒ์ ๊ฒ ์์๋ณธ ๊ฒฐ๊ณผ Dev ๋ชจ๋ ๊ฐ์ ๊ฒฝ์ฐ Helm Chart ์์ ServiceAccount ์ Annotation ์ ์ถ๊ฐํด์ฃผ์ง ์๋๊ตฐ์.. values.yaml ์ ๋ช ์๋ ๊ฒ์ด ์์ด์ ๋ชจ๋์ ์๊ด์์ด Annotation ์ ์ถ๊ฐํ๋ฉด ServiceAccount ์ ์ถ๊ฐ๋๋ ์ค ์์๋๋ฐ ์๋์์ต๋๋ค. ๊ทธ๋์ Dev Mode ์์ _helper.tpl ์ ์ฝ๊ฐ ์์ ํด์ฃผ์ด์ ํ ์คํธ ํ์ต๋๋ค.. ๊ฒฐ๊ตญ Vault ๋ฒ์ ๋ฌธ์ ์ฌ์ ์ฑ๊ณต๋ ๋ชปํ๊ณ ์๊ด๋ ์์์ง๋ง.. ใ ใ ใ