ๆญฅ้ฉŸ 9๏ผšๅ…ฌ้–‹ Apigee ๅ…ฅๅฃ้–˜้“

ๆœฌๆญฅ้ฉŸ่ชชๆ˜Žๅฆ‚ไฝ•็‚บ Apigee ๅ…ฅๅฃ้–˜้“่จญๅฎš Kubernetes ๆœๅ‹™ใ€‚ๆฏๅ€‹ Ingress ้ƒจ็ฝฒไฝœๆฅญ้ƒฝ้œ€่ฆ Kubernetes ๆœๅ‹™๏ผŒๆ‰่ƒฝๅ–ๅพ—ๅฏๅ…ฌ้–‹็š„ IP ไฝๅ€ใ€‚็”จๆˆถ็ซฏๅฐ Proxy ็š„ๅ‘ผๅซๆœƒๅซ็”จไธปๆฉŸๅ็จฑ๏ผŒไธฆ่งฃๆž็‚บ้€™ๅ€‹ IP ไฝๅ€ใ€‚

Apigee ่ผธๅ…ฅ้–˜้“้ฉ็”จ็š„ Kubernetes ๆœๅ‹™้ธ้ …

ๆไพ› Kubernetes ๆœๅ‹™ไปฅๆŒ‡ๆดพ IP ไฝๅ€็š„ๆ–นๅผๆœ‰ๅ…ฉ็จฎ๏ผš

ๅปบ็ซ‹่‡ชๅทฑ็š„ Kubernetes ๆœๅ‹™

้‡ๅฐๅฏฆ้š›ๅทฅไฝœ็’ฐๅขƒ๏ผŒApigee ๅปบ่ญฐๆ‚จ็‚บๆฏๅ€‹ๅ…ฅๅฃ็ถฒ้—œๅปบ็ซ‹่‡ช่จ‚ Kubernetes ๆœๅ‹™ใ€‚

  • Apigee ๆœƒๅˆช้™ค้ ่จญๆœๅ‹™๏ผŒไฝ†ไธๆœƒๅœจๆธ…็†ๆ™‚ๅˆช้™ค่‡ช่จ‚ Kubernetes ๆœๅ‹™ใ€‚ๅ› ๆญค๏ผŒๅœจ้‡ๆ–ฐๅฎ‰่ฃ Apigee Hybrid ๆ™‚๏ผŒIP ไฝๅ€ไธๆœƒ้‡‹ๅ‡บใ€‚
  • ๅฆ‚ๆžœๆ˜ฏๆœชๅœจ Google Cloud ไธŠๅŸท่กŒ็š„ๅนณๅฐ (ไพ‹ๅฆ‚ EKSใ€AKS ๅ’Œ OpenShift)๏ผŒๆ‚จๅฟ…้ ˆ่‡ช่จ‚ Kubernetes ๆœๅ‹™๏ผŒๆ‰่ƒฝ่ˆ‡้›ฒ็ซฏไพ›ๆ‡‰ๅ•†ๆญ้…ไฝฟ็”จใ€‚ๅ› ๆญค๏ผŒๅปบ่ญฐๆ‚จๅปบ็ซ‹่‡ช่จ‚ Kubernetes ๆœๅ‹™๏ผŒ่€Œ้žไฝฟ็”จ้ ่จญๆœๅ‹™๏ผŒๅ› ็‚บ Apigee ไธๆ”ฏๆดๅฐ้ ่จญ Kubernetes ๆœๅ‹™้€ฒ่กŒๆ‰€ๆœ‰่‡ช่จ‚ใ€‚

