งานการผสานรวม Kubernetes

คุณกําลังดูเอกสาร Apigee Edge
ดูเอกสารประกอบเกี่ยวกับ Apigee X

การเพิ่มปลั๊กอินที่กําหนดเอง

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

ส่วนนี้จะอธิบายวิธีแพ็กเกจและทําให้ปลั๊กอินใช้งานได้กับอินสแตนซ์ Edge Microgateway ที่ทํางานอยู่ในคลัสเตอร์ Kubernetes

เนื้อหาที่เหลือของส่วนนี้จะถือว่าคุณคุ้นเคยกับการเขียนและการกําหนดค่าปลั๊กอินสําหรับการตั้งค่า Edge Microgateway แบบมาตรฐาน หากไม่ได้ตั้งค่าไว้ ให้ดูที่พัฒนาปลั๊กอินที่กําหนดเอง

สร้างแพ็กเกจปลั๊กอินของคุณ

หากต้องการจัดแพ็กเกจปลั๊กอินที่กําหนดเอง ให้ทําตามขั้นตอนต่อไปนี้

  1. เขียนและทดสอบปลั๊กอินตามวิธีการในเขียนปลั๊กอินแบบง่าย

  2. วางโค้ดปลั๊กอินในโครงสร้างไดเรกทอรีที่เหมาะสม ไดเรกทอรีปลั๊กอินต้องเป็นไปตามโครงสร้างชุด ตัวอย่างต่อไปนี้แสดงโครงสร้างที่คุณต้องติดตาม โดยที่ response-uppercase และ request-headers คือชื่อโฟลเดอร์ที่มีโค้ดปลั๊กอินแบบกําหนดเอง (ชื่อเหล่านี้เป็นตัวอย่างเท่านั้น และชื่อโฟลเดอร์อาจแตกต่างกัน):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd ไปยังโฟลเดอร์ plugin

  4. บีบอัดทั้งโฟลเดอร์ plugins ในโฟลเดอร์ plugin ดังนี้

    zip -r plugins.zip plugins/

สร้างอิมเมจ Docker

  1. ในไดเรกทอรีใหม่ซึ่งเป็นที่ตั้งของไฟล์ ZIP ให้สร้างไฟล์ใหม่ชื่อ Dockerfile
  2. เพิ่มโค้ดต่อไปนี้ลงใน Dockerfile และบันทึกไฟล์

    FROM gcr.io/apigee-microgateway/edgemicro:latest
    RUN apt-get install unzip
    COPY plugins.zip /opt/apigee/
    RUN chown apigee:apigee /opt/apigee/plugins.zip
    RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee"
    EXPOSE 8000
    EXPOSE 8443
    ENTRYPOINT ["entrypoint"]
    
  3. สร้างอิมเมจ Edge Microgateway Docker ตัวใหม่ด้วยปลั๊กอินและพุชอิมเมจไปยังรีจิสทรีของ Docker คุณสามารถใช้รีจิสทรีใดก็ได้ตามต้องการ เช่น docker.io หรือ gcr.io

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
    docker push container-registry/your-project/edgemicroplugins
    

    เช่น

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
    docker push   gcr.io/my-project/edgemicroplugins
    

อัปเดตการกําหนดค่า Edge Microgateway

  1. เพิ่มปลั๊กอินไปยังไฟล์การกําหนดค่า Edge Microgateway คุณสามารถค้นหาไฟล์การกําหนดค่าได้ที่นี่:

    $HOME/.edgemicro/org-env-config.yaml
    

    เช่น

    $HOME/.edgemicro/myorg-test-config.yaml

ในการกําหนดค่าตัวอย่างต่อไปนี้ มีการเพิ่มปลั๊กอินที่กําหนดเอง response-uppercase โดยค่าเริ่มต้น ปลั๊กอิน oauth พร้อมใช้งานอยู่แล้ว

  edgemicro:
    ...
    plugins:
      sequence:
        - oauth
        - response-uppercase

