Thứ tư, 19/09/2018 | 00:00 GMT+7

Cách cài đặt và bảo mật OpenFaaS bằng Docker Swarm trên Ubuntu 16.04

Kiến trúc serverless ẩn các version server khỏi nhà phát triển và thường để lộ API cho phép các nhà phát triển chạy ứng dụng của họ trên cloud . Cách tiếp cận này giúp các nhà phát triển triển khai ứng dụng nhanh chóng, vì họ có thể để lại các version cung cấp và duy trì cho các group DevOps thích hợp. Nó cũng làm giảm chi phí cơ sở hạ tầng, vì với công cụ thích hợp, bạn có thể mở rộng các version của bạn theo nhu cầu.

Các ứng dụng chạy trên nền tảng không server được gọi là chức năng không server . Một hàm là mã thực thi được chứa, được sử dụng để thực hiện các hoạt động cụ thể. Các ứng dụng chứa các ứng dụng đảm bảo bạn có thể tái tạo một môi trường nhất quán trên nhiều máy, cho phép cập nhật và mở rộng.

OpenFaaS là một khuôn khổ open-souce và miễn phí để xây dựng và lưu trữ các chức năng serverless. Với sự hỗ trợ chính thức cho cả Docker SwarmKubernetes , nó cho phép bạn triển khai các ứng dụng của bạn bằng cách sử dụng API mạnh mẽ, giao diện dòng lệnh hoặc giao diện user Web. Nó đi kèm với các chỉ số tích hợp do Prometheus cung cấp và hỗ trợ tự động mở rộng quy mô theo yêu cầu, cũng như mở rộng quy mô từ 0.

Trong hướng dẫn này, bạn sẽ cài đặt và sử dụng OpenFaaS với Docker Swarm chạy trên Ubuntu 16.04 và bảo mật giao diện user Web và API của nó bằng cách cài đặt Traefik với Let's Encypt . Điều này đảm bảo giao tiếp an toàn giữa các node trong cụm, cũng như giữa OpenFaaS và các nhà khai thác của nó.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

  • Ubuntu 16.04 chạy trên máy local của bạn. Bạn có thể sử dụng các bản phân phối và hệ điều hành khác, nhưng hãy đảm bảo bạn sử dụng tập lệnh OpenFaaS thích hợp cho hệ điều hành của bạn và cài đặt tất cả các phần phụ thuộc được liệt kê trong các yêu cầu này.
  • git , curljq được cài đặt trên máy local của bạn. Bạn sẽ sử dụng git để sao chép repository OpenFaaS, curl để kiểm tra API và jq để chuyển đổi các phản hồi JSON thô từ API thành JSON mà con người có thể đọc được. Để cài đặt các phụ thuộc cho cài đặt này, hãy sử dụng các lệnh sau: sudo apt-get update && sudo apt-get install git curl jq
  • Docker đã được cài đặt, làm theo các Bước 1 và 2 của Cách cài đặt và sử dụng Docker trên Ubuntu 16.04 .
  • Một account Docker Hub . Để triển khai các chức năng cho OpenFaaS, chúng cần được xuất bản trên register containers công khai. Ta sẽ sử dụng Docker Hub cho hướng dẫn này, vì nó miễn phí và được sử dụng rộng rãi. Đảm bảo xác thực bằng Docker trên máy local của bạn bằng cách sử dụng lệnh docker login .
  • Docker Machine đã được cài đặt, theo Cách cung cấp và Quản lý Server Docker Từ xa với Docker Machine trên Ubuntu 16.04 .
  • Mã thông báo truy cập cá nhân DigitalOcean. Để tạo mã thông báo, hãy làm theo các hướng dẫn sau .
  • Một cụm Docker Swarm gồm 3 nút, được cung cấp theo Cách tạo một cụm Docker Containers với Docker Swarm và DigitalOcean trên Ubuntu 16.04 .
  • Tên domain được đăng ký đầy đủ với bản ghi A trỏ đến một trong các trường hợp trong Docker Swarm. Trong suốt hướng dẫn, bạn sẽ thấy example.com là một domain mẫu. Bạn nên thay thế domain này bằng domain của riêng mình, bạn có thể mua trên Namecheap hoặc nhận miễn phí trên Freenom .Bạn cũng có thể sử dụng một công ty đăng ký domain khác mà bạn chọn.

Bước 1 - Download OpenFaaS và cài đặt OpenFaaS CLI

Để triển khai OpenFaaS cho Docker Swarm của bạn, bạn cần download file kê khai và tập lệnh triển khai. Cách dễ nhất để lấy chúng là sao chép repository OpenFaas chính thức và kiểm tra thẻ thích hợp, đại diện cho bản phát hành OpenFaaS.

Ngoài việc sao chép repository , bạn cũng sẽ cài đặt FaaS CLI, một tiện ích dòng lệnh mạnh mẽ mà bạn có thể sử dụng để quản lý và triển khai các chức năng mới từ terminal của bạn . Nó cung cấp các mẫu để tạo các hàm của bạn trong hầu hết các ngôn ngữ lập trình chính. Trong Bước 7 , bạn sẽ sử dụng nó để tạo một hàm Python và triển khai nó trên OpenFaaS.

Đối với hướng dẫn này, bạn sẽ triển khai OpenFaaS v 0.8.9 . Trong khi các bước để triển khai các version khác sẽ tương tự, hãy đảm bảo kiểm tra bảng thay đổi của dự án đảm bảo không có thay đổi vi phạm nào.

Đầu tiên, chuyển đến folder chính của bạn và chạy lệnh sau để sao chép repository vào folder ~/faas :

  • cd ~
  • git clone https://github.com/openfaas/faas.git

Điều hướng đến folder ~/faas mới được tạo:

  • cd ~/faas

Khi sao chép repository , bạn sẽ nhận được các file từ nhánh chính chứa các thay đổi mới nhất. Vì các thay đổi vi phạm có thể xâm nhập vào nhánh chính, nên nó không được khuyến khích sử dụng trong production . Thay vào đó, hãy kiểm tra thẻ 0.8.9 :

  • git checkout 0.8.9

Đầu ra chứa thông báo về việc kiểm tra thành công và cảnh báo về việc áp dụng các thay đổi đối với nhánh này:

Output
Note: checking out '0.8.9'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at 8f0d2d1 Expose scale-function endpoint

Nếu bạn thấy bất kỳ lỗi nào, hãy đảm bảo giải quyết chúng theo hướng dẫn trên màn hình trước khi tiếp tục.

Với repository OpenFaaS đã được download , hoàn chỉnh với các file kê khai cần thiết, hãy tiến hành cài đặt FaaS CLI.

Cách dễ nhất để cài đặt FaaS CLI là sử dụng tập lệnh chính thức. Trong terminal của bạn, chuyển đến folder chính của bạn và download tập lệnh bằng lệnh sau:

  • cd ~
  • curl -sSL -o faas-cli.sh https://cli.openfaas.com

