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à chức năng mới vào cổng vi mô bằng cách viết trình bổ trợ tuỳ chỉnh. Trình bổ trợ tuỳ chỉnh cho phép bạn tương tác theo phương thức lập trình với các yêu cầu và phản hồi chuyển 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 một thực thể Edge Microgateway chạy trong cụm Kubernetes.

Phần còn lại của phần này giả định rằng bạn đã quen thuộc với việc viết và định cấu hình các trình bổ trợ cho chế độ thiết lập Cổng vi mô Edge tiêu chuẩn. Nếu không, 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ợ theo hướng dẫn trong phần Viế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. Thư mục trình bổ trợ phải tuân theo một cấu trúc nhất định. 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ợ tuỳ chỉnh (các tên này chỉ là ví dụ, tên thư mục của bạn có thể khác):

    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 có 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 một 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. Bạn có thể sử dụng bất kỳ sổ đăng ký nào mà bạn muốn, chẳng hạn như 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 vào. Trình bổ trợ oauth đã có sẵn theo mặc định.

  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ẽ lấy 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 đó cho mọi pod mới tạo.

Nếu bạn đã triển khai Cổng vi mô Edge dưới dạng dịch vụ

Sử dụng lệnh edgemicroctl để chèn cấu hình Edge Microgateway đã cập nhật:

  1. Cập nhật bản 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 bạn chỉ định trong lệnh edgemicro configure.
    • configuration_key – Khoá được trả về từ 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 – Cấu phần đă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 nơi 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ợ. Gọi API để xem bạn có nhận được hành vi dự kiến hay không. Ví dụ: đối với trình bổ trợ "response uppercase" (phản hồi viết hoa), văn bản phản hồi sẽ đượ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
    
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 bạn chỉ định trong lệnh edgemicro configure.
    • your_key – Khoá được trả về từ 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 – Cấu phần đă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 nơi 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ụ 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 liệu bạn có nhận được hành vi dự kiến hay không. Ví dụ: đối với trình bổ trợ "response uppercase" (phản hồi viết hoa), văn bản phản hồi sẽ đượ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 sửa đổi cấu hình Cổng vi mô Edge. 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 một tham số cấu hình. Phần này giải thích cách thực hiện và áp dụng các thay đổi về cấu hình cho Edge Microgateway chạy trong Kubernetes.

  1. Tạo tệp cấu hình secret.yaml như sau:

    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 thay đổi đối với tệp cấu hình Edge Microgateway cho tổ chức và môi trường của bạn:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Mã hoá Base64 hai lần 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 

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

Ví dụ về dịch vụ

Ví dụ sau đây minh hoạ cách cập nhật một bản triển khai dịch vụ bằng một

  1. Tải các pod.

    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. Tải lại các nhóm. Một nhóm mới sẽ khởi động và nhận các thay đổi về 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 mở rộng quy mô 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 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. Điều chỉnh quy mô triển khai từ 1 đến số lượng bản sao tuỳ ý. 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 tính năng tự động điều chỉnh theo quy mô, hãy sử dụng lệnh sau:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. Kiểm tra các bản triển khai để xác minh rằng bạn đã bật tính năng mở rộng quy mô:

    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 Cổng vi mô Edge

Bạn có thể triển khai và định cấu hình nhiều thực thể của dịch vụ Cổng vi mô Edge 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ể cổng vi mô bằng bộ trình bổ trợ và thông số riêng. Ví dụ:

  • Dịch vụ Microgateway Edge A chỉ yêu cầu trình bổ trợ chặn sự cố tăng đột biến.
  • Dịch vụ Microgateway Edge B yêu cầu trình bổ trợ hạn mức và oauth, nhưng không yêu cầu tính năng chặn độ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ụ Microgateway Edge A vào không gian tên foo và Dịch vụ Microgateway Edge B vào 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 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 cách sử dụ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