์ด ์ฃผ์ ๋ ์์์ผ ๋ฟ์ ๋๋ค. ์ธ์ฆ ๊ธฐ๊ด(CA) Let's Encrypt์์ TLS ์ธ์ฆ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด๋ฌํ ๋จ๊ณ๋ ์ฃผ๋ก CA์์ ์น์ธํ ์ธ์ฆ์/ํค ์์ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ์ ์ํํ๋ ์์์ ๋๋ค. ์ด ์์์์๋ Let's Encrypt CA, Certbot ํด๋ผ์ด์ธํธ, Google Cloud Platform Cloud DNS๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ์๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
์ด๋ฌํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ
ํด๋ฌ์คํฐ ์ธ๋ถ์ ๋ ธ์ถ๋ ๋ฐํ์ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ TLS ์ธ์ฆ์๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
์ธ๋ถ ์ฐ๊ฒฐ๋ ์ฐธ์กฐํ์ธ์.์๊ตฌ์ฌํญ
๋๋ฉ์ธ ์ด๋ฆ ๋ฑ๋ก๊ธฐ๊ด์ ํตํด ๊ฐ์ ธ์จ ๋๋ฉ์ธ ์ด๋ฆ์ด ํ์ํฉ๋๋ค. Google Domains ๋๋ ๋ค๋ฅธ ์ํ๋ ๋๋ฉ์ธ ๋ฑ๋ก๊ธฐ๊ด์ ํตํด ๋๋ฉ์ธ ์ด๋ฆ์ ๋ฑ๋กํ ์ ์์ต๋๋ค.
Cloud DNS ๊ตฌ์ฑ
์น์ธ๋ TLS ์ธ์ฆ์๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ์ ๊ทํ๋ ๋๋ฉ์ธ ์ด๋ฆ์ด ์์ด์ผ ํฉ๋๋ค. ๋ค์ ๋จ๊ณ์์๋ Google Cloud DNS๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฉ์ธ ์ด๋ฆ์ ๊ฐ์ ธ์ค๊ณ ๋๋ฉ์ธ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.- Google Cloud ์ฝ์์ ์ด๊ณ ๊ณ์ ์ ๋ก๊ทธ์ธํฉ๋๋ค.
- Apigee Hybrid๊ฐ ์ค์น๋ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
- ์์ง Cloud DNS API๋ฅผ ์ฌ์ฉ ์ค์ ํ์ง ์์์ผ๋ฉด ์ฌ์ฉ ์ค์ ํ์ธ์. API ์ฌ์ฉ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
- ๊ณ ์ IP ์ฃผ์๋ฅผ ๋ง๋ญ๋๋ค.
- GKE๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ๊ตฌ์ฑ์ ์๋ด์ ๋ฐ๋ผ ์ธ๋ถ ํ๋ก์ธ์ค๊ฐ ํ์ด๋ธ๋ฆฌ๋ ๋ฐํ์ ์ธ๊ทธ๋ ์ค์ ํต์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ณ ์ IP ์ฃผ์๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์ฃผ์์ ์ํ๋ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค(์:
apigee-hybrid-runtime
). ์๋ฃ๋๋ฉด ๋ค์ ๋จ๊ณ์ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์ IP ๋ฒํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด34.66.75.196
์ ๋๋ค. - Google Distributed Cloud๋ฅผ ์ฌ์ฉ ์ค์ธ ๊ฒฝ์ฐ IP ์ฃผ์ ๊ณํ ๋ฐ ์ฌ์ฉ์ ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ์ ์๋ด์ ๋ฐ๋ผ ๊ณ ์ IP ์ฃผ์๋ฅผ ๋ง๋ญ๋๋ค.
- GKE๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ณ ์ ์ธ๋ถ IP ์ฃผ์ ๊ตฌ์ฑ์ ์๋ด์ ๋ฐ๋ผ ์ธ๋ถ ํ๋ก์ธ์ค๊ฐ ํ์ด๋ธ๋ฆฌ๋ ๋ฐํ์ ์ธ๊ทธ๋ ์ค์ ํต์ ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ณ ์ IP ์ฃผ์๋ฅผ ๋ง๋ญ๋๋ค. ์ด ์ฃผ์์ ์ํ๋ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค(์:
- ๋ฐฉ๊ธ ์์ฝํ ์ธ๋ถ IP๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๋ฐํ์ Istio ์ธ๊ทธ๋ ์ค ์๋ํฌ์ธํธ์ ๋ ์ฝ๋ ์งํฉ์ ๋ง๋ญ๋๋ค. ์ด ์ฃผ์๋ ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ดํธ์จ์ด์ ๋ํด API ํธ์ถ์ ์ํํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ์ด์ ๋จ๊ณ์์ ๊ฐ์ ธ์จ ์ธ๋ถ IP๋ฅผ ์
๋ ฅํ๊ณ ๋๋ฉ์ธ ์ด๋ฆ์ ํ๋ฆฌํฝ์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค(์:
example-endpoint
). ์์ธํ ๋ด์ฉ์ ์ ๋ ์ฝ๋ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.- ๊ด๋ฆฌํ ๊ณต๊ฐ ์์ญ ๋ง๋ค๊ธฐ ์์ธํ ๋ด์ฉ์ ๊ด๋ฆฌํ ๊ณต๊ฐ ์์ญ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
- ๋ค์์ ์ฌ์ฉํ์ฌ ์ ๋ ์ฝ๋ ๋ชจ์์ ๋ง๋ญ๋๋ค.
- DNS ์ด๋ฆ:
api-services
๋๋example-endpoint
์ ๊ฐ์ด ์ธ๋ถ API ํธ์ถ์ด ํต์ ํ ์๋ํฌ์ธํธ์ ์ด๋ฆ์ ๋๋ค. - ๋ฆฌ์์ค ๋ ์ฝ๋ ์ ํ: A
- TTL ๋ฐ TTL: ๊ธฐ๋ณธ๊ฐ ํ์ฉ
- IP ์ฃผ์: ์์ฑํ ๊ณ ์ IP
- DNS ์ด๋ฆ:
- ์์ญ ์ธ๋ถ์ ๋ณด ๋ทฐ์๋ 4๊ฐ์ DNS ์๋ฒ๊ฐ ์ ์์ญ์ NS ๋ฐ์ดํฐ๋ก ๋์ด๋ฉ๋๋ค. ๋ค์ ์์์ ๊ฐ์ด DNS ๋ ์ฝ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํฉ๋๋ค.
- ๋ฑ๋ก๊ธฐ๊ด์ ๋๋ฉ์ธ ํ์ด์ง (์์: Google Domains)๋ก ๋์๊ฐ๋๋ค.
- ๋๋ฉ์ธ์ ์ ํํฉ๋๋ค.
- DNS๋ฅผ ์ ํํฉ๋๋ค.
- ๋ค์์๋ฒ ์น์ ์์ ์์ ์ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํฌ ์๋น์ค Cloud DNS ํ์ด์ง์์ ๋ณต์ฌํ ๋๋ฉ์ธ ์ด๋ฆ ์๋ฒ๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด์ Google Cloud DNS๊ฐ ๋๋ฉ์ธ์ DNS ๋ ์ฝ๋๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
VM์ Certbot ์ค์น
๋๋ฉ์ธ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋๋ก Cloud DNS๋ฅผ ์ค์ ํ์ผ๋ฏ๋ก ์ด์ Cloud VM์์ dns_google ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ Certbot ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ฉด Let's Encrypt ์๋ํฌ์ธํธ์์ ๋๋ฉ์ธ์ ๋ํด ์น์ธ๋ ์ธ์ฆ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- Google Cloud ์ฝ์์ ์ด๊ณ 1๋จ๊ณ: Google Cloud ๊ณ์ ๋ง๋ค๊ธฐ์์ ๋ง๋ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํฉ๋๋ค.
- 2๋จ๊ณ: Google Cloud ํ๋ก์ ํธ ๋ง๋ค๊ธฐ์์ ๋ง๋ ํ๋ก์ ํธ๋ฅผ ์ ํํฉ๋๋ค.
- IAM ๋ฐ ๊ด๋ฆฌ์ > ์๋น์ค ๊ณ์ ์ ์ ํํฉ๋๋ค.
์๋น์ค ๊ณ์ ๋ณด๊ธฐ์ ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค.
- ์ ์๋น์ค ๊ณ์ ์ ๋ง๋ค๋ ค๋ฉด ๋ทฐ ์๋จ์ ์๋ +์๋น์ค ๊ณ์ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋น์ค ๊ณ์ ์ธ๋ถ์ ๋ณด ๋ณด๊ธฐ๊ฐ ํ์๋ฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ด๋ฆ ํ๋์ ์๋น์ค ๊ณ์ ์ด๋ฆ์ ์
๋ ฅํฉ๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ์๋น์ค ๊ณ์ ์ค๋ช ํ๋์ ์ค๋ช ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ค๋ช ์ ํน์ ์๋น์ค ๊ณ์ ์ ์ฉ๋๋ฅผ ์๋ฆฌ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
Google Cloud๊ฐ ์๋ก์ด ์๋น์ค ๊ณ์ ์ ๋ง๋ค๊ณ ์๋น์ค ๊ณ์ ๊ถํ ๋ณด๊ธฐ๋ฅผ ํ์ํฉ๋๋ค. ์ด ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋น์ค ๊ณ์ ์ ์ญํ ์ ํ ๋นํฉ๋๋ค.
- ์ญํ ์ ํ ๋๋กญ๋ค์ด ๋ชฉ๋ก์ ํด๋ฆญํฉ๋๋ค.
- ํ๋ก์ ํธ ์์ ์ ์ญํ ์ ์ ํํฉ๋๋ค.
- ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
- ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- Google Cloud ์ฝ์์์ Compute Engine > VM ์ธ์คํด์ค๋ฅผ ์ ํํฉ๋๋ค.
- certmanager๋ผ๋ VM ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
- ๋ถํ ๋์คํฌ ์น์ ์์ SSD ์๊ตฌ ๋๋ผ์ด๋ธ์ CentOS7 ๋ฐ 20GB๋ฅผ ์ ํํฉ๋๋ค.
- ์๋น์ค ๊ณ์ ์ ์์์ ๋ง๋ ๊ณ์ ์ผ๋ก ์ค์ ํฉ๋๋ค.
- ๋จธ์ ์ Certbot ๋ฐ dns_google ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๊ณ Certbot ํด๋ผ์ด์ธํธ๋ฅผ ์คํํฉ๋๋ค.
sudo su -
yum -y install yum-utils
yum install certbot -y
yum install certbot-dns-google -y
certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
sudo su -
yum -y install yum-utils
yum install certbot -y
yum install certbot-dns-google -y
certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
- ์ด์
cd /etc/letsencrypt/live/your_domain_name/
๋๋ ํฐ๋ฆฌ์์ ์น์ธ๋ ์ธ์ฆ์์ ๋น๊ณต๊ฐ ํค ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค.์:
cd /etc/letsencrypt/live/apigee-hybrid-docs.net
ls
cert.pem chain.pem fullchain.pem privkey.key README fullchain.pem
ํ์ผ๊ณผprivkey.key
ํ์ผ์ ๋ก์ปฌ ๋จธ์ ์ ๋ณต์ฌํฉ๋๋ค.- ์ ํ์ฌํญ: ์ธ์ฆ์/ํค ์์ผ๋ก Kubernetes ๋ณด์ ๋น๋ฐ์ ๋ง๋ญ๋๋ค. Istio ์ธ๊ทธ๋ ์ค์์ TLS ๋ฐ mTLS ๊ตฌ์ฑ์์ ์ต์ 2: Kubernetes ๋ณด์ ๋น๋ฐ์ ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์ธ์ฆ์์ ๋น๊ณต๊ฐ ํค๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ์ฌ์ ์ ํ์ผ์ ์
๋ฐ์ดํธํฉ๋๋ค.
์:
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: my-env-group sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem" sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.key"
๋๋ Kubernetes ๋ณด์ ๋น๋ฐ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: my-env-group tlsMode: SIMPLE # Note: SIMPLE is the default, MUTUAL is also an available value. sslSecret: myorg-test-policy-secret" ...
envs
๊ตฌ์ฑ์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.์ ๋ฐ์ดํธํ ๊ฐ ํ๊ฒฝ์ ๋ํ helm ์ ๊ทธ๋ ์ด๋ ๋ฅผ ์คํํฉ๋๋ค.helm upgrade ENV_NAME apigee-env/ \ --namespace apigee \ --set env=ENV_NAME \ --atomic \ -f OVERRIDES_FILE.yaml
๊ตฌ์ฑ ํ ์คํธ
ํ๋ก์๋ฅผ ๋ฐฐํฌํ๊ณ ํ ์คํธํฉ๋๋ค. ์ฒซ ๋ฒ์งธ API ํ๋ก์ ๋น๋ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.