Apigee Hybrid ๋ฒ์ 1.8๋ถํฐ Apigee Hybrid๋ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ Hybrid์ฉ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ
overrides.yaml
์์ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ตฌ๋ฌธ
ingressGateways: - name: INGRESS_NAME replicaCountMin: REPLICAS_MIN replicaCountMax: REPLICAS_MAX resources: requests: cpu: CPU_COUNT_REQ memory: MEMORY_REQ limits: cpu: CPU_COUNT_LIMIT memory: MEMORY_LIMIT svcAnnotations: # optional. SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE svcLoadBalancerIP: SVC_LOAD_BALANCER_IP # optional
์
ingressGateways: - name: prod1 replicaCountMin: 2 replicaCountMax: 100 resources: requests: cpu: 1 memory: 1Gi limits: cpu: 2 memory: 2Gi svcAnnotations: # optional. See Known issue 243599452. networking.gke.io/load-balancer-type: "Internal" svcLoadBalancerIP: 198.252.0.123
- INGRESS_NAME์ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ์ด๋ฆ์
๋๋ค. ๋ค์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋ ์ด๋ฆ์ด๋ฉด ๋ฉ๋๋ค.
- ์ต๋ ๊ธธ์ด๋ 17์(์๋ฌธ ๊ธฐ์ค)์ ๋๋ค.
- ์๋ฌธ์ ์์ซ์ ๋ฌธ์, '-' ๋๋ '.'๋ง ํฌํจํด์ผ ํฉ๋๋ค.
- ์์ซ์ ๋ฌธ์๋ก ์์ํด์ผ ํฉ๋๋ค.
- ์์ซ์ ๋ฌธ์๋ก ๋๋์ผ ํฉ๋๋ค.
๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ๋
ingressGateways[].name
์ ์ฐธ์กฐํ์ธ์. - REPLICAS_MIN ๋ฐ REPLICAS_MAX: ์ค์น์์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ์ต์ ๋ฐ ์ต๋ ๋ณต์ ๋ณธ ์์
๋๋ค. ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์
ingressGateways[].replicaCountMin
๋ฐingressGateways[].replicaCountMax
๋ฅผ ์ฐธ์กฐํ์ธ์. - CPU_COUNT_REQ ๋ฐ MEMORY_REQ: ์ค์น์์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ๊ฐ ๋ณต์ ๋ณธ์ ๋ํ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์
๋๋ค.
๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์
ingressGateways[].resources.requests.cpu
๋ฐingressGateways[].resources.requests.memory
๋ฅผ ์ฐธ์กฐํ์ธ์. - CPU_COUNT_LIMIT ๋ฐ MEMORY_LIMIT: ์ค์น์์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ๊ฐ ๋ณต์ ๋ณธ์ ๋ํ ์ต๋ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ํ๋์
๋๋ค.
๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์
ingressGateways[].resources.limits.cpu
๋ฐingressGateways[].resources.limits.memory
๋ฅผ ์ฐธ์กฐํ์ธ์. - SVC_ANNOTATIONS_KEY SVC_ANNOTATIONS_VALUE(์ ํ์ฌํญ):
๊ธฐ๋ณธ ์ธ๊ทธ๋ ์ค ์๋น์ค์ ์ฃผ์์ ์ ๊ณตํ๋ ํค-๊ฐ ์์ ๋๋ค. ์ฃผ์์ ๋ถํ๋ถ์ฐ๊ธฐ ์ ํ์ ๋ด๋ถ ๋๋ ์ธ๋ถ๋ก ์ค์ ํ๋ ๋ฑ, ํด๋ผ์ฐ๋ ํ๋ซํผ์์ ํ์ด๋ธ๋ฆฌ๋ ์ค์น๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ingressGateways: svcAnnotations: networking.gke.io/load-balancer-type: "Internal"
์ฃผ์์ ํ๋ซํผ๋ง๋ค ๋ค๋ฆ ๋๋ค. ํ์ ๋ฐ ์ถ์ฒ ์ฃผ์์ ํ๋ซํผ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ingressGateways[].svcAnnotations
๋ฅผ ์ฐธ์กฐํ์ธ์. - SVC_LOAD_BALANCER_IP(์ ํ์ฌํญ): ๋ถํ ๋ถ์ฐ๊ธฐ IP ์ฃผ์ ์ง์ ์ ์ง์ํ๋ ํ๋ซํผ์์ ์ด IP ์ฃผ์๋ก ๋ถํ ๋ถ์ฐ๊ธฐ๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ถํ ๋ถ์ฐ๊ธฐ IP๋ฅผ ์ง์ ํ ์ ์๋ ํ๋ซํผ์์ ์ด ์์ฑ์ ๋ฌด์๋ฉ๋๋ค.
๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์
ingressGateways[].svcLoadBalancerIP
๋ฅผ ์ฐธ์กฐํ์ธ์.
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ ์ ์ฉ
apigeectl
์ ์ฌ์ฉํ์ฌ ์กฐ์ง ๋ฒ์์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --org
๊ด๋ฆฌ ์์
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ๋ํ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๊ด๋ฆฌ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ASM์ ๊ตฌ์ฑ ์ ๊ณต ์ค์ง
Apigee Hybrid v1.8๋ก ์ ๊ทธ๋ ์ด๋ํ๊ณ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ก ํธ๋ํฝ์ ๋ง์ด๊ทธ๋ ์ด์ ํ ํ Anthos Service Mesh์ ๋ํ ๋ผ์ฐํ ๊ตฌ์ฑ ์ ๊ณต์ ์ค์งํ ์ ์์ต๋๋ค.
-
API ์๋ฒ์์ Anthos Service Mesh CR ๊ฐ์ฒด ์ ๋ฐ์ดํธ๋ฅผ ์ค์งํ๋ ค๋ฉด Apigee ์ปจํธ๋กค๋ฌ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ฌ์ ์ ํ์ผ์์ ๋ค์์ ์ค์ ํฉ๋๋ค.
ao: args: disableIstioConfigInAPIServer: true
- ์ด์ ๋ช
๋ น์ด๋ก ์ปจํธ๋กค๋ฌ๊ฐ ์ฌ์์๋์์ผ๋ฏ๋ก ๋ค์ ๋ช
๋ น์ด๋ก ๋ฐฐํฌ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
-
virtualhosts
๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ๋ชจ๋ ๊ฐ์ ํธ์คํธ์๋ ๊ฐapp: apigee-ingressgateway
๊ฐ ์๋app
์ ํ๊ธฐ ๋ผ๋ฒจ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด ๋ณ๊ฒฝ์ฌํญ์ผ๋ก ์ธํด Anthos Service Mesh ๊ฒ์ดํธ์จ์ด๋ Apigee ๋ผ์ฐํ ๊ตฌ์ฑ์ ์ฝ์ ์ ์์ต๋๋ค.๊ฐ ๊ฐ์ ํธ์คํธ์์ ๋ค์๊ณผ ๊ฐ์ด
selector
์์ฑ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฐ๊ฟ๋๋ค.virtualhosts: - name: ENV_GROUP selector: app: apigee-ingressgateway # required ...
๊ตฌ์ฑ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์
virtualhosts.selector
๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ตฌ์ฑ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ao
๋ฅผ ์ฐธ์กฐํ์ธ์.
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ํ์ฅ
์ฌ์ ์ ํ์ผ์ ๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
ingressGateways[].replicaCountMax
ingressGateways[].replicaCountMin
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ingressGateways
๋ฅผ ์ฐธ์กฐํ์ธ์.
apigeectl apply --org
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
๋ฆฌ์์ค ํ ๋น ์ ๋ฐ์ดํธ
์ฌ์ ์ ํ์ผ์ ๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
ingressGateways[].resources.limits.cpu
ingressGateways[].resources.limits.memory
ingressGateways[].resources.requests.cpu
ingressGateways[].resources.requests.memory
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ingressGateways
๋ฅผ ์ฐธ์กฐํ์ธ์.
apigeectl apply --org
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์๋น์ค ์ ๋ฐ์ดํธ
์ฌ์ ์ ํ์ผ์ ๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
ingressGateways[].svcAnnotations
ingressGateways[].svcLoadBalancerIP
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ingressGateways
๋ฅผ ์ฐธ์กฐํ์ธ์.
apigeectl apply --org
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
๊ธฐ๋ณธ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์๋น์ค์ ๋ํด ๋ถํ ๋ถ์ฐ๊ธฐ ์ฌ์ฉ ์ค์ง
์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ์ฌ์ฉ๋๋ ์ปค์คํ
Kubernetes ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ Kubernetes ์๋น์ค์์ ๋ถํ ๋ถ์ฐ๊ธฐ ์์ฑ์ ์ฌ์ฉ ์ค์งํ ์ ์์ต๋๋ค. ์ฌ์ ์ ํ์ผ์์ ingressGateways[].svcType
์์ฑ์ ClusterIP
๋ก ์
๋ฐ์ดํธํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ingressGateways: - name: my-ingress-gateway replicaCountMin: 2 replicaCountMax: 10 svcType: ClusterIP
apigeectl apply --org
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
TLS ๋ฐ mTLS ๊ตฌ์ฑ
์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ TLS ๋ฐ mTLS ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
SNI ์ด์ธ์ ํด๋ผ์ด์ธํธ ์ฌ์ฉ ์ค์
SNI ์ด์ธ์ ํด๋ผ์ด์ธํธ์ HTTP ํด๋ผ์ด์ธํธ ์ฌ์ฉ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
์ถ๊ฐ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์ค์น
overrides.yaml
ํ์ผ์์ ์ฌ๋ฌ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ingressGateways
๊ตฌ์ฑ ์์ฑ์ ๋ฐฐ์ด์
๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ingressGateways๋ฅผ ์ฐธ์กฐํ์ธ์.
์:
ingressGateways: - name: fruit replicaCountMin: 2 replicaCountMax: 10 - name: meat replicaCountMin: 2 replicaCountMax: 10
apigeectl apply --org
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
Apigee ์ธ๊ทธ๋ ์ค๋ฅผ ๊ฐ์ ํธ์คํธ์ ํ๊ฒํ
๋ผ๋ฒจ์ด ์ง์ ๋ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ ์ ํ์ผ์ ํน์ ๊ฐ์ ํธ์คํธ๋ก ํ๊ฒํ
ํ ์ ์์ต๋๋ค.
์ด ๊ตฌ์ฑ์ Apigee์์ ๊ฐ์ ํธ์คํธ ๊ตฌ์ฑ์ ์ ์ฉํ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ง์ ํฉ๋๋ค. ๋ค์ ์์์์ ๊ฐ์ ํธ์คํธ spam-vh
๋ meat
๋ผ๋ฒจ์ด ์ง์ ๋ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋๊ณ ๋ค๋ฅธ ๋ ๊ฐ์ ํธ์คํธ๋ fruit
์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ถ๊ฐ Anthos Service Mesh ๊ฒ์ดํธ์จ์ด ์ค์น์ ์ค๋ช
๋ ๋๋ก ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ๋ผ๋ฒจ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํด์ผ ํฉ๋๋ค.
virtualhosts: - name: spam-vh sslCertPath: cert-spam.crt sslKeyPath: cert-spam.key selector: app: apigee-ingressgateway ingress_name: meat - name: banana-vh sslCertPath: cert-banana.crt sslKeyPath: cert-banana.key selector: app: apigee-ingressgateway ingress_name: fruit - name: plum-vh sslCertPath: cert-plum.crt sslKeyPath: cert-plum.key selector: app: apigee-ingressgateway ingress_name: fruit
FAQ
- ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ์๋ ๊ธฐ์กด Anthos Service Mesh/Istio ์ค์น์์ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์?
- Apigee๊ฐ ์ ์ฉ ๋ค์์คํ์ด์ค์ ์ค์น๋์ด ์๋ ํ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ํด๋ฌ์คํฐ์ ์ด๋ฏธ ์๋ Anthos Service Mesh/Istio ์ค์น์ ํจ๊ป ์คํํ ์ ์์ต๋๋ค. Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ apiserver์ ๊ตฌ์ฑ์ ์ ์ฅํ์ง ์์ผ๋ฏ๋ก ์ถฉ๋์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
- Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ์์๋ฅผ ์ ๊ทธ๋ ์ด๋ํด์ผ ํ๋ ์ฌ๋์ ๋๊ตฌ์ธ๊ฐ์?
- Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ์์ ์ ๊ทธ๋ ์ด๋๋ Apigee์์ ์ฒ๋ฆฌ๋๋ฉฐ ์ ๊ธฐ์ ์ธ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทธ๋ ์ด๋ ๋ฐ ํจ์น ์ถ์ ์ค์ ์ํ๋ฉ๋๋ค.
- Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ํฌํธ 80์ ๋ ธ์ถํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
- ํฌํธ 80์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ์ง์๋์ง ์์ต๋๋ค. Anthos Service Mesh์์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์ปค๋ฎค๋ํฐ ๊ฒ์๋ฌผ์ ์๋ด์ ๋ฐ๋ผ ํฌํธ 80์ ์ฌ์ฉ ์ค์ ํ๋ฉด Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ์๋ํ์ง ์์ต๋๋ค.