์ด ์ฃผ์ ์์๋ ๋ ๋ฒ์งธ Apigee Hybrid ์กฐ์ง์ ๊ธฐ์กด Kubernetes ํด๋ฌ์คํฐ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ๋ฉํฐ ์กฐ์ง ๊ตฌ์ฑ์์๋ ๋ ์กฐ์ง ๋ชจ๋ ๊ฐ์ Cassandra ๋ง์ ์ฌ์ฉํ๊ณ ๊ณต์ ํฉ๋๋ค. ์กฐ์ง๋ง๋ค ์ฌ๋ฌ ํ๊ฒฝ ๋ฐ ํ๊ฒฝ ๊ทธ๋ฃน์ด ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค.
์ ํ์ฌํญ
ํด๋ฌ์คํฐ๋ณ ๋ค์ค ์กฐ์ง ๊ตฌ์ฑ์ ๋ค์ ์ ํ ์ฌํญ๊ณผ ํจ๊ป ์ง์๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ฌํญ์ด ์ํ๋ ๋๊น์ง ์ด ๊ตฌ์ฑ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
- Apigee Hybrid ์ธ์คํด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๋ ค๋ฉด ์ธ์คํด์ค๋ง๋ค ๊ณ ์ ํ ํด๋ฌ์คํฐ๊ฐ ์์ด์ผ ํฉ๋๋ค. ๋์ผํ Kubernetes ํด๋ฌ์คํฐ์์ ์คํ๋๋ ์ฌ๋ฌ Apigee Hybrid ์ธ์คํด์ค์์๋ ๋ถ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ๋ค์ดํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ํฌ๋์ ๋ชจ๋ ๋ก๊น
์ ๊ตฌ์ฑ๋ ์ฒซ ๋ฒ์งธ Google Cloud ํ๋ก์ ํธ๋ก ์ ์ก๋ฉ๋๋ค. ์ด๋ฌํ ์ ํ์ Cloud Logging ๋๊ตฌ์์ ๊ฐ์ฅ ๋๋๋ฌ์ง๋๋ค. ๋ค๋ฅธ Apigee ์กฐ์ง์ ๋ก๊ทธ๋ ์ผ์นํ๋ Google Cloud ํ๋ก์ ํธ๋ก ์ ์ก๋์ง ์์ต๋๋ค. ๋ก๊ทธ๋ ๊ณ์ ํฌ๋ ์์ค์์ ์บก์ฒ๋๋ฉฐ
kubectl
๋ช ๋ น์ด๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ํ์ง๋ง Cloud Logging์ ํตํด ์ฌ๋ฐ๋ฅธ Cloud ํ๋ก์ ํธ๋ก ์ ์ก๋์ง ์์ต๋๋ค. - ์กฐ์ง ํ๋์ Cassandra ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์กฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค. ์ฆ, ์กฐ์ง์ ์ ํ์ ์ผ๋ก ์ญ์ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ฑ์ ์์ ํ๋ฉด ํด๋น ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ ๋ชจ๋ ์กฐ์ง์ด ์ํฅ์ ๋ฐ์ต๋๋ค.
- ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทธ๋ ์ด๋ ์ ์ฐจ๋ ์ ์ฒด ํด๋ฌ์คํฐ๋ฅผ ํ ๋ฒ์ ๋ชจ๋ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
- ๋ฐฑ์ ๊ณผ ๋ณต์์ ํด๋ฌ์คํฐ๋ก ์ํ๋๋ฉฐ ํน์ ์กฐ์ง์ ๋ํด ์ํ๋ ์ ์์ต๋๋ค.
- Apigee API ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ(ํ์๋ผ์ธ, ์ต๊ทผ, ์กฐ์ฌ)์ ๊ตฌ์ฑ ๋ฐ ๋ฐฐํฌ๋ ์ฒซ ๋ฒ์งธ ์กฐ์ง์์๋ง ์๋ํฉ๋๋ค. ๋ค์ค ์กฐ์ง ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ์กฐ์ง์์๋ ์๋ํ์ง ์์ต๋๋ค.
๋ค์ค ์กฐ์ง ์ต์
์ด ์น์ ์์๋ Apigee ์ง์ํ์์ ํฅํ ๋ฐฐํฌ๋ฅผ ์ํด ๊ธฐ์กด ๋ค์ค ์กฐ์ง ํด๋ฌ์คํฐ์ ๊ถ์ฅ์ฌํญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
- ๊ธฐ์กด ๋ฉํฐ ์กฐ์ง Kubernetes ํด๋ฌ์คํฐ๊ฐ ๋นํ๋ก๋์ ๋ฐ ํ๋ก๋์ ์ปจํ ์คํธ์ ๋ฐฐํฌ๋ ๊ฒฝ์ฐ Apigee ์ง์ํ์ ์ด๋ฅผ ๊ณ์ ์ง์ํฉ๋๋ค. ํ์ง๋ง ๋ค์ ์น์ ์์ ์ค๋ช ํ๋ ๊ธฐ์ ์ ํ์ฌํญ์ ์ ์ํ์ธ์. ํฅํ ํ๋ก๋์ ๋ฐฐํฌ๋ฅผ ๋ณ๊ฒฝํ์ฌ ํด๋ฌ์คํฐ๋น Apigee ์กฐ์ง ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋นํ๋ก๋์ ์ปจํ ์คํธ์ ๊ธฐ์กด ๋ค์ค ์กฐ์ง ํด๋ฌ์คํฐ๊ฐ ์์ผ๋ฉด Apigee ์ง์ํ์ ์ด๋ฅผ ๊ณ์ ์ง์ํฉ๋๋ค. ํ๋ก๋์ ํด๋ฌ์คํฐ๋ฅผ ํด๋ฌ์คํฐ๋น Apigee ์กฐ์ง ํ๋๋ฅผ ์ฌ์ฉํ๋ ์ ๊ตฌ์ฑ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ธฐ๋ณธ ์๊ฑด
๊ณ์ํ๊ธฐ ์ ์ ๋ค์ ์ฌํญ์ ์ ์ํ์ธ์.
- ๊ธฐ์กด ํ์ด๋ธ๋ฆฌ๋ ์กฐ์ง์ ํ๊ฒฝ์ด ํ๋ ์ด์ ์ค์น๋์ด ์๊ณ ๊ธฐ์กด Kubernetes ํด๋ฌ์คํฐ์์ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. ํ์ด๋ธ๋ฆฌ๋ ์ค์น ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
- ๋จ์ผ ํด๋ฌ์คํฐ์์ ์กฐ์ง ์ฌ๋ฌ ๊ฐ๋ฅผ ๊ฒฐํฉํ๋ฉด ํ์ด๋ธ๋ฆฌ๋ ๋ฒ์ ์ด ๋ชจ๋ ์ผ์นํด์ผ ํฉ๋๋ค. ๋ ๋ฒ์งธ ์กฐ์ง์ ํด๋ฌ์คํฐ์ ์ถ๊ฐํ๊ธฐ ์ ์ ํ์ํ ๊ฒฝ์ฐ ๊ธฐ์กด ํ์ด๋ธ๋ฆฌ๋ ์ค์น๋ฅผ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค. Apigee Hybrid ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ธฐ์กด ํด๋ฌ์คํฐ์ ์ถ๊ฐํ ์กฐ์ง ๋ง๋ค๊ธฐ
์ถ๊ฐ ์กฐ์ง์ ๋ง๋ค๋ ค๋ฉด 1๋ถ: ํ๋ก์ ํธ ๋ฐ ์กฐ์ง ์ค์ ์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
์ ์กฐ์ง ๊ตฌ์ฑ
๋ค์ ๋จ๊ณ์์๋ ์ ์ฌ์ ์ ํ์ผ์ ๋ง๋ค๊ณ ์ ์กฐ์ง์ ๋ง๊ฒ ๊ตฌ์ฑํฉ๋๋ค. overrides.yaml
ํ์ผ์์๋ ์กฐ์ง ํ๋์ ์ ๋ณด๋ง ์ง์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ overrides.yaml
ํ์ผ์ ๋ง๋ค์ด ๊ธฐ์กด Kubernetes ํด๋ฌ์คํฐ์ ์ ์ฉํด์ผ ํฉ๋๋ค.
- ์ ์กฐ์ง์์ ์ฌ์ฉํ ์๋น์ค ๊ณ์ ์ ๋ง๋ญ๋๋ค. ์๋น์ค ๊ณ์ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
certs
๋๋ ํฐ๋ฆฌ์ TLS ์ธ์ฆ์ ํ์ผ(.key
๋ฐ.pem
)์ ๊ธฐ๋กํด ๋ก๋๋ค. ์ธ์ฆ์๋ฅผ ๋ค์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ TLS ์ธ์ฆ์ ๋ง๋ค๊ธฐ์ ์๋ด๋ฅผ ๋ฐ๋ฅด๋ฉด ๋ฉ๋๋ค.- ๊ธฐ์กด
overrides.yaml
์ ์ ํ์ผ์ ๋ณต์ฌํ์ฌ ์ ์กฐ์ง์ ๊ตฌ์ฑํ๊ธฐ ์ํ ์์์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉดnew-overrides.yaml
์ ๋๋ค. - ๋ค์ ๊ตฌ์ฑ์ผ๋ก ์ ์ฌ์ ์ ํ์ผ์ ์์ ํฉ๋๋ค.
org: "new-org-name" instanceID: "instance-id" ## Must match the instanceID of your existing org. multiOrgCluster: true ## Enables exporting metrics for this org to the Google Cloud Project named with gcp:projectID k8sCluster: name: "existing-cluster-name" region: "existing-cluster-analytics-region" gcp: projectID: "new-project-id" name: "new-project-id" region: "new-project-default-location" namespace: namespace ## must be the same for both new and existing orgs virtualhosts: - name: new-environment-group-name sslCertPath: ./certs/cert-file-name # .crt or .pem sslKeyPath: ./certs/key-file-name # .key envs: - name: new-environment-name serviceAccountPaths: runtime: ./new-service-accounts-directory/new-project-id-apigee-runtime.json synchronizer: ./new-service-accounts-directory/new-project-id-apigee-synchronizer.json udca: ./new-service-accounts-directory/new-project-id-apigee-udca.json connectAgent: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-mart.json mart: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-mart.json metrics: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-metrics.json watcher: serviceAccountPath: ./new-service-accounts-directory/new-project-id-apigee-watcher.json
๋ค์ ํ์์๋ ์ฌ์ ์ ํ์ผ์ ์ ๊ณตํด์ผ ํ๋ ๊ฐ ์์ฑ ๊ฐ์ ์ค๋ช ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ณ์ ์ค๋ช new-org-name ์ ์กฐ์ง์ ์ด๋ฆ์ ๋๋ค. instance-id ์ด ํด๋ฌ์คํฐ์ ๋ชจ๋ ์กฐ์ง์ ๋์ผํ ์ธ์คํด์ค ID๊ฐ ์์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ ์กฐ์ง์ ์ฌ์ ์ ํ์ผ์ ์๋ instanceID
ํญ๋ชฉ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.existing-cluster-name ์ด ์กฐ์ง์ ์ถ๊ฐํ ํด๋ฌ์คํฐ์ ์ด๋ฆ์ ๋๋ค. ์๋ณธ ํด๋ฌ์คํฐ์ ์ฌ์ ์ ํ์ผ์ ์๋ k8sCluster.name
ํญ๋ชฉ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.existing-cluster-analytics-region ์๋ ํด๋ฌ์คํฐ๊ฐ ํ๋ก๋น์ ๋๋ ๋ฆฌ์ ์ ๋๋ค. ์๋ณธ ํด๋ฌ์คํฐ์ ์ฌ์ ์ ํ์ผ์ ์๋ k8sCluster.region
ํญ๋ชฉ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.new-project-id ์๋ก์ด ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID์ ๋๋ค. ํ๋ก์ ํธ ID์ ์กฐ์ง ์ด๋ฆ์ ๋์ผํฉ๋๋ค. new-project-default-location ์ ์กฐ์ง์ ๋ง๋ค ๋ ์ง์ ํ ๋ถ์ ๋ฆฌ์ ์ ๋๋ค. ๊ธฐ์กด ์กฐ์ง์ ๋ฆฌ์ ๊ณผ ๋์ผํ์ง ์์๋ ๋ฉ๋๋ค. namespace ํด๋ฌ์คํฐ์ ๋ชจ๋ ์กฐ์ง์ ๊ฐ์ ๋ค์์คํ์ด์ค๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค. ์๋ ์กฐ์ง์ ์ฌ์ฉ๋ ๋ค์์คํ์ด์ค์ ๋์ผํ ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ค์์คํ์ด์ค๋ apigee
์ ๋๋ค.new-environment-group-name ์ ์กฐ์ง์ ์ํด ๋ง๋ ์ ํ๊ฒฝ ๊ทธ๋ฃน์ ๋๋ค. cert-file-name ๋ฐ
key-file-name์ด ์น์ ์ 1๋จ๊ณ์์ ํ์ธํ๊ฑฐ๋ ๋ง๋ ํด๋ฌ์คํฐ์ TLS ์ธ์ฆ์์ ํค ํ์ผ์ ๋๋ค. new-environment-name ์ ์กฐ์ง์ ์ํด ๋ง๋ ํ๊ฒฝ์ ์ด๋ฆ์ ๋๋ค. new-service-accounts-directory ์ ์กฐ์ง์ ์ํด ๋ง๋ ์๋น์ค ๊ณ์ ํค ํ์ผ์ด ์๋ ๋๋ ํฐ๋ฆฌ์ ๋๋ค.
๊ตฌ์ฑ ์ ์ฉ
์ ์กฐ์ง ๊ตฌ์ฑ์ ํด๋ฌ์คํฐ์ ์ ์ฉํฉ๋๋ค.
- ํ
์คํธ ์คํ ์ค์น๋ฅผ ์ํํ์ฌ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
apigeectl apply -f overrides/new-overrides.yaml --org --dry-run=client
- ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์กฐ์ง ์์ค ๊ตฌ์ฑ์์๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ Cassandra ์์
(์ฌ์ฉ์ ๋ฐ ์คํค๋ง), Apigee Connect, Apigee Watcher, MART ์๋น์ค๋ฅผ ์ค์นํฉ๋๋ค.
apigeectl apply -f overrides/new-overrides.yaml --org
- ํ๊ฒฝ์ ์ค์นํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ ํ๊ฒฝ๋ณ๋ก apigee-runtime, ๋๊ธฐํ ๋ด๋น์, UDCA ๊ตฌ์ฑ์์๋ฅผ ์ค์นํฉ๋๋ค.
apigeectl apply -f overrides/new-overrides.yaml --env ${ENV_NAME} --dry-run=client
apigeectl apply -f overrides/new-overrides.yaml --env ${ENV_NAME}
- ๋ถํ ๋ถ์ฐ๊ธฐ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค. ์ด ๋จ๊ณ๋ ์ธ๊ทธ๋ ์ค์์ ๋ ๋ฒ์งธ ์กฐ์ง์ ์ ๊ฐ์ ํธ์คํธ๋ฅผ ๋ฆฌ์จํ๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
apigeectl apply -f overrides/new-overrides.yaml --settings virtualhosts --dry-run=client
apigeectl apply -f overrides/new-overrides.yaml --settings virtualhosts
- ๋๊ธฐํ ๋ด๋น์ ์ก์ธ์ค ์ฌ์ฉ ์ค์ ์ ๋ค์ ๋จ๊ณ์ ๋ฐ๋ผ ์ ์กฐ์ง์ ๋ํ ๋๊ธฐํ ๋ด๋น์ ์ก์ธ์ค๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก Apigee Hybrid ๋ฐํ์์ ์ฒ์ ์ค์นํ๋ฉด
multiOrgCluster
๊ฐ ์ค์ง๋ ์ํ๋ก ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๊ฐ ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ ํด๋ฌ์คํฐ์ ์กฐ์ง๋ง๋ค ๋ค์ค ์กฐ์ง ์๊ฒฉ ๋ถ์์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๋ฅผ ์ญ์ ํฉ๋๋ค.
๋จผ์ ํ ์คํธ ์คํ์ ์ํํฉ๋๋ค.
apigeectl delete -f path-to-first-org-overrides.yaml --telemetry --dry-run=client
ํ ์คํธ ์คํ์ด ์ฑ๊ณตํ๋ฉด ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๋ฅผ ์ญ์ ํฉ๋๋ค.
apigeectl delete -f path-to-first-org-overrides.yaml --telemetry
- ๊ธฐ์กด ์กฐ์ง์
overrides.yaml
ํ์ผ์ ๋ค์ ์ค์ ์ถ๊ฐํฉ๋๋ค.multiOrgCluster: true
- ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ์ฌ ์กฐ์ง์ ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๋ฅผ ์ค์นํฉ๋๋ค.
๋จผ์ ํ ์คํธ ์คํ์ ์ํํฉ๋๋ค.
apigeectl apply -f path-to-first-org-overrides.yaml --telemetry --dry-run=client
ํ ์คํธ ์คํ์ด ์ฑ๊ณตํ๋ฉด ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๊ณ ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๋ฅผ ์ค์นํฉ๋๋ค.
apigeectl apply -f path-to-first-org-overrides.yaml --telemetry
- ๋ค์ ์ค์ด ์ ์กฐ์ง์
overrides.yaml
ํ์ผ์ ์์ด์ผ ํฉ๋๋ค.multiOrgCluster: true
- ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ์ฌ ์ ์กฐ์ง์ ๋ํด ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๋ฅผ ์ค์นํฉ๋๋ค. ๋ค์ค ์กฐ์ง ํด๋ฌ์คํฐ์ ๋ชจ๋ ์ ์กฐ์ง์ ๋ํด ์ด๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
๋จผ์ ํ ์คํธ ์คํ์ ์ํํฉ๋๋ค.
apigeectl apply -f path-to-new-org-overrides.yaml --telemetry --dry-run=client
ํ ์คํธ ์คํ์ด ์ฑ๊ณตํ๋ฉด ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๊ณ ๊ตฌ์ฑ์์๋ฅผ ์ค์นํฉ๋๋ค.
apigeectl apply -f path-to-new-org-overrides.yaml --telemetry
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์๊ฒฉ ๋ถ์ ๊ตฌ์ฑ์์๋ฅผ ์ญ์ ํฉ๋๋ค.