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(์ ํ์ฌํญ):
๊ธฐ๋ณธ ์ธ๊ทธ๋ ์ค ์๋น์ค์ ์ฃผ์์ ์ ๊ณตํ๋ ํค-๊ฐ ์์ ๋๋ค. ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์ฃผ์์ ์ฌ์ฉํ์ฌ loadbalancer ์ ํ์ ๋ด๋ถ ๋๋ ์ธ๋ถ๋ก ์ค์ ํ๋ ๋ฑ ํ์ด๋ธ๋ฆฌ๋ ์ค์น๋ฅผ ๊ตฌ์ฑํ๋๋ก ๋์์ค๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ingressGateways: svcAnnotations: networking.gke.io/load-balancer-type: "Internal"
์ฃผ์์ ํ๋ซํผ๋ง๋ค ๋ค๋ฆ ๋๋ค. ํ์ ๋ฐ ์ถ์ฒ ์ฃผ์์ ํ๋ซํผ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ingressGateways[].svcAnnotations
๋ฅผ ์ฐธ์กฐํ์ธ์. - SVC_LOAD_BALANCER_IP(์ ํ์ฌํญ): ๋ถํ ๋ถ์ฐ๊ธฐ IP ์ฃผ์ ์ง์ ์ ์ง์ํ๋ ํ๋ซํผ์์ ์ด IP ์ฃผ์๋ก ๋ถํ ๋ถ์ฐ๊ธฐ๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ถํ ๋ถ์ฐ๊ธฐ IP๋ฅผ ์ง์ ํ ์ ์๋ ํ๋ซํผ์์ ์ด ์์ฑ์ ๋ฌด์๋ฉ๋๋ค.
๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์
ingressGateways[].svcLoadBalancerIP
๋ฅผ ์ฐธ์กฐํ์ธ์.
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ ์ ์ฉ
์กฐ์ง ๋ฒ์์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
๊ด๋ฆฌ ์์
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ๋ํ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๊ด๋ฆฌ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ํ์ฅ
์ฌ์ ์ ํ์ผ์ ๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
ingressGateways[].replicaCountMax
ingressGateways[].replicaCountMin
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ingressGateways
๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
๋ฆฌ์์ค ํ ๋น ์ ๋ฐ์ดํธ
์ฌ์ ์ ํ์ผ์ ๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
ingressGateways[].resources.limits.cpu
ingressGateways[].resources.limits.memory
ingressGateways[].resources.requests.cpu
ingressGateways[].resources.requests.memory
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ingressGateways
๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์๋น์ค ์ ๋ฐ์ดํธ
์ฌ์ ์ ํ์ผ์ ๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
ingressGateways[].svcAnnotations
ingressGateways[].svcLoadBalancerIP
์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์์ฑ ์ฐธ์กฐ์ ingressGateways
๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
๊ธฐ๋ณธ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์๋น์ค์ ๋ํด loadbalancer ์ฌ์ฉ ์ค์ง
์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ์ฌ์ฉ๋๋ ์ปค์คํ
Kubernetes ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ Kubernetes ์๋น์ค์์ ๋ถํ ๋ถ์ฐ๊ธฐ ์์ฑ์ ์ฌ์ฉ ์ค์งํ ์ ์์ต๋๋ค. ์ฌ์ ์ ํ์ผ์์ ingressGateways[].svcType
์์ฑ์ ClusterIP
๋ก ์
๋ฐ์ดํธํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ingressGateways: - name: my-ingress-gateway replicaCountMin: 2 replicaCountMax: 10 svcType: ClusterIP
๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
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
๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
helm upgrade ORG_NAME apigee-org/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
๊ฐ์ ํธ์คํธ๋ฅผ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ๋งคํ
์ ํ๊ธฐ ๋ผ๋ฒจ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ํธ์คํธ๋ฅผ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ๋งคํํ ์ ์์ต๋๋ค. ๋ค์ ์์์์ ๊ฐ์ ํธ์คํธ spam-vh
๋ meat
๋ผ๋ฒจ์ด ์ง์ ๋ ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ์คํ๋๊ณ ๋ค๋ฅธ ๋ ๊ฐ์ ํธ์คํธ๋ fruit
์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ์คํ๋๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ถ๊ฐ Cloud 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
Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ์ปค์คํ ์ํธ ๋ชจ์ ์ถ๊ฐ
์ฌ์ ์ ํ์ผ์ virtualhosts.cipherSuites
์์ฑ์ ์ฌ์ฉํ์ฌ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ์ปค์คํ
์ํธ ๋ชจ์์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
Apigee Hybrid์์ ์ฌ์ฉ ์ค์ ๋ ๊ธฐ๋ณธ ์ํธ ๋ชจ์์ virtualhosts.cipherSuites
๋ฅผ ์ฐธ์กฐํ์ธ์.
virtualhosts.minTLSProtocolVersion
์์ฑ์ผ๋ก ์ด์ ๋ฒ์ ์ TLS๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ณ ์ฌ์ ์ ํ์ผ์ virtualhosts.cipherSuites
์์ฑ์ ์ฌ์ฉํ์ฌ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ฐฐํฌ์ ์ปค์คํ
์ํธ ๋ชจ์์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด TLS v.1.1์ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
virtualhosts: - name: ENV_GROUP_NAME minTLSProtocolVersion: "1.1" cipherSuites: - "ECDHE-ECDSA-AES128-GCM-SHA256" - "ECDHE-RSA-AES128-GCM-SHA256" - "ECDHE-ECDSA-AES256-GCM-SHA384" - "ECDHE-RSA-AES256-GCM-SHA384" - "ECDHE-ECDSA-CHACHA20-POLY1305" - "ECDHE-RSA-CHACHA20-POLY1305" - "ECDHE-ECDSA-AES128-SHA" - "ECDHE-RSA-AES128-SHA" - "ECDHE-ECDSA-AES256-SHA" - "ECDHE-RSA-AES256-SHA" ...
์ธ๊ทธ๋ ์ค ์ก์ธ์ค ๋ก๊ทธ ๋ง์ถค์ค์
istiod.accessLogFile
๋ฐ istiod.accessLogFormat
๊ตฌ์ฑ ์์ฑ์ ์ฌ์ฉํ์ฌ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์ก์ธ์ค ๋ก๊ทธ ๋์ ๋ฐ ํ์์ ๋ง์ถค์ค์ ํ ์ ์์ต๋๋ค. ๋ค์ ์์์์๋ ์ถ๋ ฅ์ด istiod.accessLogFile
์ ๊ธฐ๋ณธ๊ฐ์ธ /dev/stdout
๋ก ์ ์ก๋ฉ๋๋ค.
istiod: accessLogFormat: '{"request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","status":"%RESPONSE_CODE%"}'
istiod.accessLogFile
๋ฐ ๋น ๊ฐ์ ํ ๋นํ์ฌ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ์ก์ธ์ค ๋ก๊น
์ ์ฌ์ฉ ์ค์งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
istiod: accessLogFile: ''
FAQ
- ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ์๋ ๊ธฐ์กด Cloud Service Mesh/Istio ์ค์น์์ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์?
- Apigee๊ฐ ์ ์ฉ ๋ค์์คํ์ด์ค์ ์ค์น๋์ด ์๋ ํ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ ํด๋ฌ์คํฐ์ ์ด๋ฏธ ์๋ Cloud Service Mesh/Istio ์ค์น์ ํจ๊ป ์คํํ ์ ์์ต๋๋ค. Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ apiserver์ ๊ตฌ์ฑ์ ์ ์ฅํ์ง ์์ผ๋ฏ๋ก ์ถฉ๋์ด ๋ฐ์ํ์ง ์์ต๋๋ค.
- Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ์์๋ฅผ ์ ๊ทธ๋ ์ด๋ํด์ผ ํ๋ ์ฌ๋์ ๋๊ตฌ์ธ๊ฐ์?
- Apigee๋ ์ ๊ธฐ์ ์ธ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทธ๋ ์ด๋ ๋ฐ ํจ์น ์ถ์ ์ค์ ๋ฐ์ํ๋ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๊ตฌ์ฑ์์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์ ๋ํ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
- Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ํฌํธ 80์ ๋ ธ์ถํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
- ํฌํธ 80์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ์ง์๋์ง ์์ต๋๋ค. Cloud Service Mesh์์ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์ปค๋ฎค๋ํฐ ๊ฒ์๋ฌผ์ ์๋ด์ ๋ฐ๋ผ ํฌํธ 80์ ์ฌ์ฉ ์ค์ ํ๋ฉด Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด์์ ์๋ํ์ง ์์ต๋๋ค.