Các tác vụ tích hợp trong Kubernetes

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Thêm trình bổ trợ tuỳ chỉnh

Bạn có thể thêm các tính năng và khả năng mới vào cổng nhỏ bằng cách viết tùy chỉnh trình bổ trợ. Các trình bổ trợ tuỳ chỉnh cho phép bạn tương tác theo cách lập trình với các yêu cầu và phản hồi đi qua cổng vi mô.

Phần này giải thích cách đóng gói và triển khai trình bổ trợ cho Edge Microgateway thực thể đang chạy trong cụm Kubernetes của bạn.

Phần còn lại của phần này giả định mà bạn đã quen viết và định cấu hình để thiết lập Edge Microgateway tiêu chuẩn. Nếu chưa, hãy xem phần Phát triển trình bổ trợ tuỳ chỉnh.

Đóng gói(các) trình bổ trợ

Để đóng gói(các) trình bổ trợ tuỳ chỉnh, hãy làm theo các bước sau:

  1. Viết và kiểm thử trình bổ trợ của bạn, theo hướng dẫn trong bài viết Viết một trình bổ trợ đơn giản.

  2. Đặt mã trình bổ trợ của bạn vào cấu trúc thư mục thích hợp. Các thư mục trình bổ trợ phải tuân theo cấu trúc tập hợp. Ví dụ sau đây cho thấy cấu trúc mà bạn phải tuân theo, trong đó response-uppercaserequest-headers là tên của các thư mục chứa mã trình bổ trợ tùy chỉnh (những tên này chỉ là ví dụ, tên thư mục có thể khác nhau):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd vào thư mục plugin.

  4. Trong thư mục plugin, hãy nén toàn bộ thư mục plugins:

    zip -r plugins.zip plugins/

Tạo hình ảnh Docker

  1. Trong cùng thư mục chứa tệp zip đó, hãy tạo một tệp mới tên là Dockerfile.
  2. Thêm mã sau vào Dockerfile rồi lưu tệp:

    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. Tạo hình ảnh Docker Edge Microgateway mới bằng các trình bổ trợ và đẩy hình ảnh vào sổ đăng ký Docker của bạn. Bạn có thể sử dụng bất kỳ sổ đăng ký nào bạn muốn, chẳng hạn như dưới dạng docker.io hoặc gcr.io:

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

    Ví dụ:

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

Cập nhật cấu hình Edge Microgateway

  1. Thêm(các) trình bổ trợ vào tệp cấu hình Edge Microgateway. Bạn có thể tìm thấy tệp cấu hình tại đây:

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

    Ví dụ:

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

Trong cấu hình mẫu sau, trình bổ trợ tuỳ chỉnh response-uppercase đã được thêm. Theo mặc định, trình bổ trợ oauth đã có sẵn.

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

Cập nhật cụm Kubernetes

Bước cuối cùng là áp dụng thay đổi về cấu hình cho cụm Kubernetes. Kubernetes sẽ kéo hình ảnh mới bằng mã trình bổ trợ mà bạn đã đẩy vào sổ đăng ký vùng chứa và sử dụng hình ảnh này cho bất kỳ nhóm đã tạo.

Nếu bạn đã triển khai Edge Microgateway làm dịch vụ

Dùng lệnh edgemicroctl để chèn cấu hình Edge Microgateway đã cập nhật:

  1. Cập nhật quy trình triển khai Edge Microgateway bằng hình ảnh mới. Ví dụ:

    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)

    trong đó:

    • your_organization – Tổ chức Apigee mà bạn đã chỉ định trong lệnh edgemicro configure.
    • your_environment – Môi trường mà bạn đã chỉ định trong lệnh edgemicro configure.
    • configuration_key – Khoá được trả về qua lệnh edgemicro configure.
    • configuration_secret – Khoá bí mật được trả về từ lệnh edgemicro configure.
    • config_file_path – Đường dẫn đến tệp cấu hình Edge Micro được trả về từ lệnh edgemicro configure.
    • container-registry – Sổ đăng ký Docker nơi bạn đã đẩy hình ảnh. Ví dụ: gcr.io hoặc docker.io
    • your_project_name – Tên dự án cho kho lưu trữ Docker mà bạn đã đẩy hình ảnh Docker.
    • image_name – Tên của hình ảnh Docker mà bạn đã đẩy.

    Ví dụ:

    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. Kiểm thử trình bổ trợ. Hãy gọi API để xem bạn có nhận được hành vi dự kiến hay không. Cho ví dụ: đối với "phản hồi viết hoa" trình bổ trợ, thì văn bản phản hồi sẽ được chuyển đổi thành chữ hoa, như được hiển thị dưới đây:

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

    Kết quả:

    HELLO WORLD
    
Chèn cấu hình mới theo cách thủ công

