ทำให้ Edge Microgateway เป็นพร็อกซีไฟล์ช่วยเหลือ

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

บทนำ

หัวข้อนี้จะอธิบายวิธีเรียกใช้ Microgateway ของ Edge ในคลัสเตอร์ Kubernetes เป็นพร็อกซี Sidecar คุณมี 2 ตัวเลือกในการทำให้ Sidecar ใช้งานได้ ได้แก่ การแทรกด้วยตนเองและการแทรกอัตโนมัติ หัวข้อนี้จะอธิบายทั้ง 2 ตัวเลือก

ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลเบื้องต้นเกี่ยวกับ Edge Microgateway ใน Kubernetes

ก่อนเริ่มต้น

ทําตามขั้นตอนที่อธิบายไว้ในข้อกําหนดเบื้องต้น

ติดตั้งใช้งานบริการทดสอบ

ติดตั้งใช้งานบริการ "hello" แบบง่ายและยืนยันการติดตั้งใช้งาน

  1. ติดตั้งใช้งานตัวอย่าง

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. ยืนยันว่าบริการทำงานอยู่ คุณอาจต้องรอสักครู่เพื่อให้พ็อดเริ่มทำงาน

    kubectl get pods --namespace=default

    ตัวอย่างเอาต์พุต

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. ลบการทำให้ใช้งานได้ของบริการทดสอบ คุณจะติดตั้งอีกครั้งในภายหลังหลังจากเปิดใช้การแทรก Sidecar โดยทำดังนี้

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

การใช้การแทรก Sidecar ด้วยตนเอง

ตัวเลือกการแทรก Sidecar 2 รายการนั้น การแทรก Sidecar ด้วยตนเองเป็นวิธีที่ง่ายและตรงไปตรงมากว่า และทําได้ด้วยคําสั่ง kubectl เพียงคําเดียว

กำหนดค่า Microgateway ของ Edge

คำสั่งต่อไปนี้จะกำหนดค่า Microgateway ของ Edge สำหรับองค์กร Apigee และทำให้พร็อกซี edgemicro-auth ใช้งานได้

  1. เรียกใช้คำสั่งต่อไปนี้

    edgemicro configure -o [org] -e [env] -u [username]

    สถานที่:

    • org: ชื่อองค์กร Edge ของคุณ (คุณต้องเป็นผู้ดูแลระบบองค์กร)

    • env: สภาพแวดล้อมในองค์กร (เช่น test หรือ prod)

    • username: อีเมลที่เชื่อมโยงกับบัญชี Apigee

    ตัวอย่าง

    edgemicro configure -o myorg -e test -u jdoe@example.com

    ระบบจะบันทึกเอาต์พุต (ตัวอย่างแสดงอยู่ด้านล่าง) ลงในไฟล์

    $HOME/.edgemicro/org_name-env_name-config.yaml

    current nodejs version is v6.9.1
    current edgemicro version is 2.5.25
    password:
    file doesn't exist, setting up
    Give me a minute or two... this can take a while...
    App edgemicro-auth deployed.
    checking org for existing KVM
    KVM already exists in your org
    configuring host edgemicroservices.apigee.net for region us-west1
    
    saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml
    
    vault info:
     -----BEGIN CERTIFICATE-----
    MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
    b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD
    VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh
    nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm
    Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT
    iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn
    GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp
    oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I
    mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8
    1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN
    lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH
    6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm
    /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn
    8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4
    w+e3Z3F7IKI=
    -----END CERTIFICATE-----
    
    The following credentials are required to start edge micro
      key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4
      secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef
    
    edgemicro configuration complete!
    

แทรก Microgateway ของ Edge เป็นไซด์คาร์

หากต้องการแทรก Edge Microgateway ลงในพ็อดบริการด้วยตนเองเป็นพร็อกซีของ Sidecar ให้เรียกใช้คำสั่งนี้

kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)

