ํ๊ฒฝ์ API ํ๋ก์๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฒฉ๋ฆฌ๋ ์ปจํ ์คํธ ๋๋ '์๋๋ฐ์ค'๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋จ์ผ ์กฐ์ง์์ ์ฌ๋ฌ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ค์ ์ฝ๋์์๋ ์ฌ๋ฌ ํ๊ฒฝ์ด ์ ์๋ ์ฌ์ ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
namespace: my-namespace org: my-organization ... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json - name: prod serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json ...
๊ธฐ๋ณธ ๊ฒฝ๋ก๊ฐ /foo1
์ธ ํ๋ก์๊ฐ ํ๊ฒฝ test์ ๋ฐฐํฌ๋์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํ๋ก์๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
curl -k https://api.example.com/foo1
์ด ํธ์ถ์ด ์ธ๊ทธ๋ ์ค์ ๋๋ฌํ๋ฉด ์ธ๊ทธ๋ ์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ test
ํ๊ฒฝ๊ณผ ์ฐ๊ฒฐ๋ ๋ฉ์์ง ํ๋ก์ธ์๋ก ์ด๋ฅผ ์ ์กํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก foo1
๋ prod
ํ๊ฒฝ์ ๋ฐฐํฌ๋ ๊ฒฝ์ฐ ํธ์คํธ ๋ณ์นญ apiprod.mydomain.net
์ ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
curl -k https://apiprod.example.com/foo1
๊ทธ๋ฌ๋ฉด ์ธ๊ทธ๋ ์ค๊ฐ ์ด ํธ์คํธ์ ์ฐ๊ฒฐ๋ MP๋ก ๋ผ์ฐํ ๋ฉ๋๋ค.
Antipattern: ๋ชจ๋ ํ๋ก์๋ฅผ ํ๋์ ํ์ด๋ธ๋ฆฌ๋ ํ๊ฒฝ์ ๋ฐฐํฌํฉ๋๋ค.
๊ถ์ฅ์ฌํญ: ์ฌ๋ฌ ํ๊ฒฝ์ ๋ง๋ค๊ณ ๊ฐ ํ๊ฒฝ์ ์ ํ๋ ์์ ํ๋ก์๋ฅผ ๋ฐฐํฌํ์ธ์.
ํ๋ก์ ๋ฐฐํฌ ์ ์ ํ
ํ์ด๋ธ๋ฆฌ๋์ ๊ฒฝ์ฐ ๋ง์ ํ๊ฒฝ์์ ํ๊ฒฝ ๊ทธ๋ฃน์ ์ ์๋ ๊ฒ๊ณผ ๋์ผํ ๊ฐ์ ํธ์คํธ๋ฅผ ๊ณต์ ํ ์ ์์ผ๋ฏ๋ก ํน์ ํ๊ฒฝ์ ๋ํ ํ๋ก์ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์คํ๊ฒ ์๊ฐํด์ผ ํฉ๋๋ค. ํ์ด๋ธ๋ฆฌ๋์์ ๊ถ์ฅ์ฌํญ์ ์ฌ๋ฌ ํ๊ฒฝ์ ๋ง๋ค๊ณ ๊ฐ ํ๊ฒฝ์ ์ ํ๋ ์์ ํ๋ก์๋ฅผ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค.
ํ๊ฒฝ์ ๋ช ๊ฐ์ ํ๋ก์๋ฅผ ๋ฐฐํฌํด์ผ ํ๋์? ์ด ์ง๋ฌธ์ ๋ํ ๋ต๋ณ ์งํฉ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ค์ ํ์์ ๊ฐ ํ๊ฒฝ์ ๋ฐฐํฌ๋ ํ๋ก์์ ์๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ ์ด์ ์ ํ๋ก์ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ ๋ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ ๋ํ ์ผ๋ฐ์ ์ธ ์๋ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ณ ๋ คํ ๋ฌธ์ | ์ค๋ช |
---|---|
๋ฉ์์ง ํ๋ก์ธ์ ๋ถํ ์๊ฐ | ๋ฉ์์ง ํ๋ก์ธ์(MP)์ ๋ถํ ์ ์์๋๋ ์๊ฐ๊ณผ ํด๋น MP์ ๋ฐฐํฌ๋ ํ๋ก์ ์ ์ฌ์ด์๋ ์ง์ ์ ์ธ ์๊ด๊ด๊ณ๊ฐ ์์ต๋๋ค. ์๋ ํ์ฅ Kubernetes ํ๊ฒฝ์์ ๋ถํ ์๊ฐ์ด ๋์ด๋๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. MP์ ๋ฐฐํฌ๋๋ ํ๋ก์๊ฐ ๋ง์์๋ก ํ์ฅ์ด๋ ๋ค์ ๋ง๋ค๊ธฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ MP๊ฐ ์ค๋น๋ ๋๊น์ง ๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. |
ํ์ฅ ์ฑ๋ฅ | ํ๊ฒฝ์ ๋ฐฐํฌ๋ ํ๋ก์๊ฐ ์ฌ๋ฌ ๊ฐ ์๊ณ ํ๋ก์ ์ค ํ๋๊ฐ ํธ๋ํฝ์ด ๋ง์ ๋น๋ฒํ๊ฒ ์๋ ํ์ฅ๋๋ ๊ฒฝ์ฐ, ํด๋น ํ๊ฒฝ์ ๋ชจ๋ ํ๋ก์๊ฐ ์ด ํ๋ก์์ ํจ๊ป ํ์ฅ๋ฉ๋๋ค. ํธ๋ํฝ์ด ๋ง์ ๋จ์ผ ํ๋ก์๊ฐ ํฌํจ๋ ๋ณต์์ ํ๋ก์ ํ์ฅ์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค. |
ํธ๋ํฝ ๋ง์ ์ด์ | ๋์ผํ ํ๊ฒฝ์ ์ฌ๋ฌ ํ๋ก์๊ฐ ๋ฐฐํฌ๋์ด ์๊ณ ํ๋์ ํ๋ก์๊ฐ ๋น์ ์ ์ข ๋ฃ๋๋ฉด MP๊ฐ ๋ค์ ์์๋๋ ๋์ ํ๊ฒฝ์ ๋ชจ๋ ํ๋ก์๊ฐ ๋ค์ด๋ฉ๋๋ค. ํ๊ฒฝ์ ๋ฐฐํฌ๋ ํ๋ก์ ์๋ฅผ ์ ํํ์ฌ ๋จ์ผ ํ๋ก์ ๋น์ ์ ์ข ๋ฃ์ ์ํฅ์ ์ต์ํํ ์ ์์ต๋๋ค. |
ํ๊ฒฝ ๊ทธ๋ฃน ๋ฐ virtualhost
ํ๊ฒฝ ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ฉด ํ๊ฒฝ์ ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค. ๊ฐ ๊ทธ๋ฃน ๋ด ํ๊ฒฝ์ ๋์ผํ ํธ์คํธ ์ด๋ฆ์ ๊ณต์ ํฉ๋๋ค. ๋ฉํฐ ๋ฆฌ์ ํ์ด๋ธ๋ฆฌ๋ ์ค์น๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ ํ๊ฒฝ์ ํจ์, ํธ์คํธ ์ด๋ฆ ์ฃผ์, ๋ฆฌ์ ๋ณ๋ก ๋๋ ์ํ๋ ๋ค๋ฅธ ์ธก์ ํญ๋ชฉ์ผ๋ก ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค.
๋ผ์ฐํ ์ ํ๊ฒฝ ๊ทธ๋ฃน ํธ์คํธ ์ด๋ฆ, API ํ๋ก์ ๊ธฐ๋ณธ ๊ฒฝ๋ก, ํ๊ฒฝ์ ์กฐํฉ์ผ๋ก ๊ด๋ฆฌ๋๋ฏ๋ก ๊ฐ ๊ฐ์ ํธ์คํธ๋ ํ๊ฒฝ ๊ทธ๋ฃน ์ด๋ฆ๊ณผ ํด๋น ์ธ์ฆ์๋ง ๋์ดํ๋ฉด ๋ฉ๋๋ค.
๋ค์ ์ฝ๋์์๋ ์ฌ๋ฌ virtualhost๊ฐ ์ ์๋ ์ฌ์ ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค. virtualhost์ ์ด๋ฆ์ ํ๊ฒฝ ๊ทธ๋ฃน ์ด๋ฆ์ด์ด์ผ ํฉ๋๋ค.
gcp: region: us-central1 projectID: hybrid-example k8sCluster: name: apigee-hybrid region: us-central1 org: hybrid-example instanceID: "my_hybrid_example" virtualhosts: - name: group-1 # the name of an environment group sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key virtualhosts: - name: group-2 sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key ...
์ถ๊ฐ ๋ฆฌ์์ค
- ํ๊ฒฝ ๋ฐ ํ๊ฒฝ ๊ทธ๋ฃน ์ ๋ณด
- ํ๊ฒฝ ๊ด๋ฆฌ
- ํ๊ฒฝ ๊ทธ๋ฃน ๊ด๋ฆฌ
- ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ
- ๊ฐ์ ํธ์คํธ ๊ตฌ์ฑ