์ด ์ฃผ์ ์์๋ Kubernetes ๋ณด์ ๋น๋ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ API ํ๋ก์ ํ๋ฆ์ ์๋ ํ๋ฆ ๋ณ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
์๊ฐ
๋ฐํ์ ์ ๊ฒ์์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ API ํ๋ก์ ๋ก์ง์์ ํ๋ ์ฝ๋ฉํด์๋ ์ ๋๋ ๋ง๋ฃ๋์ง ์๋ ๋ฐ์ดํฐ์ ๋๋ค. ํ ๊ฐ์ง ์ต์ ์ ํ์ด๋ธ๋ฆฌ๋ ํค-๊ฐ ๋งต(KVM) ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฏธ ๋ฏผ๊ฐํ ์ ๋ณด์ ์ปค์คํ Vault์ ์๋ ๋ณด์ ๋น๋ฐ ๊ด๋ฆฌ์ Kubernetes๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ ์ด ์ฃผ์ ์์ ์ค๋ช ํ๋ Kubernetes ๋ณด์ ๋น๋ฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. KVM ๋ฐ์ดํฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก API ํ๋ก์ ํ๋ฆ ๋ณ์์ ์๋ Kubernetes ๋ณด์ ๋น๋ฐ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
Kubernetes ๋ณด์ ๋น๋ฐ์ ์ ์ฅํ ์ ์๋ ๋ฐ์ดํฐ์ ์ข ๋ฅ
Apigee Hybrid๋ Kubernetes ๋ณด์ ๋น๋ฐ์ ๋ค์๊ณผ ๊ฐ์ ์ข ๋ฅ์ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅํ๋๋ก ์ ํํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
ํ์ผ ํ์ | ์ง์๋๋ ํ์ผ ํ์ฅ์ |
---|---|
TLS ์ธ์ฆ์ ๋ฐ ํค ํ์ผ | *.crt , *.key , *.pem |
์์ฑ ํ์ผ | *.properties |
์์ฑ ํ์ผ์ ํค-๊ฐ ์์ ํฌํจํ๋ ํ์ผ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
username=admin password=1f2d1e2e7df
Kubernetes ๋ณด์ ๋น๋ฐ ๋ง๋ค๊ธฐ
์ด ์น์ ์์๋ ํด๋ฌ์คํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Kubernetes ๋ณด์ ๋น๋ฐ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
- Kubernetes ๋ณด์ ๋น๋ฐ์ ์ ์ฅํ๋ ค๋ ํ์ผ์ ๋ง๋ญ๋๋ค. ํ์ผ์ Kubernetes ๋ณด์ ๋น๋ฐ์ ์ ์ฅํ ์ ์๋ ๋ฐ์ดํฐ ์ข ๋ฅ์ ๋์ด๋ ํ์ผ ํ์ฅ์๋ฅผ ๊ฐ์ง ์ง์๋๋ ํ์ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.
kubectl create secret generic
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.kubectl -n namespace create secret generic org-env-policy-secret \ --from-file=filepath/prop-file.properties \ --from-file=filepath/key-file.key \ --from-file="filepath/cert-file.pem
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- namespace: ๋ฐํ์ ๊ตฌ์ฑ์์๊ฐ ๋ฐฐํฌ๋๋ Kubernetes ๋ค์์คํ์ด์ค์ ๋๋ค.
- org: Apigee ์กฐ์ง ์ด๋ฆ์ ๋๋ค.
- env: ์กฐ์ง์ ํ๊ฒฝ ์ด๋ฆ์ ๋๋ค.
- filepath: ๋ณด์ ๋น๋ฐ์ ํฌํจํ ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค. ๋ณด์ ๋น๋ฐ์ ํฌํจํ ํ์ผ์ ํ๋ ์ด์ ์ง์ ํด์ผ ํฉ๋๋ค.
- prop-file: ๋ณด์ ๋น๋ฐ์ ํฌํจํ ์์ฑ ํ์ผ์ ์ด๋ฆ์ ๋๋ค.
- key-file: ๋ณด์ ๋น๋ฐ์ ํฌํจํ TLS ํค ํ์ผ์ ์ด๋ฆ์ ๋๋ค.
- cert-file: ๋ณด์ ๋น๋ฐ์ ํฌํจํ TLS ์ธ์ฆ์ ํ์ผ์ ์ด๋ฆ์ ๋๋ค.
๋ณด์ ๋น๋ฐ์ ํ๋ ์ด์์ ํ์ผ์ ํฌํจํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
kubectl -n apigee create secret generic myorg-test-policy-secret \ --from-file="$policy_secrets_path"/credential.properties \ --from-file="$policy_secrets_path"/secrets.properties \ --from-file="$policy_secrets_path"/public.key \ --from-file="$policy_secrets_path"/fullchain.pem
์์ฑ ํ ๋ณ๊ฒฝ์ฌํญ์ด ๋ชจ๋ ํด๋ฌ์คํฐ์ ๋ฐ์๋๋ ๋ฐ ์ต๋ 90์ด๊ฐ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ๋ฉ์์ง ํ๋ก์ธ์๋ 30์ด๋ง๋ค ๋ณด์ ๋น๋ฐ ๋ณ๊ฒฝ์ ํด๋งํฉ๋๋ค. ๋ณ๊ฒฝ์ฌํญ์ด ๊ฐ์ง๋๋ฉด ์บ์๊ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
๋ณด์ ๋น๋ฐ์์ ๋ฐ์ดํฐ ๊ฒ์
๋ณด์ ๋น๋ฐ์ ๋ง๋ค๊ณ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด(์ผ๋ฐ์ ์ผ๋ก ์์ฑ ํ ์ฝ 90์ด) ๋ณด์ ๋น๋ฐ์ด ์ ์ฅ๋ ์กฐ์ง/ํ๊ฒฝ ๋ด API ํ๋ก์์ ํ๋ฆ ๋ณ์์ ์๋ ๋ณด์ ๋น๋ฐ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ณด์ ๋น๋ฐ์ ๋ค์๊ณผ ๊ฐ์ด API ํค๊ฐ ํฌํจ๋ credentials.properties
๋ผ๋ *.properties
ํ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
apikey=OrxYQptBMlY1TqmiGLTtyFiaLzzrD25Z
๊ทธ๋ฌ๋ฉด ๋ฉ์์ง ํ ๋น๊ณผ ๊ฐ์ ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ํ๋ฆ ๋ณ์์์ API ํค๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>my-apikey</Name> <Ref>private.secret.credential.properties.apikey</Ref> </AssignVariable> </AssignMessage>
Ref
์์ private.secret.credential.properties.apikey
์์ ์ฐธ์กฐ๋๋ ๋ณ์ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ณ์ ์ด๋ฆ ๋ถ๋ถ | ์ค๋ช |
---|---|
private.secret |
๋ณ์์ ๊ณ ์ ๋ ๋ค์์คํ์ด์ค์ ๋๋ค. ํ์ด๋ธ๋ฆฌ๋ ํด๋ฌ์คํฐ์ ์ ์ฅ๋ ๋ชจ๋ Kubernetes ๋ณด์ ๋น๋ฐ์ ์ด ๋ค์์คํ์ด์ค๋ฅผ ๊ณต์ ํฉ๋๋ค. |
credential.properties |
Kubernetes ๋ณด์ ๋น๋ฐ์ ์ ์ฅ๋ ํ์ผ์ ์ด๋ฆ์ ๋๋ค. |
apikey |
์์ฑ ํ์ผ์ ์ ์ฅ๋ ํค์ ์ด๋ฆ์ ๋๋ค. |
์ด ์์์์ ๋ฉ์์ง ํ ๋น ์ ์ฑ
์ apikey
๊ฐ OrxYQptBMlY1TqmiGLTtyFiaLzzrD25Z
๋ฅผ ๊ฒ์ํ๊ณ ํ๋ฆ ๋ณ์ my-apikey
์ ์ ์ฅํฉ๋๋ค.
๋ณด์ ๋น๋ฐ ์ ๋ฐ์ดํธ
kubectl
์ Kubernetes ๋ณด์ ๋น๋ฐ ์
๋ฐ์ดํธ๋ฅผ ์ง์ํ์ง ์์ผ๋ฏ๋ก ๋จผ์ ๊ธฐ์กด ๋ณด์ ๋น๋ฐ์ ์ญ์ ํ๊ณ Kubernetes ๋ณด์ ๋น๋ฐ ๋ง๋ค๊ธฐ์ ๋จ๊ณ์ ๋ฐ๋ผ ๋ค์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.