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

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Thêm một 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 siêu nhỏ bằng cách viết các trình bổ trợ tuỳ chỉnh. Các 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 truyền qua cổng siêu nhỏ.

Phần này giải thích cách đóng gói và triển khai các trình bổ trợ cho một phiên bản Edge Microgateway đang 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 với việc viết và định cấu hình các trình bổ trợ cho chế độ thiết lập Edge Microgateway tiêu chuẩn. Nếu không, hãy xem phần Phát triển các 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 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 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 (đâ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 một 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 Dockerfile.
  2. Thêm đoạn 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ợ của bạn 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 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 đây, 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 có 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 nhóm mới được tạo.

Nếu bạn triển khai Edge Microgateway dưới dạng một 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 việc 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ề từ lệnh edgemicro configure.
    • configuration_secret – Khoá bí mật do lệnh edgemicro configure trả về.
    • 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 – Registry 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 vào.
    • 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 như mong đợi hay không. Ví dụ: đối với trình bổ trợ "response uppercase", văn bản phản hồi sẽ được chuyển đổi thành tất cả 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

Tiêm theo cách thủ công là một phương pháp đơn giản, trong đó bạn tiêm 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ề từ lệnh edgemicro configure.
    • your_secret – Khoá bí mật do lệnh edgemicro configure trả về.
    • 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 – Registry 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 vào.
    • 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 bạn có nhận được hành vi như mong đợi hay không. Ví dụ: đối với trình bổ trợ "response uppercase", 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 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 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 đang 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 và môi trường của bạn:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Mã hoá nội dung của tệp cấu hình hai lần bằng Base64:

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

Ví dụ về dịch vụ

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

  1. Lấy các hộp.

    kubectl get pods

    Ví dụ về đầu ra:

    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

    Ví dụ về đầu ra:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. Lấy lại các nhóm video. Một nhóm mới sẽ khởi động và nhận các thay đổi về cấu hình của bạn.

    kubectl get pods

    Ví dụ về đầu ra:

    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 trình 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 quy trình triển khai:

    kubectl get deployments

    Ví dụ về đầu ra:

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

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

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

    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 hoạt động triển khai để xác minh rằng tính năng mở rộng quy mô đã được bật:

    kubectl get deployments

    Ví dụ về đầu ra:

    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 2 bản sao.

  5. Kiểm tra các pod:

    kubectl get pods

    Ví dụ về đầu ra:

    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
    

    Đầu ra cho thấy cả hai bản sao đều đang ở 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 các 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 phiên bản microgateway bằng bộ trình bổ trợ và thông số riêng. Ví dụ:

  • Dịch vụ Edge Microgateway A chỉ yêu cầu trình bổ trợ chặn độ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 tính năng chặn đột biến.

Để giải quyết trường hợp sử dụng này, hãy dùng không gian tên Kubernetes. Ví dụ: bạn có thể triển khai Dịch vụ A của Edge Microgateway vào không gian tên foo và Dịch vụ B của Edge Microgateway 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 sẽ đượ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 lựa 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 sẽ được triển khai dưới dạng một dịch vụ cho không gian tên bar bằng cách sử dụng lựa 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