where:

  • your_org - องค์กร Apigee ที่คุณระบุในคําสั่ง edgemicro configure
  • your_env - สภาพแวดล้อมที่คุณระบุในคําสั่ง edgemicro configure
  • your_key - คีย์ที่แสดงผลจากคําสั่ง edgemicro configure
  • your_secret - ข้อมูลที่ได้จากคําสั่ง edgemicro configure
  • config_file_path - เส้นทางไปยังไฟล์การกําหนดค่า Edge Micro ที่แสดงผลจากคําสั่ง edgemicro configure
  • service_deployment_file - เส้นทางไปยังไฟล์การนําส่งของบริการที่พ็อดจะได้รับบริการ Sidecar ที่ใช้ร่วมกัน ตัวอย่างเช่น samples/helloworld/helloworld.yaml

เช่น

kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)

ทดสอบการกําหนดค่า

  1. ตรวจสอบการติดตั้งใช้งานบริการ

    kubectl get services -n default

    ตัวอย่างเอาต์พุต

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort    10.15.254.163   <none>        8081:32401/TCP   56s
    kubernetes   ClusterIP   10.15.240.1     <none>        443/TCP          41m
    
  2. ตอนนี้คุณก็พร้อมทดสอบการติดตั้งใช้งาน Sidecar ของ Edge Microgateway แล้ว โปรดไปที่หัวข้อทดสอบพร็อกซีเพื่อดูขั้นตอนโดยละเอียด

การใช้การแทรก Sidecar อัตโนมัติ

ในขั้นตอนต่อไปนี้ คุณจะกำหนดค่าการแทรก Sidecar อัตโนมัติสำหรับคลัสเตอร์ Kubernetes การตั้งค่านี้ช่วยให้สามารถแทรก Edge Microgateway เป็นพร็อกซี Sidecar ลงใน Kubernetes ได้

ติดตั้งหัวฉีดไซด์คาร์

  1. ติดตั้ง ConfigMap ที่เปิดใช้การแทรก Sidecar ของ Edge Microgateway

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. เรียกใช้สคริปต์ต่อไปนี้เพื่อติดตั้งบริการ webhook บริการเว็บฮุคจําเป็นสําหรับการแทรก Sidecar อัตโนมัติ

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. เพิ่มกลุ่ม CA ลงในไฟล์การติดตั้งเว็บฮุค Kubernetes api-server ใช้ไฟล์นี้เพื่อเรียกใช้ Webhook

    cat install/kubernetes/edgemicro-sidecar-injector.yaml | \
         ./install/kubernetes/webhook-patch-ca-bundle.sh > \
         install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    
  4. ติดตั้ง Webhook ของอินเจกเตอร์ไฟล์ช่วยเหลือใน Microgateway ของ Edge โดยทำดังนี้

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    

    ตัวอย่างเอาต์พุต

    service "edgemicro-sidecar-injector" created
    serviceaccount "edgemicro-sidecar-injector-service-account" created
    deployment "edgemicro-sidecar-injector" created
    mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
    
  5. ตรวจสอบว่า Webhook ของ Injector ของ Sidecar ใน Microgateway ของ Edge ทำงานอยู่

    kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
    

    ตัวอย่างเอาต์พุต

    NAME                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edgemicro-sidecar-injector   1         1         1            1           12m
    
  6. ตรวจสอบว่าพ็อดการแทรก Sidecar ทำงานอยู่ในคลัสเตอร์ เนมสเปซ edgemicro-system คือที่ติดตั้งบริการของระบบ ซึ่งรวมถึงตัวควบคุม Ingress, แบ็กเอนด์ HTTP เริ่มต้น และอินเจ็กเตอร์ไซด์คาร์

    kubectl get pods -n edgemicro-system

    ตัวอย่างเอาต์พุต

    NAME                                            READY     STATUS    RESTARTS   AGE
    default-http-backend-55c6c69b88-gfnfd           1/1       Running   0          1h
    edgemicro-ingress-controller-64444469bf-jhn8b   1/1       Running   3          1h
    edgemicro-sidecar-injector-7d95698fbf-cq84q     1/1       Running   0          3m
    