Chèn thủ công là một phương pháp đơn giản, trong đó bạn chèn cấu hình mới từ dòng lệnh.

  1. Thực thi lệnh sau:

    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)

    trong đó:

    • your_org – Tổ chức Apigee mà bạn đã chỉ định trong lệnh edgemicro configure.
    • your_env – Môi trường mà bạn đã chỉ định trong lệnh edgemicro configure.
    • your_key – Khoá được trả về qua lệnh edgemicro configure.
    • your_secret – Khoá bí mật được trả về từ lệnh edgemicro configure.
    • config_file_path – Đường dẫn đến tệp cấu hình Edge Micro được trả về từ lệnh edgemicro configure.
    • container-registry – Sổ đăng ký Docker nơi bạn đã đẩy hình ảnh. Ví dụ: gcr.io hoặc docker.io
    • your_project_name – Tên dự án cho kho lưu trữ Docker mà bạn đã đẩy hình ảnh Docker.
    • image_name – Tên của hình ảnh Docker mà bạn đã đẩy.
    • service_deployment_file – Đường dẫn đến tệp triển khai của dịch vụ cho mà(các) trình bổ trợ sẽ áp dụng. Ví dụ: samples/helloworld/helloworld.yaml.

    Ví dụ:

    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. Kiểm thử trình bổ trợ. Gọi API dịch vụ để xem bạn có nhận được hành vi dự kiến không. Ví dụ: đối với "phản hồi viết hoa" trình bổ trợ, nội dung phản hồi được chuyển đổi thành toàn bộ chữ hoa, như minh hoạ dưới đây:

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

    Kết quả:

    HELLO WORLD
    

Thay đổi cấu hình Edge Microgateway

Trong một số trường hợp, bạn có thể cần phải sửa đổi cấu hình Edge Microgateway. Ví dụ: bạn có thể muốn thêm một trình bổ trợ mới vào Edge Microgateway hoặc thay đổi thông số cấu hình. Chiến dịch này giải thích cách thực hiện và áp dụng thay đổi cấu hình cho Edge Microgateway chạy trong Kubernetes.

  1. Tạo tệp cấu hình secret.yaml như minh hoạ dưới đây:

    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. Chỉ định giá trị được mã hoá base64 của 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. Thực hiện các thay đổi đối với tệp cấu hình Edge Microgateway cho tổ chức của bạn và môi trường:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Mã hoá Base64 gấp đôi nội dung của tệp cấu hình:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Áp dụng các thay đổi cho kubernetes trên không gian tên nơi dịch vụ của bạn đang chạy.

    kubectl apply -f secret.yaml -n 

Những thay đổi mới này không được các nhóm cửa nhỏ hiện có tự động chọn; tuy nhiên, các nhóm mới sẽ nhận được các thay đổi. Bạn có thể xoá nhóm hiện có để thì quá trình triển khai sẽ tạo một nhóm mới nhận thay đổi.

Ví dụ về dịch vụ

Ví dụ sau minh hoạ cách cập nhật quá trình triển khai dịch vụ bằng

  1. Lấy các nhóm.

    kubectl get pods

    Kết quả điểm dữ liệu:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. Xoá nhóm edge-microgateway.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    Kết quả điểm dữ liệu:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. Hãy mua lại các nhóm. Một nhóm mới sẽ xoay vòng và yêu cầu bạn thay đổi cấu hình.

    kubectl get pods

    Kết quả điểm dữ liệu:

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

Mở rộng quy mô triển khai

Phần này giải thích cách bạn có thể sử dụng các nguyên tắc nhân rộng của Kubernetes để mở rộng quy mô triển khai.

Mở rộng quy mô triển khai dịch vụ

  1. Kiểm tra các phiên bản triển khai:

    kubectl get deployments

    Kết quả điểm dữ liệu:

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

    Kết quả cho biết một bản sao đã được triển khai.

  2. Mở rộng quy mô triển khai từ 1 bản sao đến bao nhiêu bản sao tuỳ thích. Trong ví dụ này, dịch vụ edge-microgateway được điều chỉnh theo tỷ lệ.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (Không bắt buộc) Nếu bạn muốn sử dụng phương thức tự động cấp tài nguyên bổ sung, hãy dùng lệnh sau:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. Kiểm tra các phiên bản triển khai để xác minh rằng bạn đã bật tính năng điều chỉnh theo tỷ lệ:

    kubectl get deployments

    Kết quả điểm dữ liệu:

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

    Trạng thái đã được thay đổi để bao gồm hai bản sao.

  5. Kiểm tra các nhóm:

    kubectl get pods

    Kết quả điểm dữ liệu:

    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
    

    Kết quả cho thấy cả hai bản sao đều ở trạng thái đang chạy.

Sử dụng không gian tên cho nhiều cấu hình Edge Microgateway

Bạn có thể triển khai và định cấu hình nhiều phiên bản của dịch vụ Edge Microgateway cho cụm Kubernetes. Trường hợp sử dụng này cho phép bạn định cấu hình từng thực thể microgateway với bộ trình bổ trợ và tham số riêng. Ví dụ:

  • Edge Microgateway Service A chỉ yêu cầu trình bổ trợ ngăn chặn tăng đột biến.
  • Dịch vụ B của Edge Microgateway yêu cầu hạn mức và trình bổ trợ OAuth, nhưng không yêu cầu bắt tăng đột biến.

Để giải quyết trường hợp sử dụng này, hãy sử dụng không gian tên của Kubernetes. Ví dụ: bạn có thể triển khai Dịch vụ Edge Microgateway A sang không gian tên foo và Dịch vụ Edge Microgateway B thành không gian tên bar.

Trong ví dụ sau, Edge Microgateway được định cấu hình trong tổ chức OrgA được triển khai dưới dạng một dịch vụ cho không gian tên foo bằng cách sử dụng tuỳ chọn -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

Tương tự, trong ví dụ sau, Edge Microgateway được định cấu hình trong tổ chức OrgB được triển khai dưới dạng dịch vụ cho không gian tên bar bằng tuỳ chọn -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