Thao tác này sẽ tải tập lệnh faas-cli.sh vào folder chính của bạn. Trước khi thực thi tập lệnh, bạn nên kiểm tra nội dung:

  • less faas-cli.sh

Bạn có thể thoát khỏi bản xem trước bằng cách nhấn q . Khi bạn đã xác minh nội dung của tập lệnh, bạn có thể tiến hành cài đặt bằng cách cấp quyền thực thi cho tập lệnh và thực thi nó. Thực thi tập lệnh dưới dạng folder root để nó tự động sao chép vào PATH của bạn:

  • chmod +x faas-cli.sh
  • sudo ./faas-cli.sh

Đầu ra chứa thông tin về tiến trình cài đặt và version CLI mà bạn đã cài đặt:

Output
x86_64 Downloading package https://github.com/openfaas/faas-cli/releases/download/0.6.17/faas-cli as /tmp/faas-cli Download complete. Running as root - Attempting to move faas-cli to /usr/local/bin New version of faas-cli installed to /usr/local/bin Creating alias 'faas' for 'faas-cli'. ___ _____ ____ / _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___| | | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \ | |_| | |_) | __/ | | | _| (_| | (_| |___) | \___/| .__/ \___|_| |_|_| \__,_|\__,_|____/ |_| CLI: commit: b5597294da6dd98457434fafe39054c993a5f7e7 version: 0.6.17

Nếu bạn thấy lỗi, hãy đảm bảo giải quyết nó theo hướng dẫn trên màn hình trước khi tiếp tục với hướng dẫn.

Đến đây, bạn đã cài đặt FaaS CLI. Để tìm hiểu thêm về các lệnh bạn có thể sử dụng, hãy thực thi CLI mà không có bất kỳ đối số nào:

  • faas-cli

Đầu ra hiển thị các lệnh và cờ có sẵn:

Output
___ _____ ____ / _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___| | | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \ | |_| | |_) | __/ | | | _| (_| | (_| |___) | \___/| .__/ \___|_| |_|_| \__,_|\__,_|____/ |_| Manage your OpenFaaS functions from the command line Usage: faas-cli [flags] faas-cli [command] Available Commands: build Builds OpenFaaS function containers cloud OpenFaaS Cloud commands deploy Deploy OpenFaaS functions help Help about any command invoke Invoke an OpenFaaS function list List OpenFaaS functions login Log in to OpenFaaS gateway logout Log out from OpenFaaS gateway new Create a new template in the current folder with the name given as name push Push OpenFaaS functions to remote registry (Docker Hub) remove Remove deployed OpenFaaS functions store OpenFaaS store commands template Downloads templates from the specified github repo version Display the clients version information Flags: --filter string Wildcard to match with function names in YAML file -h, --help help for faas-cli --regex string Regex to match with function names in YAML file -f, --yaml string Path to YAML file describing function(s) Use "faas-cli [command] --help" for more information about a command.

Đến đây bạn đã có được thành công các file kê khai OpenFaaS và cài đặt FaaS CLI, bạn có thể sử dụng để quản lý version OpenFaaS từ terminal của bạn .

Thư mục ~/faas chứa các file từ bản phát hành 0.8.9 , nghĩa là bây giờ bạn có thể triển khai OpenFaaS cho Docker Swarm của bạn . Trước khi làm như vậy, hãy sửa đổi file kê khai triển khai để bao gồm Traefik, file này sẽ bảo mật cài đặt OpenFaaS của bạn bằng cách cài đặt Let's Encrypt.

Bước 2 - Cấu hình Traefik

Traefik là một Reverse Proxy nhận biết Docker đi kèm với hỗ trợ SSL do Let's Encrypt cung cấp. Giao thức SSL đảm bảo bạn giao tiếp với cụm Swarm một cách an toàn bằng cách mã hóa dữ liệu bạn gửi và nhận giữa các node .

Để sử dụng Traefik với OpenFaaS, bạn cần sửa đổi file kê khai triển khai OpenFaaS để bao gồm Traefik và yêu cầu OpenFaaS sử dụng Traefik thay vì trực tiếp hiển thị các dịch vụ của nó với internet.

Điều hướng trở lại folder ~/faas và mở file kê khai triển khai OpenFaaS trong editor :

  • cd ~/faas
  • nano ~/faas/docker-compose.yml

Lưu ý: Tệp kê khai Docker Compose sử dụng định dạng YAML , định dạng này nghiêm cấm các tab và yêu cầu hai dấu cách để thụt lề. Tệp kê khai sẽ không triển khai nếu file được định dạng không chính xác.

Việc triển khai OpenFaaS bao gồm một số dịch vụ, được xác định theo chỉ thị services , cung cấp các phụ thuộc cần thiết để chạy OpenFaaS, API OpenFaaS và giao diện user Web cũng như Prometheus và AlertManager (để xử lý các chỉ số).

Ở đầu phần services , hãy thêm một dịch vụ mới được gọi là traefik , sử dụng hình ảnh traefik:v1.6 để triển khai:

~ / faas / docker -omp.yml
version: "3.3" services:     traefik:         image: traefik:v1.6     gateway:          ... 

Hình ảnh Traefik đến từ kho lưu trữ Traefik Docker Hub , nơi bạn có thể tìm thấy danh sách tất cả các hình ảnh có sẵn.

Tiếp theo, hãy hướng dẫn Docker chạy Traefik bằng cách sử dụng command . Thao tác này sẽ chạy Traefik, cấu hình nó hoạt động với Docker Swarm và cung cấp SSL bằng Let's Encrypt. Các cờ sau sẽ cấu hình Traefik:

  • --docker.* : Các cờ này yêu cầu Traefik sử dụng Docker và chỉ định rằng nó đang chạy trong một cụm Docker Swarm.
  • --web=true : Cờ này bật giao diện user Web của Traefik.
  • --defaultEntryPoints--entryPoints : Các cờ này xác định các điểm nhập và giao thức sẽ được sử dụng. Trong trường hợp của ta , điều này bao gồm HTTP trên cổng 80 và HTTPS trên cổng 443 .
  • --acme.* : Các cờ này yêu cầu Traefik sử dụng ACME để tạo certificate Let's Encrypt nhằm bảo mật cụm OpenFaaS của bạn bằng SSL.

Hãy chắc chắn rằng để thay thế cho example.com placeholders domain trong --acme.domains--acme.email cờ với các domain bạn sẽ sử dụng để truy cập OpenFaaS. Bạn có thể chỉ định nhiều domain bằng cách phân tách chúng bằng dấu phẩy và dấu cách. Địa chỉ email dành cho các thông báo và cảnh báo SSL, bao gồm cả cảnh báo hết hạn certificate . Trong trường hợp này, Traefik sẽ tự động xử lý việc gia hạn certificate , vì vậy bạn có thể bỏ qua cảnh báo hết hạn.

Thêm khối mã sau vào bên dưới chỉ thị image và bên trên gateway :

~ / faas / docker -omp.yml
...     traefik:         image: traefik:v1.6         command: -c --docker=true             --docker.swarmmode=true             --docker.domain=traefik             --docker.watch=true             --web=true             --defaultEntryPoints='http,https'             --entryPoints='Name:https Address::443 TLS'             --entryPoints='Name:http Address::80'             --acme=true             --acme.entrypoint='https'             --acme.httpchallenge=true             --acme.httpchallenge.entrypoint='http'             --acme.domains='example.com, www.example.com'             --acme.email='sammy@example.com'             --acme.ondemand=true             --acme.onhostrule=true             --acme.storage=/etc/traefik/acme/acme.json ... 

Với command , hãy cho Traefik biết những cổng nào sẽ hiển thị với internet. Traefik sử dụng cổng 8080 cho các hoạt động của bạn , trong khi OpenFaaS sẽ sử dụng cổng 80 cho giao tiếp không an toàn và cổng 443 cho giao tiếp an toàn.

Thêm chỉ thị ports sau bên dưới command thị command . Ký hiệu port-internet : port-docker đảm bảo cổng ở phía bên trái được Traefik tiếp xúc với internet và ánh xạ đến cổng của container ở phía bên phải:

~ / faas / docker -omp.yml
        ...         command:             ...         ports:             - 80:80             - 8080:8080             - 443:443         ... 

Tiếp theo, sử dụng chỉ thị volumes , mount file Docker socket từ server đang chạy Docker sang Traefik. Tệp Docker socket giao tiếp với API Docker để quản lý các containers của bạn và nhận thông tin chi tiết về chúng, chẳng hạn như số lượng containers và địa chỉ IP của chúng. Bạn cũng sẽ gắn dung lượng được gọi là acme , mà ta sẽ xác định sau trong bước này.

Chỉ thị networks hướng dẫn Traefik sử dụng mạng functions , được triển khai cùng với OpenFaaS. Mạng này đảm bảo các chức năng có thể giao tiếp với các phần khác của hệ thống, bao gồm cả API.

Chỉ thị deploy hướng dẫn Docker chỉ chạy Traefik trên nút trình quản lý Docker Swarm.

Thêm các chỉ thị sau bên dưới chỉ thị ports :

~ / faas / docker -omp.yml
        ...         volumes:             - "/var/run/docker.sock:/var/run/docker.sock"             - "acme:/etc/traefik/acme"         networks:             - functions         deploy:             placement:                 constraints: [node.role == manager] 

Đến đây, khối dịch vụ traefik sẽ trông như thế này:

~ / faas / docker -omp.yml
version: "3.3" services:     traefik:         image: traefik:v1.6         command: -c --docker=true             --docker.swarmmode=true             --docker.domain=traefik             --docker.watch=true             --web=true             --defaultEntryPoints='http,https'             --entryPoints='Name:https Address::443 TLS'             --entryPoints='Name:http Address::80'                         --acme=true             --acme.entrypoint='https'             --acme.httpchallenge=true             --acme.httpchallenge.entrypoint='http'             --acme.domains='example.com, www.example.com'             --acme.email='sammy@example.com'             --acme.ondemand=true             --acme.onhostrule=true             --acme.storage=/etc/traefik/acme/acme.json         ports:             - 80:80             - 8080:8080             - 443:443         volumes:             - "/var/run/docker.sock:/var/run/docker.sock"             - "acme:/etc/traefik/acme"         networks:           - functions         deploy:           placement:             constraints: [node.role == manager]      gateway:         ... 

Mặc dù cấu hình này đảm bảo Traefik sẽ được triển khai với OpenFaaS, bạn cũng cần phải cấu hình OpenFaaS để hoạt động với Traefik. Theo mặc định, dịch vụ gateway được cấu hình để chạy trên cổng 8080 , cổng này trùng lặp với Traefik.

Dịch vụ gateway cung cấp cổng API mà bạn có thể sử dụng để triển khai, chạy và quản lý các chức năng của bạn . Nó xử lý các chỉ số (thông qua Prometheus) và tự động điều chỉnh tỷ lệ, đồng thời lưu trữ giao diện user Web.

Mục tiêu của ta là hiển thị dịch vụ gateway bằng Traefik thay vì hiển thị trực tiếp với internet.

Định vị dịch vụ gateway , trông giống như sau:

~ / faas / docker -omp.yml
...     gateway:         ports:             - 8080:8080         image: openfaas/gateway:0.8.7         networks:             - functions         environment:             functions_provider_url: "http://faas-swarm:8080/"             read_timeout:  "300s"        # Maximum time to read HTTP request             write_timeout: "300s"        # Maximum time to write HTTP response             upstream_timeout: "300s"     # Maximum duration of upstream function call - should be more than read_timeout and write_timeout             dnsrr: "true"               # Temporarily use dnsrr in place of VIP while issue persists on PWD             faas_nats_address: "nats"             faas_nats_port: 4222             direct_functions: "true"    # Functions are invoked directly over the overlay network             direct_functions_suffix: ""             basic_auth: "${BASIC_AUTH:-true}"             secret_mount_path: "/run/secrets/"             scale_from_zero: "false"         deploy:             resources:                 # limits:   # Enable if you want to limit memory usage                 #     memory: 200M                 reservations:                     memory: 100M             restart_policy:                 condition: on-failure                 delay: 5s                 max_attempts: 20                 window: 380s             placement:                 constraints:                     - 'node.platform.os == linux'         secrets:             - basic-auth-user             - basic-auth-password ... 

Xóa chỉ thị ports khỏi dịch vụ để tránh hiển thị trực tiếp dịch vụ gateway .

Tiếp theo, thêm dòng sau lables chỉ thị cho deploy phần của gateway dịch vụ. Chỉ thị này hiển thị các điểm cuối /ui , /system/function trên cổng 8080 qua Traefik:

~ / faas / docker -omp.yml
        ...         deploy:             labels:                 - traefik.port=8080                 - traefik.frontend.rule=PathPrefix:/ui,/system,/function             resources:             ...             

Điểm cuối /ui hiển thị Giao diện user Web OpenFaaS, được đề cập trong Bước 6 của hướng dẫn này. Điểm cuối /system là điểm cuối API được sử dụng để quản lý OpenFaaS, trong khi điểm cuối /function hiển thị các điểm cuối API để quản lý và chạy các chức năng. Bước 5 của hướng dẫn này trình bày chi tiết về API OpenFaaS.

Sau khi sửa đổi, dịch vụ gateway của bạn sẽ giống như sau:

~ / faas / docker -omp.yml
...     gateway:                image: openfaas/gateway:0.8.7         networks:             - functions         environment:             functions_provider_url: "http://faas-swarm:8080/"             read_timeout:  "300s"        # Maximum time to read HTTP request             write_timeout: "300s"        # Maximum time to write HTTP response             upstream_timeout: "300s"     # Maximum duration of upstream function call - should be more than read_timeout and write_timeout             dnsrr: "true"               # Temporarily use dnsrr in place of VIP while issue persists on PWD             faas_nats_address: "nats"             faas_nats_port: 4222             direct_functions: "true"    # Functions are invoked directly over the overlay network             direct_functions_suffix: ""             basic_auth: "${BASIC_AUTH:-true}"             secret_mount_path: "/run/secrets/"             scale_from_zero: "false"         deploy:             labels:                 - traefik.port=8080                 - traefik.frontend.rule=PathPrefix:/ui,/system,/function             resources:                 # limits:   # Enable if you want to limit memory usage                 #     memory: 200M                 reservations:                     memory: 100M             restart_policy:                 condition: on-failure                 delay: 5s                 max_attempts: 20                 window: 380s             placement:                 constraints:                     - 'node.platform.os == linux'         secrets:             - basic-auth-user             - basic-auth-password ... 

Cuối cùng, hãy xác định dung lượng acme được sử dụng để lưu trữ certificate Let's Encrypt. Ta có thể xác định một ổ đĩa trống, nghĩa là dữ liệu sẽ không tồn tại nếu bạn phá hủy containers . Nếu bạn phá hủy containers , certificate sẽ được tạo lại vào lần tiếp theo bạn khởi động Traefik.

Thêm chỉ thị volumes sau vào dòng cuối cùng của file :

~ / faas / docker -omp.yml
... volumes:     acme: 

Sau khi hoàn tất, hãy lưu file và đóng editor của bạn. Đến đây, bạn đã cấu hình Traefik để bảo vệ việc triển khai OpenFaaS và Docker Swarm của bạn . Đến đây bạn đã sẵn sàng triển khai nó cùng với OpenFaaS trên cụm Swarm của bạn .

Bước 3 - Triển khai OpenFaaS

Đến đây bạn đã chuẩn bị file kê khai triển khai OpenFaaS, bạn đã sẵn sàng triển khai nó và bắt đầu sử dụng OpenFaaS. Để triển khai, bạn sẽ sử dụng tập lệnh deploy_stack.sh . Tập lệnh này được sử dụng trên các hệ điều hành Linux và macOS, nhưng trong folder OpenFaaS, bạn cũng có thể tìm thấy các tập lệnh thích hợp cho các hệ thống WindowsARM .

Trước khi triển khai OpenFaaS, bạn cần hướng dẫn docker-machine thực thi các lệnh Docker từ tập lệnh trên một trong các máy trong Swarm. Đối với hướng dẫn này, hãy sử dụng trình quản lý Swarm .

Nếu bạn đã cấu hình lệnh docker-machine use , bạn có thể sử dụng nó:

  • docker-machine use node-1

Nếu không, hãy sử dụng lệnh sau:

  • eval $(docker-machine env node-1)

Tập lệnh deploy_stack.sh triển khai tất cả các tài nguyên cần thiết để OpenFaaS hoạt động như mong đợi, bao gồm file cấu hình, cài đặt mạng, dịch vụ và thông tin đăng nhập để ủy quyền với server OpenFaaS.

Hãy thực thi tập lệnh, sẽ mất vài phút để hoàn tất việc triển khai:

  • ~/faas/deploy_stack.sh

Đầu ra hiển thị danh sách tài nguyên được tạo trong quá trình triển khai, cũng như thông tin xác thực bạn sẽ sử dụng để truy cập server OpenFaaS và lệnh FaaS CLI.

Viết ra các thông tin đăng nhập này, vì bạn cần chúng trong suốt hướng dẫn để truy cập vào giao diện user Web và API:

Output
Attempting to create credentials for gateway.. roozmk0y1jkn17372a8v9y63g q1odtpij3pbqrmmf8msy3ampl [Credentials] username: admin password: your_openfaas_password echo -n your_openfaas_password | faas-cli login --username=admin --password-stdin Enabling basic authentication for gateway.. Deploying OpenFaaS core services Creating network func_functions Creating config func_alertmanager_config Creating config func_prometheus_config Creating config func_prometheus_rules Creating service func_alertmanager Creating service func_traefik Creating service func_gateway Creating service func_faas-swarm Creating service func_nats Creating service func_queue-worker Creating service func_prometheus

Nếu bạn thấy bất kỳ lỗi nào, hãy làm theo hướng dẫn trên màn hình để giải quyết chúng trước khi tiếp tục hướng dẫn.

Trước khi tiếp tục, hãy xác thực FaaS CLI với server OpenFaaS bằng lệnh được cung cấp bởi tập lệnh triển khai.

Tập lệnh xuất ra các cờ bạn cần cung cấp cho lệnh, nhưng bạn cần thêm một cờ bổ sung, --gateway , với địa chỉ của server OpenFaaS của bạn, vì FaaS CLI giả định server cổng đang chạy trên localhost :

  • echo -n your_openfaas_password | faas-cli login --username=admin --password-stdin --gateway https://example.com

Đầu ra chứa thông báo về ủy quyền thành công:

Output
Calling the OpenFaaS server to validate the credentials... credentials saved for admin https://example.com

Đến đây, bạn có một server OpenFaaS đầy đủ chức năng được triển khai trên cụm Docker Swarm của bạn , cũng như FaaS CLI được cấu hình để sử dụng server mới được triển khai của bạn. Trước khi thử nghiệm cách sử dụng OpenFaaS, hãy triển khai một số hàm mẫu để bắt đầu.

Bước 4 - Triển khai các hàm mẫu OpenFaaS

Ban đầu, OpenFaaS xuất hiện mà không có bất kỳ chức năng nào được triển khai. Để bắt đầu thử nghiệm và sử dụng nó, bạn cần một số chức năng.

Dự án OpenFaaS lưu trữ một số hàm mẫu và bạn có thể tìm thấy danh sách các hàm có sẵn cùng với bản kê khai triển khai của chúng trong repository lưu trữ OpenFaaS . Một số chức năng mẫu bao gồm nodeinfo , cho hiển thị thông tin về nút nơi một chức năng đang chạy, wordcount , để đếm số từ trong một yêu cầu trôi qua, và markdown , để chuyển đổi đầu vào markdown truyền cho kết quả HTML.

Tệp kê khai stack.yml trong folder ~/faas triển khai một số hàm mẫu cùng với các hàm được đề cập ở trên. Bạn có thể triển khai nó bằng FaaS CLI.

Chạy lệnh faas-cli , lệnh này đưa đường dẫn đến file kê khai ngăn xếp và địa chỉ server OpenFaaS của bạn:

  • faas-cli deploy -f ~/faas/stack.yml --gateway https://example.com

Đầu ra chứa mã trạng thái và thông báo cho biết việc triển khai có thành công hay không:

Output
Deploying: wordcount. Deployed. 200 OK. URL: https://example.com/function/wordcount Deploying: base64. Deployed. 200 OK. URL: https://example.com/function/base64 Deploying: markdown. Deployed. 200 OK. URL: https://example.com/function/markdown Deploying: hubstats. Deployed. 200 OK. URL: https://example.com/function/hubstats Deploying: nodeinfo. Deployed. 200 OK. URL: https://example.com/function/nodeinfo Deploying: echoit. Deployed. 200 OK. URL: https://example.com/function/echoit

Nếu bạn thấy bất kỳ lỗi nào, hãy đảm bảo giải quyết chúng theo hướng dẫn trên màn hình.

Khi việc triển khai ngăn xếp được hoàn tất, hãy liệt kê tất cả các chức năng đảm bảo rằng chúng đã được triển khai và sẵn sàng sử dụng:

  • faas-cli list --gateway https://example.com

Đầu ra chứa danh sách các hàm, cùng với số bản sao của chúng và số lượng lệnh gọi:

Output
Function Invocations Replicas markdown 0 1 wordcount 0 1 base64 0 1 nodeinfo 0 1 hubstats 0 1 echoit 0 1

Nếu bạn không thấy các chức năng của bạn ở đây, hãy đảm bảo lệnh faas-cli deploy thực thi thành công.

Như vậy, bạn có thể sử dụng các hàm OpenFaaS mẫu để kiểm tra và chứng minh cách sử dụng API, Giao diện user web và CLI. Trong bước tiếp theo, bạn sẽ bắt đầu bằng cách sử dụng API OpenFaaS để liệt kê và chạy các hàm.

Bước 5 - Sử dụng API OpenFaaS

OpenFaaS đi kèm với một API mạnh mẽ mà bạn có thể sử dụng để quản lý và thực thi các chức năng không cần server của bạn . Hãy sử dụng Swagger , một công cụ để lưu trữ, thử nghiệm và lập tài liệu API, để duyệt qua tài liệu API, sau đó sử dụng API để liệt kê và chạy các chức năng.

Với Swagger, bạn có thể kiểm tra tài liệu API để tìm hiểu những điểm cuối nào có sẵn và cách bạn có thể sử dụng chúng. Trong repository OpenFaaS, bạn có thể tìm thấy thông số kỹ thuật API Swagger , được dùng với editor Swagger để chuyển đổi thông số kỹ thuật sang dạng con người có thể đọc được.

Điều hướng trình duyệt web đến http://editor.swagger.io/ . Bạn sẽ được chào đón với màn hình sau:

Trang chào mừng của Swagger Editor

Tại đây, bạn sẽ tìm thấy một editor chứa mã nguồn cho đặc tả Swagger mẫu và tài liệu API có thể đọc được ở bên phải.

Hãy nhập đặc tả OpenFaaS Swagger. Trong menu trên cùng, nhấp vào nút Tệp , sau đó nhấp vào Nhập URL :

URL nhập của Swagger Editor

Bạn sẽ thấy một cửa sổ bật lên, nơi bạn cần nhập địa chỉ của đặc tả API Swagger. Nếu bạn không thấy cửa sổ bật lên, hãy đảm bảo cửa sổ bật lên được bật cho trình duyệt web .

Trong trường, hãy nhập liên kết đến đặc tả API Swagger OpenFaaS: https://raw.githubusercontent.com/openfaas/faas/master/api-docs/swagger.yml

URL đầu vào của Swagger Editor

Sau khi nhấp vào nút OK , editor Swagger sẽ hiển thị cho bạn tham chiếu API cho OpenFaaS, sẽ giống như sau:

Đặc tả API OpenFaaS của Swagger Editor

Ở phía bên trái, bạn có thể thấy nguồn của file tham chiếu API, trong khi ở phía bên phải, bạn có thể thấy danh sách các điểm cuối cùng với các mô tả ngắn. Nhấp vào một điểm cuối sẽ cho bạn biết thêm chi tiết về nó, bao gồm những thông số mà nó sử dụng, phương pháp nó sử dụng và các phản hồi có thể có:

Thông tin chi tiết về điểm cuối của Swagger Editor

Khi bạn biết điểm cuối có sẵn và những thông số nào mà chúng mong đợi, bạn có thể sử dụng chúng để quản lý các chức năng của bạn .

Tiếp theo, bạn sẽ sử dụng lệnh curl để giao tiếp với API, vì vậy hãy chuyển trở lại terminal của bạn. Với cờ -u , bạn có thể chuyển cặp admin:your_openfaas_password mà bạn đã có ở Bước 3, trong khi cờ -X sẽ xác định phương thức yêu cầu. Bạn cũng sẽ chuyển URL điểm cuối của bạn , https:// example.com /system/functions :

  • curl -u admin:your_openfaas_password -X GET https://example.com/system/functions

Bạn có thể thấy phương thức bắt buộc cho mỗi điểm cuối trong tài liệu API.

Trong Bước 4, bạn đã triển khai một số hàm mẫu, sẽ xuất hiện trong kết quả :

Output
[{"name":"base64","image":"functions/alpine:latest","invocationCount":0,"replicas":1,"envProcess":"base64","availableReplicas":0,"labels":{"com.openfaas.function":"base64","function":"true"}},{"name":"nodeinfo","image":"functions/nodeinfo:latest","invocationCount":0,"replicas":1,"envProcess":"","availableReplicas":0,"labels":{"com.openfaas.function":"nodeinfo","function":"true"}},{"name":"hubstats","image":"functions/hubstats:latest","invocationCount":0,"replicas":1,"envProcess":"","availableReplicas":0,"labels":{"com.openfaas.function":"hubstats","function":"true"}},{"name":"markdown","image":"functions/markdown-render:latest","invocationCount":0,"replicas":1,"envProcess":"","availableReplicas":0,"labels":{"com.openfaas.function":"markdown","function":"true"}},{"name":"echoit","image":"functions/alpine:latest","invocationCount":0,"replicas":1,"envProcess":"cat","availableReplicas":0,"labels":{"com.openfaas.function":"echoit","function":"true"}},{"name":"wordcount","image":"functions/alpine:latest","invocationCount":0,"replicas":1,"envProcess":"wc","availableReplicas":0,"labels":{"com.openfaas.function":"wordcount","function":"true"}}]

Nếu bạn không thấy kết quả giống như thế này hoặc nếu bạn thấy lỗi, hãy làm theo hướng dẫn trên màn hình để giải quyết sự cố trước khi tiếp tục với hướng dẫn. Đảm bảo rằng bạn đang gửi yêu cầu đến đúng điểm cuối bằng phương pháp được khuyến khích và thông tin đăng nhập phù hợp. Bạn cũng có thể kiểm tra log cho dịch vụ gateway bằng lệnh sau:

  • docker service logs func_gateway

Theo mặc định, phản hồi API cho lệnh gọi curl trả về JSON thô mà không có dòng mới, con người không thể đọc được. Để phân tích cú pháp, phản hồi của pipe curl đối với tiện ích jq , tiện ích này sẽ chuyển đổi JSON sang dạng có thể đọc được của con người:

  • curl -u admin:your_openfaas_password -X GET https://example.com/system/functions | jq

Đầu ra hiện ở dạng con người có thể đọc được. Bạn có thể thấy tên hàm, mà bạn có thể sử dụng để quản lý và gọi các hàm với API, số lần gọi, cũng như thông tin như nhãn và số bản sao, có liên quan đến Docker:

Output
[ { "name": "base64", "image": "functions/alpine:latest", "invocationCount": 0, "replicas": 1, "envProcess": "base64", "availableReplicas": 0, "labels": { "com.openfaas.function": "base64", "function": "true" } }, { "name": "nodeinfo", "image": "functions/nodeinfo:latest", "invocationCount": 0, "replicas": 1, "envProcess": "", "availableReplicas": 0, "labels": { "com.openfaas.function": "nodeinfo", "function": "true" } }, { "name": "hubstats", "image": "functions/hubstats:latest", "invocationCount": 0, "replicas": 1, "envProcess": "", "availableReplicas": 0, "labels": { "com.openfaas.function": "hubstats", "function": "true" } }, { "name": "markdown", "image": "functions/markdown-render:latest", "invocationCount": 0, "replicas": 1, "envProcess": "", "availableReplicas": 0, "labels": { "com.openfaas.function": "markdown", "function": "true" } }, { "name": "echoit", "image": "functions/alpine:latest", "invocationCount": 0, "replicas": 1, "envProcess": "cat", "availableReplicas": 0, "labels": { "com.openfaas.function": "echoit", "function": "true" } }, { "name": "wordcount", "image": "functions/alpine:latest", "invocationCount": 0, "replicas": 1, "envProcess": "wc", "availableReplicas": 0, "labels": { "com.openfaas.function": "wordcount", "function": "true" } } ]

Hãy lấy một trong các hàm này và thực thi nó, sử dụng điểm cuối API /function/ function-name . Điểm cuối này khả dụng qua phương thức POST, trong đó cờ -d cho phép bạn gửi dữ liệu đến hàm.

Ví dụ: hãy chạy lệnh curl sau để thực thi hàm echoit , đi kèm với OpenFaaS ra khỏi hộp và xuất ra chuỗi bạn đã gửi nó dưới dạng yêu cầu. Bạn có thể sử dụng chuỗi "Sammy The Shark" để chứng minh:

  • curl -u admin:your_openfaas_password -X POST https://example.com/function/func_echoit -d "Sammy The Shark"

Kết quả sẽ hiển thị cho bạn Sammy The Shark :

Output
Sammy The Shark

Nếu bạn thấy lỗi, hãy làm theo log trên màn hình để giải quyết sự cố trước khi tiếp tục với hướng dẫn. Bạn cũng có thể kiểm tra log của dịch vụ gateway .

Đến đây, bạn đã sử dụng API OpenFaaS để quản lý và thực thi các chức năng của bạn . Bây giờ ta hãy xem xét giao diện user Web OpenFaaS.

Bước 6 - Sử dụng giao diện user Web OpenFaaS

OpenFaaS đi kèm với giao diện user Web mà bạn có thể sử dụng để thêm mới và thực thi các chức năng đã cài đặt. Trong bước này, bạn sẽ cài đặt chức năng tạo mã QR từ FaaS Store và tạo mã mẫu.

Để bắt đầu, hãy trỏ trình duyệt web tới https:// example.com /ui/ . Lưu ý dấu gạch chéo ở cuối là bắt buộc để tránh lỗi “không tìm thấy”.

Trong hộp thoại xác thực HTTP, hãy nhập tên user và password bạn có khi triển khai OpenFaaS ở Bước 3.

Sau khi đăng nhập, bạn sẽ thấy các chức năng có sẵn ở phía bên trái của màn hình, cùng với nút Triển khai chức năng mới được sử dụng để cài đặt các chức năng mới.

Nhấp vào Triển khai chức năng mới để triển khai chức năng mới. Bạn sẽ thấy cửa sổ FaaS Store, nơi cung cấp các chức năng đã được cộng đồng thử nghiệm mà bạn có thể cài đặt bằng một cú nhấp chuột:

Cửa hàng chức năng OpenFaaS

Ngoài các chức năng này, bạn cũng có thể triển khai các chức năng theo cách thủ công từ Docker image .

Đối với hướng dẫn này, bạn sẽ triển khai chức năng Trình tạo mã QR từ Cửa hàng FaaS. Xác định vị trí Trình tạo mã QR - Chuyển đến mục trong danh sách, nhấp vào nó, sau đó nhấp vào nút Triển khai ở cuối cửa sổ:

Chức năng tạo mã QR OpenFaaS

Sau khi nhấp vào Triển khai , cửa sổ Triển khai một chức năng mới sẽ đóng lại và chức năng sẽ được triển khai. Trong danh sách ở bên trái cửa sổ, bạn sẽ thấy danh sách cho hàm qrcode-go . Bấm vào mục này để chọn nó. Cửa sổ hàm chính sẽ hiển thị tên hàm, số lượng bản sao, số lần gọi và hình ảnh, cùng với tùy chọn để gọi hàm:

Chức năng mã QR OpenFaaS

Hãy tạo mã QR chứa URL với domain của bạn. Trong trường Nội dung yêu cầu , hãy nhập nội dung của mã QR bạn muốn tạo; trong trường hợp của ta , đây sẽ là “example.com” . Khi bạn đã hoàn tất, hãy nhấp vào nút Gọi .

Khi bạn chọn tùy chọn kết quả Văn bản hoặc JSON , hàm sẽ xuất ra nội dung của file , nội dung này không thể sử dụng được hoặc con người có thể đọc được:

Mã QR được tạo OpenFaaS

Bạn có thể download một câu trả lời. trong trường hợp của ta sẽ là file PNG có mã QR. Để thực hiện việc này, hãy chọn tùy chọn Download , sau đó bấm Gọi . Ngay sau đó, bạn sẽ download mã QR, bạn có thể mở mã này bằng trình xem hình ảnh mà bạn chọn:

Mã QR đã tạo

Ngoài việc triển khai các chức năng từ cửa hàng FaaS hoặc từ các Docker image , bạn cũng có thể tạo các chức năng của riêng mình. Trong bước tiếp theo, bạn sẽ tạo một hàm Python bằng giao diện dòng lệnh FaaS.

Bước 7 - Tạo các chức năng với FaaS CLI

Trong các bước trước, bạn đã cấu hình FaaS CLI để hoạt động với server OpenFaaS của bạn .FaaS CLI là một giao diện dòng lệnh mà bạn có thể sử dụng để quản lý OpenFaaS cũng như cài đặt và chạy các chức năng, giống như bạn làm qua API hoặc sử dụng Giao diện user Web.

So với giao diện user Web hoặc API, FaaS CLI có các mẫu cho nhiều ngôn ngữ lập trình mà bạn có thể sử dụng để tạo các chức năng của riêng mình. Nó cũng có thể xây dựng containers images dựa trên mã chức năng của bạn và đẩy hình ảnh vào register hình ảnh, chẳng hạn như Docker Hub.

Trong bước này, bạn sẽ tạo một hàm, xuất bản nó lên Docker Hub, sau đó chạy nó trên server OpenFaaS của bạn. Hàm này sẽ tương tự như hàm echoit mặc định, trả về đầu vào được truyền dưới dạng yêu cầu.

Ta sẽ sử dụng Python để viết hàm của bạn . Nếu bạn muốn tìm hiểu thêm về Python, bạn có thể xem loạt bài hướng dẫn Cách viết mã trong Python 3 ebook Cách viết mã trong Python của ta .

Trước khi tạo hàm mới, hãy tạo một folder để lưu trữ các hàm FaaS và chuyển đến nó:

  • mkdir ~/faas-functions
  • cd ~/faas-functions

Thực thi lệnh sau để tạo một hàm Python mới được gọi là echo-input . Đảm bảo thay thế your-docker-hub-username của bạn bằng your-docker-hub-username Docker Hub của bạn, vì bạn sẽ đẩy chức năng sang Docker Hub sau:

  • faas-cli new echo-input --lang python --prefix your-docker-hub-username --gateway https://example.com

Đầu ra chứa xác nhận về việc tạo hàm thành công. Nếu bạn chưa download các mẫu, CLI sẽ download các mẫu trong folder hiện tại của bạn:

Output
2018/05/13 12:13:06 No templates found in current directory. 2018/05/13 12:13:06 Attempting to expand templates from https://github.com/openfaas/templates.git 2018/05/13 12:13:11 Fetched 12 template(s) : [csharp dockerfile go go-armhf node node-arm64 node-armhf python python-armhf python3 python3-armhf ruby] from https://github.com/openfaas/templates.git Folder: echo-input created. ___ _____ ____ / _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___| | | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \ | |_| | |_) | __/ | | | _| (_| | (_| |___) | \___/| .__/ \___|_| |_|_| \__,_|\__,_|____/ |_| Function created in folder: echo-input Stack file written: echo-input.yml

Kết quả của lệnh faas-cli new là một folder ~/faas-fucntions/echo-input mới được tạo chứa mã của hàm và file echo-input.yml . Tệp này bao gồm thông tin về chức năng của bạn: ngôn ngữ của nó, tên của nó và server mà bạn sẽ triển khai nó.

Điều hướng đến folder ~/faas-fucntions/echo-input :

  • cd ~/faas-fucntions/echo-input

Để xem nội dung của folder , hãy thực thi:

  • ls

Các folder chứa hai file : handler.py , trong đó có chứa mã cho chức năng của bạn, và requirements.txt , trong đó có các module Python theo yêu cầu của chức năng.

Kể từ khi ta hiện không yêu cầu bất kỳ Python module không mặc định, các requirements.txt file trống. Bạn có thể kiểm tra điều đó bằng cách sử dụng lệnh cat :

  • cat requirements.txt

Tiếp theo, hãy viết một hàm sẽ trả về một yêu cầu dưới dạng một chuỗi.

Tệp handler.py đã có mã xử lý mẫu, mã này trả về phản hồi nhận được dưới dạng một chuỗi. Hãy xem mã:

  • nano handler.py

Hàm mặc định được gọi là hàm handle và nhận một tham số duy nhất, req , chứa một yêu cầu được chuyển đến hàm khi nó được gọi. Hàm chỉ thực hiện một việc, trả lại yêu cầu đã truyền trở lại dưới dạng phản hồi:

def handle(req):     """handle a request to the function     Args:         req (str): request body     """      return req 

Hãy sửa đổi nó để bao gồm văn bản bổ sung, thay thế chuỗi trong chỉ thị return như sau:

    return "Received message: " + req 

Sau khi hoàn tất, hãy lưu file và đóng editor của bạn.

Tiếp theo, hãy xây dựng một Docker image từ mã nguồn của hàm. Điều hướng đến folder faas-functions nơi echo-input.yml file echo-input.yml :

  • cd ~/faas-functions

Lệnh sau xây dựng Docker image cho hàm của bạn:

  • faas-cli build -f echo-input.yml

Đầu ra chứa thông tin về tiến trình xây dựng:

Output
[0] > Building echo-input. Clearing temporary build folder: ./build/echo-input/ Preparing ./echo-input/ ./build/echo-input/function Building: sammy/echo-input with python template. Please wait.. Sending build context to Docker daemon 7.168kB Step 1/16 : FROM python:2.7-alpine ---> 5fdd069daf25 Step 2/16 : RUN apk --no-cache add curl && echo "Pulling watchdog binary from Github." && curl -sSL https://github.com/openfaas/faas/releases/download/0.8.0/fwatchdog > /usr/bin/fwatchdog && chmod +x /usr/bin/fwatchdog && apk del curl --no-cache ---> Using cache ---> 247d4772623a Step 3/16 : WORKDIR /root/ ---> Using cache ---> 532cc683d67b Step 4/16 : COPY index.py . ---> Using cache ---> b4b512152257 Step 5/16 : COPY requirements.txt . ---> Using cache ---> 3f9cbb311ab4 Step 6/16 : RUN pip install -r requirements.txt ---> Using cache ---> dd7415c792b1 Step 7/16 : RUN mkdir -p function ---> Using cache ---> 96c25051cefc Step 8/16 : RUN touch ./function/__init__.py ---> Using cache ---> 77a9db274e32 Step 9/16 : WORKDIR /root/function/ ---> Using cache ---> 88a876eca9e3 Step 10/16 : COPY function/requirements.txt . ---> Using cache ---> f9ba5effdc5a Step 11/16 : RUN pip install -r requirements.txt ---> Using cache ---> 394a1dd9e4d7 Step 12/16 : WORKDIR /root/ ---> Using cache ---> 5a5893c25b65 Step 13/16 : COPY function function ---> eeddfa67018d Step 14/16 : ENV fprocess="python index.py" ---> Running in 8e53df4583f2 Removing intermediate container 8e53df4583f2 ---> fb5086bc7f6c Step 15/16 : HEALTHCHECK --interval=1s CMD [ -e /tmp/.lock ] || exit 1 ---> Running in b38681a71378 Removing intermediate container b38681a71378 ---> b04c045b0994 Step 16/16 : CMD ["fwatchdog"] ---> Running in c5a11078df3d Removing intermediate container c5a11078df3d ---> bc5f08157c5a Successfully built bc5f08157c5a Successfully tagged sammy/echo-input:latest Image: your-docker-hub-username/echo-input built. [0] < Building echo-input done. [0] worker done.

Nếu bạn gặp lỗi, hãy đảm bảo giải quyết theo hướng dẫn trên màn hình trước khi triển khai chức năng.

Bạn cần phải chứa hàm OpenFaaS của bạn để triển khai nó. Các ứng dụng chứa các ứng dụng đảm bảo môi trường cần thiết để chạy ứng dụng của bạn có thể được tái tạo dễ dàng và ứng dụng của bạn có thể dễ dàng triển khai, mở rộng và cập nhật.

Đối với hướng dẫn này, ta sẽ sử dụng Docker Hub, vì đây là một giải pháp miễn phí, nhưng bạn có thể sử dụng bất kỳ register containers nào, bao gồm cả register riêng của bạn.

Chạy lệnh sau để đẩy hình ảnh bạn đã tạo vào repository được chỉ định của bạn trên Docker Hub:

  • faas-cli push -f echo-input.yml

Quá trình đẩy sẽ mất vài phút, tùy thuộc vào tốc độ kết nối internet của bạn. Đầu ra chứa tiến trình tải lên của hình ảnh:

Output
[0] > Pushing echo-input. The push refers to repository [docker.io/sammy/echo-input] 320ea573b385: Pushed 9d87e56f5d0c: Pushed 6f79b75e7434: Pushed 23aac2d8ecf2: Pushed 2bec17d09b7e: Pushed e5a0e5ab3be6: Pushed e9c8ca932f1b: Pushed beae1d55b4ce: Pushed 2fcae03ed1f7: Pushed 62103d5daa03: Mounted from library/python f6ac6def937b: Mounted from library/python 55c108c7613c: Mounted from library/python e53f74215d12: Mounted from library/python latest: digest: sha256:794fa942c2f593286370bbab2b6c6b75b9c4dcde84f62f522e59fb0f52ba05c1 size: 3033 [0] < Pushing echo-input done. [0] worker done.

Cuối cùng, với hình ảnh của bạn được đẩy đến Docker Hub, bạn có thể sử dụng nó để triển khai một chức năng cho server OpenFaaS của bạn .

Để triển khai chức năng của bạn, hãy chạy lệnh deploy , lệnh này dẫn đường dẫn đến file kê khai mô tả chức năng của bạn, cũng như địa chỉ server OpenFaaS của bạn:

  • faas-cli deploy -f echo-input.yml --gateway https://example.com

Đầu ra hiển thị trạng thái của việc triển khai, cùng với tên của chức năng bạn đang triển khai và mã trạng thái triển khai:

Output
Deploying: echo-input. Deployed. 200 OK. URL: https://example.com/function/echo-input

Nếu triển khai thành công, bạn sẽ thấy mã trạng thái 200 . Trong trường hợp có lỗi, hãy làm theo hướng dẫn được cung cấp để khắc phục sự cố trước khi tiếp tục.

Đến đây, chức năng của bạn đã được triển khai và sẵn sàng sử dụng. Bạn có thể kiểm tra xem nó có đang hoạt động như mong đợi hay không bằng cách gọi nó.

Để gọi một hàm với FaaS CLI, hãy sử dụng lệnh invoke bằng cách chuyển tên hàm và địa chỉ OpenFaaS cho nó. Sau khi thực hiện lệnh, bạn cần nhập yêu cầu mà bạn muốn gửi đến hàm.

Thực thi lệnh sau để gọi hàm echo-input :

  • faas-cli invoke echo-input --gateway https://example.com

Bạn cần nhập yêu cầu mà bạn muốn gửi đến hàm:

Output
Reading from STDIN - hit (Control + D) to stop.

Nhập văn bản bạn muốn gửi đến hàm, chẳng hạn như:

Sammy The Shark! 

Sau khi hoàn tất, hãy nhấn ENTER rồi nhấn CTRL + D để hoàn tất yêu cầu. Phím tắt CTRL + D trong terminal được sử dụng để đăng ký End-of-File (EOF). OpenFaaS CLI ngừng đọc từ terminal khi nhận được EOF.

Sau vài giây, lệnh sẽ xuất ra phản hồi của hàm:

Output
Reading from STDIN - hit (Control + D) to stop. Sammy The Shark! Received message: Sammy The Shark!

Nếu bạn không thấy kết quả kết quả hoặc gặp lỗi, hãy truy xuất lại các bước trước đó đảm bảo bạn đã triển khai chức năng như đã giải thích và làm theo hướng dẫn trên màn hình để giải quyết sự cố.

Đến đây, bạn đã tương tác với chức năng của bạn bằng ba phương pháp: Giao diện user web, API và CLI. Việc có thể thực thi các chức năng của bạn bằng bất kỳ phương pháp nào trong số này mang lại cho bạn sự linh hoạt trong việc quyết định cách bạn muốn tích hợp các chức năng vào quy trình công việc hiện có của bạn .

Kết luận

Trong hướng dẫn này, bạn đã sử dụng kiến trúc không server và OpenFaaS để triển khai và quản lý các ứng dụng của bạn bằng API OpenFaaS, Giao diện user web và CLI. Bạn cũng đã bảo đảm cơ sở hạ tầng của bạn bằng cách tận dụng Traefik để cung cấp SSL bằng Let's Encrypt.

Nếu bạn muốn tìm hiểu thêm về dự án OpenFaaS, bạn có thể xem trang web của họ và tài liệu chính thức của dự án .


Tags:

Các tin liên quan

Cách cài đặt Docker Compose trên Debian 9
2018-09-06
Cách cài đặt và sử dụng Docker trên Debian 9
2018-09-04
Cách chia sẻ dữ liệu giữa Docker Container và Host
2018-07-11
Cách cài đặt Docker Compose trên Ubuntu 18.04
2018-07-09
Cách cài đặt và sử dụng Docker trên Ubuntu 18.04
2018-07-05
Cách kiểm tra bảo mật server Docker với Docker Bench cho bảo mật trên Ubuntu 16.04
2018-06-14
Cách cung cấp và quản lý server Docker từ xa bằng Máy Docker trên Ubuntu 16.04
2018-05-21
Cách cung cấp và quản lý server Docker từ xa bằng Máy Docker trên CentOS 7
2018-05-21
Cách quản lý và giám sát các container Docker có khô trên Ubuntu 16.04
2018-04-25
Cách tạo image Docker và lưu trữ kho lưu trữ image Docker với GitLab
2018-02-12