กำหนดค่าและแทรก Microgateway ของ Edge

ในขั้นตอนถัดไป คุณจะเรียกใช้สคริปต์แบบอินเทอร์แอกทีฟเพื่อสร้างการกำหนดค่า Microgateway ของ Edge ที่เชื่อมโยงกับเนมสเปซ Kubernetes จากนั้นคุณจะต้องแทรกการกำหนดค่าลงในคลัสเตอร์ Kubernetes

  1. เรียกใช้สคริปต์แบบอินเทอร์แอกทีฟต่อไปนี้และระบุพารามิเตอร์ที่ขอ คำสั่งจะสร้างโปรไฟล์การกําหนดค่าที่คุณจะใช้ในขั้นตอนถัดไป

    ./install/kubernetes/webhook-edgemicro-patch.sh

    ดูข้อมูลเกี่ยวกับพารามิเตอร์อินพุตได้ที่ข้อมูลอ้างอิง

    ตัวอย่างอินพุต

    1. Namespace to deploy application [default]:

      กด Enter

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      ป้อน n

    3. Apigee username [required]:

      ป้อนชื่อผู้ใช้ Apigee (อีเมล) ตัวอย่างเช่น jdoe@google.com

    4. Apigee password [required]:

      ป้อนรหัสผ่าน Apigee

    5. Apigee organization [required]:

      ป้อนชื่อองค์กร Apigee

    6. Apigee environment [required]:

      ป้อนชื่อสภาพแวดล้อมสําหรับองค์กร เช่น "test"

    7. Virtual Host [default]:

      กด Enter

    8. Is this Private Cloud ("n","y") [N/y]:

      ป้อน n หากคุณใช้ระบบคลาวด์สาธารณะ

    9. Edgemicro Key. Press Enter to generate:

      กด Enter

    10. Edgemicro Secret. Press Enter to generate:

      กด Enter

    11. Edgemicro org-env-config.yaml. Press Enter to generate:

      กด Enter

      ตัวอย่างเอาต์พุต

      current nodejs version is v6.9.1
      current edgemicro version is 2.5.25
      config initialized to /Users/jdoe/.edgemicro/default.yaml
      Configure for Cloud
      ******************************************************************************************
      Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory.
      
      Please make changes as desired.
      *****************************************************************************************
      
    12. Do you agree to proceed("n","y") [N/y]:

      ป้อน y

      ตัวอย่างเอาต์พุต

      Configuring Microgateway with
      
      key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84
      secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0
      config:~/.edgemicro/jdoe-test-config.yaml
      
      ********************************************************************************************************
      kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
      ********************************************************************************************************
      
  2. เรียกใช้คําสั่งที่ระบุไว้ในบรรทัดสุดท้ายของเอาต์พุต คำสั่ง kubectl นี้จะแทรกโปรไฟล์การกําหนดค่า Edge Microgateway ที่สร้างขึ้นลงใน Kubernetes

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. ดูสถานะของการแทรก Webhook โปรดทราบว่าขณะนี้ยังไม่ได้เปิดใช้ฟีเจอร์นี้

    kubectl get namespace -L edgemicro-injection

    ตัวอย่างเอาต์พุต

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    
  4. เรียกใช้คําสั่งนี้เพื่อเปิดใช้การแทรกเว็บฮุกสําหรับเว็บฮุก

    kubectl label namespace default edgemicro-injection=enabled
  5. ดูสถานะของการแทรก Webhook อีกครั้ง โปรดทราบว่าตอนนี้เปิดใช้แล้ว

    kubectl get namespace -L edgemicro-injection

    ตัวอย่างเอาต์พุต

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d        enabled
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    

ติดตั้งใช้งานบริการทดสอบ

จากนั้นให้ทําให้การทดสอบบริการใช้งานได้อีกครั้ง ระบบจะแทรก Microgateway ของ Edge ลงในพ็อดของบริการโดยอัตโนมัติ

kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default

ยืนยันว่ามีการแทรก Edge Microgateway ลงในพ็อดพร้อมกับบริการทดสอบแล้ว โดยทำดังนี้

kubectl get pods --namespace=default --watch

ตัวอย่างเอาต์พุต

NAME                          READY     STATUS            RESTARTS   AGE
helloworld-6987878fc4-pkw8h   0/2       PodInitializing   0          12s
helloworld-6987878fc4-pkw8h   2/2       Running           0         26s

เมื่อสถานะเปลี่ยนเป็น Running ให้กด ctrl-c เพื่อออกจากคําสั่ง

ตอนนี้คุณก็พร้อมทดสอบการติดตั้งใช้งาน Sidecar อัตโนมัติของ Edge Microgateway แล้ว โปรดไปที่หัวข้อทดสอบพร็อกซีเพื่อดูขั้นตอนโดยละเอียด

ทดสอบพร็อกซี

เมื่อใช้การทําให้ใช้งานได้แบบไซด์คาร์ ระบบจะสร้างพร็อกซี API สําหรับบริการให้คุณโดยอัตโนมัติ คุณไม่จำเป็นต้องสร้างพร็อกซีที่ "รู้จัก Edge Microgateway"

รับที่อยู่ IP ของ Ingress

เมื่อใช้ IP ภายนอกสําหรับ Ingress คุณจะเรียกใช้บริการได้จากภายนอกคลัสเตอร์

  1. รับที่อยู่ IP ภายนอกของ Ingress Controller โดยทำดังนี้

    kubectl get ing -o wide

    ตัวอย่างเอาต์พุต

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. คัดลอกค่า EXTERNAL-IP สำหรับ Ingress และส่งออกไปยังตัวแปร คุณตั้งค่าตัวแปรด้วยตนเองได้โดยทำดังนี้

    export GATEWAY_IP=external_ip

    เช่น

    export GATEWAY_IP=35.238.249.62

    หรือจะใช้คำสั่งนี้เพื่อตั้งค่าให้ก็ได้

    export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. ยืนยันว่ามีการส่งออกตัวแปรแล้ว เช่น

    echo $GATEWAY_IP

    ตัวอย่างเอาต์พุต

    35.238.249.62
    
  4. เรียกใช้บริการด้วยคำสั่งต่อไปนี้

    curl $GATEWAY_IP

    เอาต์พุต:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    ถัดไป คุณจะแก้ไขข้อผิดพลาดการให้สิทธิ์ที่ขาดหายไปโดยการกำหนดค่าผลิตภัณฑ์ API และแอปของนักพัฒนาแอปใน Edge เพื่อให้คุณได้รับคีย์ API ที่ถูกต้อง เมื่อคุณเพิ่มคีย์ลงในส่วนหัวการให้สิทธิ์สําหรับการเรียก API การเรียกจะสําเร็จและคุณจะไม่เห็นข้อผิดพลาดนี้

สร้างคอมโพเนนต์ใน Apigee Edge

จากนั้นสร้างผลิตภัณฑ์ API และแอปของนักพัฒนาแอปใน Apigee Edge