่ซ‹ๆŒ‰็…งไธ‹ๅˆ—ๆญฅ้ฉŸ่จญๅฎšไธฆๅฐ‡ๆต้‡่ทฏ็”ฑ่‡ณๆ–ฐ็š„ๅ…ฅๅฃ็ถฒ้—œใ€‚

  1. ไฝฟ็”จๅฟ…่ฆ็š„ Pod ้ธๅ–ๅ™จๆจ™็ฑค appใ€ingress_name ๅ’Œ org ๅปบ็ซ‹ Kubernetes ๆœๅ‹™ใ€‚้€™ไบ›ๆจ™็ฑคๅทฒๅ‡บ็พๅœจ Apigee ๅ…ฅๅฃ้–˜้“ Pod ไธญใ€‚่ซ‹ๅƒ่€ƒไธ‹ๅˆ—็ฏ„ไพ‹๏ผŒๅปบ็ซ‹ๆœๅ‹™ๆช”ๆกˆ๏ผš
    apiVersion: v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      namespace: apigee
    spec:
      ports:
      - name: status-port
        port: 15021
        protocol: TCP
        targetPort: 15021
      - name: https
        port: 443
        protocol: TCP
        targetPort: 8443
      selector:
        app: apigee-ingressgateway #required
        ingress_name: INGRESS_NAME
        org: ORG_NAME
      type: LoadBalancer
      loadBalancerIP: LOAD_BALANCER_IP
    • SERVICE_NAME ๆ˜ฏ็”จไพ†่ญ˜ๅˆฅ้€™้ …ๆœๅ‹™็š„ๅ็จฑใ€‚ไพ‹ๅฆ‚๏ผšapigee-prod-1ใ€‚
    • INGRESS_NAME ๆ˜ฏ Apigee ๅ…ฅๅฃ้–˜้“้–˜้“็š„ๅ็จฑใ€‚้€™ๅ€‹ๅ็จฑๅฟ…้ ˆ่ˆ‡ๆ‚จๅœจ overrides.yaml ๆช”ๆกˆไธญ็‚บ ingressGateways.name ๆไพ›็š„ๅ็จฑ็›ธ็ฌฆใ€‚่ฉณๆƒ…่ซ‹ๅƒ้–ฑใ€Œ่จญๅฎšๅฑฌๆ€งๅƒ่€ƒ่ณ‡ๆ–™ใ€ไธญ็š„ ingressGatewaysใ€‚
    • ORG_NAME ๆ˜ฏ Apigee ๆฉŸๆง‹็š„ๅ็จฑใ€‚้€™ๅ€‹ๅ็จฑๅฟ…้ ˆ่ˆ‡ๆ‚จๅœจ overrides.yaml ๆช”ๆกˆไธญ็‚บ org ๆไพ›็š„ๅ็จฑ็›ธ็ฌฆใ€‚่ฉณๆƒ…่ซ‹ๅƒ้–ฑใ€Œ่จญๅฎšๅฑฌๆ€งๅƒ่€ƒ่ณ‡ๆ–™ใ€ไธญ็š„ orgใ€‚
    • LOAD_BALANCER_IP ๆ˜ฏ่ฒ ่ผ‰ๅนณ่กกๅ™จ็š„ IP ไฝๅ€ใ€‚

    Apigee ๅ…ฅๅฃ้–˜้“ๆœƒๅ…ฌ้–‹ไธ‹ๅˆ—้€š่จŠๅŸ ๏ผš

    ้€š่จŠๅŸ  ่ชชๆ˜Ž
    443 ๅŸท่กŒ้šŽๆฎตๆต้‡ใ€‚
    15021 ๅฅๅบท็‹€ๆ…‹ๆชขๆŸฅใ€‚status-port ๆœƒๅ…ฌ้–‹ๅฏ่ˆ‡ GKE Ingress ๅฅๅบท็‹€ๆ…‹ๆชขๆŸฅๆญ้…ไฝฟ็”จ็š„ /healthz/ready ็ซฏ้ปžใ€‚
  2. ๅฅ—็”จ SERVICE_FILENAME.yaml ไพ†ๅปบ็ซ‹ๆœๅ‹™๏ผš
    kubectl apply -f SERVICE_FILENAME.yaml
  3. ไฝฟ็”จไธ‹ๅˆ—ๆŒ‡ไปคๆ‰พๅ‡บ Apigee ่ผธๅ…ฅ้–˜้“็š„ๅค–้ƒจ IP๏ผš
    kubectl get svc -n apigee SERVICE_NAME

    ่ผธๅ‡บๅ…งๅฎนๆ‡‰ๅฆ‚ไธ‹ๆ‰€็คบ๏ผš

    NAME                                        TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                      AGE
    apigee-ingressgateway-prod-hybrid-37a39bd   LoadBalancer   192.0.2.123   233.252.0.123   15021:32049/TCP,80:31624/TCP,443:30723/TCP   16h
  4. ็‚บ้ ่จญ Apigee ๅ…ฅๅฃ้–˜้“ๆœๅ‹™ๅœ็”จ่ฒ ่ผ‰ๅนณ่กกๅ™จ๏ผš
    1. ๅœจ่ฆ†ๅฏซๆช”ๆกˆไธญ๏ผŒๅฐ‡ ingressGateways[].svcType ๅฑฌๆ€งๆ›ดๆ–ฐ็‚บ ClusterIP๏ผš
      ingressGateways:
        svcType: ClusterIP
    2. ไฝฟ็”จ apigeectl apply --org ๅฅ—็”จ่ฎŠๆ›ดใ€‚
      ${APIGEECTL_HOME}/apigeectl apply -f ${HYBRID_FILES}/overrides/overrides.yaml

    ่ฉณๆƒ…่ซ‹ๅƒ้–ฑใ€Œ็‚บ้ ่จญ Apigee ๅ…ฅๅฃ้–˜้“ๆœๅ‹™ๅœ็”จ่ฒ ่ผ‰ๅนณ่กกๅ™จใ€ใ€‚

  5. ่ซ‹ๅ‘ผๅซๅฅๅบทๆชขๆŸฅ๏ผŒๆธฌ่ฉฆๅ…ฅๅฃ็ถฒ้—œใ€‚

    curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \
      --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"

    ๅœฐ้ปž

    ๅฆ‚ๆžœๅŸท่กŒๆˆๅŠŸ๏ผŒๆŒ‡ไปคๆœƒๅ‚ณๅ›žไธ‹ๅˆ—ๅ…งๅฎน๏ผš

    Apigee Ingress is healthy
  6. ไฝฟ็”จ้€™ๅ€‹ IP ไฝๅ€๏ผŒๅœจ่จปๅ†Šๅ•†ๆˆ– DNS ไพ›ๆ‡‰ๅ•†่™•ๆ›ดๆ–ฐ DNS ่จ˜้Œ„ (้€šๅธธ็‚บ A ๆˆ– CNAME ่จ˜้Œ„)ใ€‚

ไฝฟ็”จ้ ่จญ Kubernetes ๆœๅ‹™

ๅฐๆ–ผ้žๆญฃๅผ็’ฐๅขƒ๏ผŒๆˆ–่ฆ้€้Ž Apigee ingress ้–˜้“ๆธฌ่ฉฆๅˆๅง‹ๆต้‡๏ผŒApigee hybrid ๆœƒ็‚บๆฏๅ€‹ ingress ้ƒจ็ฝฒๆไพ›้ ่จญ็š„ Kubernetes ๆœๅ‹™ใ€‚

ๆ‚จๅฏไปฅๅœจ overrides.yaml ๆช”ๆกˆไธญๅฐ้ ่จญๆœๅ‹™้€ฒ่กŒๆœ‰้™็š„่จญๅฎš่ฎŠๆ›ดใ€‚ๅฆ‚่ฆ็žญ่งฃๅฏ็”จ็š„่จญๅฎš้ธ้ …๏ผŒ่ซ‹ๅƒ้–ฑใ€Œ็ฎก็† Apigee ๅ…ฅๅฃ้–˜้“ใ€ใ€‚ไพ‹ๅฆ‚๏ผŒๆ‚จๅฏไปฅๆ–ฐๅขž่จป่งฃใ€‚

ๅฐๆ–ผๅฏฆ้š›ๅทฅไฝœ็’ฐๅขƒ๏ผŒๅปบ่ญฐๆ‚จๆไพ›็”จๆ–ผๅ…ฅๅฃ็š„ Kubernetes ๆœๅ‹™ใ€‚่ซ‹ๆŒ‰็…งใ€Œๅปบ็ซ‹่‡ชๅทฑ็š„ Kubernetes ๆœๅ‹™ใ€ไธ€ๆ–‡ไธญ็š„ๆญฅ้ฉŸๆ“ไฝœใ€‚

  1. ไฝฟ็”จไธ‹ๅˆ—ๆŒ‡ไปคๆ‰พๅ‡บ้ ่จญ Apigee ๅ…ฅๅฃๆœๅ‹™็š„ๅค–้ƒจ IP๏ผš
    kubectl get svc -n apigee -l app=apigee-ingressgateway

    ่ผธๅ‡บๅ…งๅฎนๆ‡‰ๅฆ‚ไธ‹ๆ‰€็คบ๏ผš

    NAME                                        TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                      AGE
    apigee-ingressgateway-prod-hybrid-37a39bd   LoadBalancer   192.0.2.123   233.252.0.123   15021:32049/TCP,80:31624/TCP,443:30723/TCP   16h
  2. ่ซ‹ๅ‘ผๅซๅฅๅบทๆชขๆŸฅ๏ผŒๆธฌ่ฉฆๅ…ฅๅฃ็ถฒ้—œใ€‚

    curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \
      --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"

    ๅœฐ้ปž

    ๅฆ‚ๆžœๅŸท่กŒๆˆๅŠŸ๏ผŒๆŒ‡ไปคๆœƒๅ‚ณๅ›žไธ‹ๅˆ—ๅ…งๅฎน๏ผš

    Apigee Ingress is healthy
  3. ไฝฟ็”จ้€™ๅ€‹ IP ไฝๅ€๏ผŒๅœจ่จปๅ†Šๅ•†ๆˆ– DNS ไพ›ๆ‡‰ๅ•†่™•ๆ›ดๆ–ฐ DNS ่จ˜้Œ„ (้€šๅธธ็‚บ A ๆˆ– CNAME ่จ˜้Œ„)ใ€‚
1 2 3 5