อัปเดตคลัสเตอร์ Kubernetes

ขั้นตอนสุดท้ายคือการใช้การเปลี่ยนแปลงการกําหนดค่ากับคลัสเตอร์ Kubernetes Kubernetes จะดึงรูปภาพใหม่ที่มีโค้ดปลั๊กอินที่คุณพุชไปยังรีจิสทรีคอนเทนเนอร์และนําไปใช้กับพ็อดที่สร้างขึ้นใหม่

หากคุณทําให้ Edge Microgateway เป็นบริการ

ใช้คําสั่ง edgemicroctl เพื่อแทรกการกําหนดค่า Edge Microgateway ที่อัปเดตแล้ว:

  1. อัปเดตการทําให้ Edge Microgateway ใช้งานได้ด้วยรูปภาพใหม่ เช่น

    kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)

    โดยที่:

    • your_organization - องค์กร Apigee ที่คุณระบุในคําสั่ง edgemicro configure
    • your_environment - สภาพแวดล้อมที่คุณระบุไว้ในคําสั่ง edgemicro configure
    • configuration_key - คีย์ที่แสดงผลจากคําสั่ง edgemicro configure
    • configuration_secret - ข้อมูลลับที่ส่งคืนจากคําสั่ง edgemicro configure
    • config_file_path - เส้นทางไปยังไฟล์การกําหนดค่า Edge Micro ที่ส่งคืนจากคําสั่ง edgemicro configure
    • container-registry - รีจิสทรีของ Docker ที่คุณพุชอิมเมจไป เช่น gcr.io หรือ docker.io
    • your_project_name - ชื่อโปรเจ็กต์สําหรับที่เก็บ Docker ที่คุณพุชอิมเมจ Docker
    • image_name - ชื่อของอิมเมจ Docker ที่คุณพุช

    ตัวอย่าง:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
  2. ทดสอบปลั๊กอิน เรียกใช้ API เพื่อดูว่าคุณเจอลักษณะการทํางานที่ต้องการหรือไม่ ตัวอย่างเช่น ในปลั๊กอิน "การตอบกลับตัวพิมพ์ใหญ่" ข้อความตอบกลับจะถูกแปลงเป็นตัวพิมพ์ใหญ่ทั้งหมดดังที่แสดงด้านล่าง

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    เอาต์พุต:

    HELLO WORLD
    
ใส่การกําหนดค่าใหม่ด้วยตนเอง

การแทรกด้วยตนเองเป็นวิธีที่เรียบง่ายซึ่งคุณจะต้องแทรกการกําหนดค่าใหม่จากบรรทัดคําสั่ง

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

    kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)

    โดยที่:

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

    เช่น

    kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
  2. ทดสอบปลั๊กอิน เรียกใช้ API บริการ เพื่อดูว่าคุณได้รับการทํางานตามที่คาดไว้หรือไม่ ตัวอย่างเช่น สําหรับปลั๊กอิน "การตอบกลับตัวพิมพ์ใหญ่" ข้อความตอบกลับจะถูกแปลงเป็นอักษรตัวพิมพ์ใหญ่ทั้งหมดดังที่แสดงด้านล่าง

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    เอาต์พุต:

    HELLO WORLD
    

การเปลี่ยนแปลงการกําหนดค่า Edge Microgateway

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

  1. สร้างไฟล์การกําหนดค่า secret.yaml ตามที่แสดงด้านล่าง

    apiVersion: v1
    kind: Secret
    metadata:
      name: mgwsecret
    type: Opaque
    data:
      mgorg: EDGEMICRO_ORG
      mgenv: EDGEMICRO_ENV
      mgkey: EDGEMICRO_KEY
      mgsecret: EDGEMICRO_SECRET
      mgconfig: EDGEMICRO_CONFIG
    
  2. ระบุค่าที่เข้ารหัส base64 เป็น EDGEMICRO_ORG, EDGEMICRO_ENV, EDGEMICRO_KEY, EDGEMICRO_SECRET ดังนี้

    echo -n "your-org" | base64 | tr -d '\n'
    echo -n "your-org-env" | base64 | tr -d '\n'
    echo -n "your-mg-key" | base64 | tr -d '\n'
    echo -n "your-mg-secret" | base64 | tr -d '\n'
    
  3. ทําการเปลี่ยนแปลงไฟล์การกําหนดค่า Edge Microgateway สําหรับองค์กรและสภาพแวดล้อมของคุณ

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Base64 เข้ารหัสสองเท่า ของไฟล์การกําหนดค่า:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. ใช้การเปลี่ยนแปลงกับ Kubernetes ในเนมสเปซที่บริการทํางานอยู่

    kubectl apply -f secret.yaml -n 

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