สร้างผลิตภัณฑ์ API

  1. เข้าสู่ระบบ Apigee Edge
  2. เลือกเผยแพร่ > ผลิตภัณฑ์ API ในเมนูการนำทางด้านข้าง
  3. คลิก + ผลิตภัณฑ์ API หน้าผลิตภัณฑ์จะปรากฏขึ้น
  4. กรอกข้อมูลในหน้าผลิตภัณฑ์ดังนี้ สำหรับช่องที่ไม่ได้กล่าวถึงด้านล่าง คุณจะใช้ค่าเริ่มต้นได้ อย่าบันทึกจนกว่าจะได้รับแจ้ง

    ชื่อ hello-world-product
    ชื่อที่แสดง Edge Micro hello product
    สภาพแวดล้อม test

  5. ในส่วนเส้นทาง ให้คลิก + ทรัพยากรที่กำหนดเอง

  6. เพิ่มเส้นทาง /

  7. คลิก + ทรัพยากรที่กำหนดเองอีกครั้ง แล้วเพิ่มเส้นทาง /**

  8. ในส่วนพร็อกซี API ให้คลิก + API Proxy แล้วเพิ่ม edgemicro-auth

  9. บันทึกผลิตภัณฑ์ API

สร้างแอปนักพัฒนาซอฟต์แวร์

  1. เลือกแอปในเมนูการนำทางด้านข้าง
  2. คลิก + แอป หน้ารายละเอียดแอปของนักพัฒนาแอปจะปรากฏขึ้น
  3. กรอกข้อมูลในหน้าแอปสําหรับนักพัฒนาแอปดังนี้ อย่าบันทึกจนกว่าจะได้รับแจ้งให้ดำเนินการ

    ชื่อ hello-world-app
    ชื่อที่แสดง Edge Micro hello app
    นักพัฒนาซอฟต์แวร์ เลือกนักพัฒนาแอปจากเมนูแบบเลื่อนลง
  4. ในส่วนข้อมูลเข้าสู่ระบบ ให้คลิก + ผลิตภัณฑ์ แล้วเลือก hello-world-product ที่คุณเพิ่งสร้าง

  5. คลิกบันทึก

  6. คุณกลับมาที่หน้าซึ่งแสดงแอปของนักพัฒนาแอปทั้งหมด

  7. เลือกแอปที่เพิ่งสร้าง hello-world-app

  8. คลิกแสดงข้างคีย์ผู้บริโภค

  9. คัดลอกค่าของคีย์ผู้ใช้ ค่านี้คือคีย์ API ที่คุณจะใช้เรียก API อย่างปลอดภัยไปยังบริการ helloworld

  10. โปรดรอสักครู่ การเปลี่ยนแปลงที่คุณทำใน Apigee Edge จะใช้เวลา 2-3 นาทีเพื่อซิงค์กับอินสแตนซ์ของ Edge Microgateway ที่ติดตั้งใช้งานในคลัสเตอร์

เรียก API

หลังจากดึงการเปลี่ยนแปลงการกําหนดค่าไปยังไมโครเกตเวย์แล้ว คุณจะทําการทดสอบต่อไปนี้ได้

  1. เรียกใช้ API โดยไม่มีคีย์ API คุณจะได้รับข้อความแสดงข้อผิดพลาดดังที่แสดงด้านล่าง

    curl $GATEWAY_IP

    ผลลัพธ์ที่คาดหวัง

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    คุณต้องมีคีย์ API จึงจะเรียก API ได้สําเร็จ

  2. รับคีย์ผู้ใช้จากแอปสําหรับนักพัฒนาแอปที่คุณสร้าง ค่านี้คือคี API ที่จําเป็นในการเรียกใช้พร็อกซีการทดสอบ

    curl -H 'x-api-key:your-edge-api-key'  $GATEWAY_IP

    เช่น

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP

    เอาต์พุต:

    Hello world
    

    การตอบกลับ "Hello world" มาจากบริการ helloworld ที่ติดตั้งใช้งานในพ็อด การเรียกใช้บริการดังกล่าวจะผ่าน Edge Microgateway ก่อน ซึ่งจะดำเนินการตรวจสอบสิทธิ์ หากเห็นการตอบกลับ "Hello World" แสดงว่าคุณได้กําหนดค่า Edge Microgateway ให้ทํางานเป็นพร็อกซี Sidecar ในพ็อดบริการ helloworld เรียบร้อยแล้ว

ขั้นตอนถัดไปคือ

ดูข้อมูลเกี่ยวกับการเพิ่มปลั๊กอินที่กําหนดเองการปรับขนาดการใช้งาน การเปลี่ยนแปลงการกําหนดค่า และงานอื่นๆ ที่ต้องการทําได้ที่ส่วนงาน