ตัวอย่างบริการ

ตัวอย่างต่อไปนี้จะแสดงวิธีนําบริการไปใช้งานกับ

  1. รับพ็อด

    kubectl get pods

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

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. ลบพ็อด edge-microgateway

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

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

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. รับพ็อดอีกครั้ง พ็อดใหม่จะปรากฏขึ้นและรับการเปลี่ยนแปลงการกําหนดค่า

    kubectl get pods

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

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-7f6tc   1/1       Running   0          5s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

การปรับขนาดการทําให้ใช้งานได้

ส่วนนี้จะอธิบายวิธีใช้หลักการการปรับขนาด Kubernetes เพื่อปรับขนาดการทําให้ใช้งานได้

การปรับขนาดการทําให้ใช้งานได้

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

    kubectl get deployments

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

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    เอาต์พุตจะระบุว่าตัวจําลอง 1 ตัวใช้งานได้

  2. ปรับขนาดการทําให้ใช้งานได้จาก 1 เป็นการจําลองได้มากเท่าที่ต้องการ ในตัวอย่างนี้มีการปรับขนาดบริการ edge-microgateway

    kubectl scale deployment edge-microgateway --replicas=2
  3. (ไม่บังคับ) หากต้องการใช้การปรับขนาดอัตโนมัติ ให้ใช้คําสั่งนี้

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. ตรวจสอบการทําให้ใช้งานได้เพื่อยืนยันว่าการปรับขนาดเปิดอยู่:

    kubectl get deployments

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

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    มีการเปลี่ยนสถานะให้มีตัวจําลอง 2 ตัว

  5. ตรวจสอบพ็อด:

    kubectl get pods

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

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          18h
    edge-microgateway-57ccc7776b-rvfz4   1/1       Running   0          41s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

    ผลลัพธ์จะแสดงว่าตัวจําลองทั้งสองรายการอยู่ในสถานะกําลังทํางาน

ใช้เนมสเปซสําหรับการกําหนดค่า Edge Microgateway หลายรายการ

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

  • Edge Microgateway Service A ต้องการเฉพาะปลั๊กอินที่ถูกจับกุมเท่านั้น
  • Edge Microgateway Service B ต้องใช้โควต้าและปลั๊กอิน oauth แต่จะไม่มีการจับกุมที่เพิ่มขึ้นอย่างรวดเร็ว

ในการแก้ปัญหาเกี่ยวกับกรณีการใช้งานนี้ ให้ใช้ namespace ของ Kubernetes เช่น คุณอาจทําให้ Edge Microgateway Service A ใช้กับเนมสเปซ foo และ Edge Microgateway Service B เพื่อตั้งชื่อเนมสเปซ bar ได้

ในตัวอย่างต่อไปนี้ Edge Microgateway ที่กําหนดค่าในองค์กร OrgA จะถูกทําให้ใช้งานได้เป็นบริการไปยังเนมสเปซ foo โดยใช้ตัวเลือก -n:

kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo

ในทํานองเดียวกัน ในตัวอย่างต่อไปนี้ Edge Microgateway ที่กําหนดค่าในองค์กร OrgB จะถูกทําให้ใช้งานได้เป็นบริการสําหรับเนมสเปซ bar โดยใช้ตัวเลือก -n:

kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar