Sử dụng Docker cho Edge Microgateway

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

Chủ đề này giải thích cách chạy Edge Microgateway trong vùng chứa Docker. Các bước trong chủ đề này giả định bạn đã có kiến thức cơ bản về cách thiết lập và cấu hình Docker, Docker cũng như cách thiết lập và cấu hình Edge Microgateway. Để biết thêm thông tin, hãy tham khảo tài liệu về DockerEdge Microgateway

Điều kiện tiên quyết

Trước khi chạy Edge Microgateway trong vùng chứa Docker, bạn phải thực hiện các tác vụ sau:

  • Định cấu hình Edge Microgateway cho tổ chức/môi trường Apigee của bạn:

    edgemicro configure -o your_org -e your_env -u your_username

    Để biết thêm thông tin chi tiết về cấu hình, hãy xem Phần 1: Định cấu hình Edge Microgateway.

  • Sau khi thực hiện các bước cấu hình, hãy tìm tệp cấu hình. Vị trí mặc định là:

    $HOME/.edgemicro/your_org-your_env-config.yaml

    trong đó your_orgyour_env là tổ chức và môi trường bạn đã sử dụng khi chạy lệnh edgemicro config. Bạn sẽ cần tệp này khi khởi động Edge Microgateway trong vùng chứa Docker.

  • Hãy đảm bảo bạn có thông tin xác thực khoá và bí mật được trả về khi bạn chạy lệnh edgemicro config. Ví dụ:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    
  • Trước khi khởi động Edge Microgateway trong vùng chứa Docker, bạn cần tạo (hoặc đã tạo) các thực thể Apigee Edge cần thiết để thực hiện các lệnh gọi proxy API đã xác thực. Những thực thể này bao gồm một proxy nhận biết Edge Microgateway, Sản phẩm API, Nhà phát triển và Ứng dụng dành cho nhà phát triển. Để biết hướng dẫn đầy đủ, hãy xem phần Tạo thực thể trên Apigee Edge.

Chạy Edge Micro dưới dạng vùng chứa Docker

  1. Tải xuống hình ảnh Docker cho Edge Microgateway:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. Trước khi chuyển sang các bước tiếp theo, hãy đảm bảo bạn đã thực hiện tất cả các bước trong phần Điều kiện tiên quyết.

  3. Chạy lệnh sau để mã hoá base64 cho tệp cấu hình Edge Microgateway nằm trong $HOME/.edgemicro:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    trong đó your_orgyour_env là tổ chức và môi trường bạn đã sử dụng khi chạy lệnh edgemicro config.

    Nhớ đặt dấu phẩy ngược (`) xung quanh lệnh đó. Ví dụ:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  4. Chạy Edge Microgateway dưới dạng vùng chứa. Lệnh này đặt một số biến môi trường mà thời gian chạy vùng chứa sử dụng để khởi động Edge Microgateway:

    docker run -P -p 8000:8000 -d --name edgemicro \
    -v /var/tmp:/opt/apigee/logs \
    -e EDGEMICRO_PROCESSES=1 \
    -e EDGEMICRO_ORG=your_org \
    -e EDGEMICRO_ENV=your_env \
    -e EDGEMICRO_KEY=your_key \
    -e EDGEMICRO_SECRET=your_secret \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    -e SERVICE_NAME=edgemicro \
    --security-opt=no-new-privileges \
    --cap-drop=ALL \
    gcr.io/apigee-microgateway/edgemicro:latest

    Thông số

    Tham số Mô tả
    -P Xuất bản tất cả các cổng đã hiển thị lên máy chủ. Hãy xem thêm bài viết Tài liệu tham khảo về hoạt động chạy Docker.
    -p Ánh xạ rõ ràng một cổng hoặc phạm vi cổng. Hãy xem thêm bài viết Tài liệu tham khảo về hoạt động chạy Docker.
    -d Chạy ở chế độ tách rời. Hãy xem thêm bài viết Tài liệu tham khảo về hoạt động chạy Docker.
    -v, --volume Chỉ định giá đỡ ổ đĩa. Lưu ý rằng nếu định cấu hình Edge Microgateway để sử dụng TLS trong vùng chứa Docker, bạn phải hiển thị cổng 8443 nếu gắn thư mục tệp nhật ký. Xem thêm KHỐI [hệ thống tệp được chia sẻ]. Hãy xem thêm phần Sử dụng TLS trong vùng chứa Docker.
    EDGEMICRO_ORG Tên của tổ chức Apigee mà bạn đã dùng để định cấu hình Edge Microgateway.
    EDGEMICRO_ENV Tên của môi trường Apigee mà bạn đã dùng để định cấu hình Edge Microgateway.
    EDGEMICRO_PROCESSES Số lượng quy trình bắt đầu.
    EDGEMICRO_KEY Khoá được trả về khi bạn định cấu hình Edge Microgateway.
    EDGEMICRO_SECRET Khoá bí mật được trả về khi bạn định cấu hình Edge Microgateway.
    EDGEMICRO_CONFIG Một biến chứa tệp cấu hình Edge Microgateway được mã hoá base64.
    SERVICE_NAME Nếu bạn đang dùng Kubernetes, thì tham số này sẽ tự động được điền. Nếu không, bạn có thể đặt thành bất kỳ nội dung nào bạn muốn. Nếu bạn không chỉ định gì, tên dịch vụ sẽ được đặt thành default.
    DEBUG Đặt thành * để bật tính năng gỡ lỗi.
    HTTP_PROXY HTTPS_PROXY Sử dụng khi Edge Microgateway đang chạy phía sau tường lửa và cổng này không thể giao tiếp với Apigee Edge. Để biết thêm thông tin, hãy xem phần Thiết lập Edge Microgateway sau tường lửa của công ty.

    Ví dụ: HTTP_PROXY=http://10.203.0.1:5187/

    NO_PROXY Danh sách các miền được phân tách bằng dấu phẩy mà Edge Microgateway không được ủy quyền. Để biết thêm thông tin, hãy xem phần Thiết lập Edge Microgateway sau tường lửa của công ty.

    Ví dụ: localhost,127.0.0.1,localaddress,.localdomain.com

    NODE_EXTRA_CA_CERTS (Không bắt buộc) Sử dụng tham số này nếu bạn đang sử dụng một CA không được Node.js mặc định tin cậy. Đặt giá trị của tham số này thành đường dẫn đến một tệp chứa một hoặc nhiều chứng chỉ đáng tin cậy ở định dạng PEM. Để biết thông tin chi tiết, hãy xem phần Chứng chỉ TLS.
    --security-opt (Không bắt buộc) Đặt các tuỳ chọn bảo mật Docker mong muốn. Xem phần Cấu hình bảo mật trong tài liệu về Docker.
    --cap-drop (Không bắt buộc) Đặt giới hạn về các tính năng của Linux được phép trong vùng chứa. Xem phần Đặc quyền thời gian chạy và các tính năng của Linux trong tài liệu về Docker.

    Ví dụ:

    docker run -P -p 8000:8000 -d --name edgemicro \
    -v /var/tmp:/opt/apigee/logs \
    -e EDGEMICRO_PROCESS=1 \
    -e EDGEMICRO_ORG=docs \
    -e EDGEMICRO_ENV=test \
    -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \
    -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    -e SERVICE_NAME=edgemicro \
    --security-opt=no-new-privileges \
    --cap-drop=ALL \
    gcr.io/apigee-microgateway/edgemicro
  5. Cách kiểm tra xem vùng chứa có đang chạy hay không:

    docker ps

    Bạn sẽ thấy kết quả tương tự như dưới đây:

    CONTAINER ID    IMAGE         COMMAND                CREATED          STATUS          PORTS                                             NAMES
    8b92e082ea9c    edgemicro    "/tmp/entrypoint.sh"   12 minutes ago   Up 12 minutes    0.0.0.0:8000->8000/tcp, 0.0.0.0:32775->8443/tcp    edgemicro
    

Kiểm thử lệnh gọi API

Sau khi khởi động Edge Microgateway trong vùng chứa, bạn có thể thực hiện lệnh gọi API tới đó. Ví dụ: nếu đường dẫn cơ sở của API là /hello:

http://localhost:8000/hello

Kết quả mẫu:

{"error":"missing_authorization","error_description":"Missing Authorization header"}

Nếu bạn thấy phản hồi này, tức là Edge Microgateway đã xử lý thành công lệnh gọi API. Tuy nhiên, theo mặc định, Edge Microgateway yêu cầu khoá API để xác thực. Trong phần tiếp theo, bạn sẽ kiểm thử API bằng khoá API hợp lệ.

Kiểm thử API bằng khoá API hợp lệ

Trong giao diện người dùng Edge, hãy chuyển đến Ứng dụng dành cho nhà phát triển mà bạn đã tạo trước đó. Trong trang Ứng dụng dành cho nhà phát triển, hãy hiển thị Khoá người dùng và sao chép khoá đó. Giá trị này là khoá API. Bạn sẽ sử dụng khoá này để thực hiện các lệnh gọi API đã xác thực.

Gọi API có tiêu đề x-api-key như sau. Giá trị Khoá người dùng mà bạn đã sao chép từ Ứng dụng cho nhà phát triển là khoá API. Theo mặc định, Edge Microgateway yêu cầu bạn truyền khoá trong tiêu đề có tên x-api-key, như sau:

curl -i http://localhost:8000/hello -H "x-api-key:apikey"

Ví dụ:

curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"

Nếu bạn muốn tìm hiểu thêm về cách thực hiện lệnh gọi API được xác thực thông qua Edge Microgateway với khoá API và mã thông báo OAuth, hãy xem Phần 4: Secure Edge Microgateway.

Dừng cổng Microgateway

Sử dụng lệnh Docker sau đây để dừng Edge Microgateway:

docker stop edgemicro

Khởi động lại Edge Microgateway

Sau khi dừng Edge Microgateway, bạn có thể khởi động lại bằng lệnh Docker sau:

docker start edgemicro

Sử dụng TLS trong vùng chứa Docker

Phần này giải thích cách định cấu hình TLS cho Edge Microgateway chạy trong vùng chứa Docker. Bạn có thể định cấu hình máy chủ Edge Microgateway để sử dụng TLS cho các yêu cầu đến (hướng bắc) và bạn có thể định cấu hình Edge Microgateway thành một ứng dụng TLS cho các yêu cầu gửi đi tới điểm cuối nhắm mục tiêu (hướng nam).

Vị trí đặt các tệp chứng chỉ

Vùng chứa Docker chạy Edge Microgateway có điểm gắn trên /opt/apigee/.edgemicro. Khi định cấu hình Edge Microgateway để sử dụng chứng chỉ TLS, bạn có thể cung cấp các tệp chứng chỉ trên điểm gắn đó và tham chiếu đến các tệp đó trong tệp cấu hình Edge Microgateway. Tệp cấu hình này thường nằm trong thư mục $HOME/.edgemicro và có tên là your_org-your_env-config.yaml. Ví dụ:

...
edgemicro:
  ssl:
   key: /opt/apigee/.edgemicro/southbound/tls.key
   cert: /opt/apigee/.edgemicro/southbound/tls.crt
...

Sử dụng CA không được Node.js tin cậy

Nếu bạn đang sử dụng một tổ chức phát hành chứng chỉ (CA) không được Node.js mặc định tin cậy (chẳng hạn như trường hợp chứng chỉ tự ký), hãy cân nhắc sử dụng thông số NODE_EXTRA_CA_CERTS khi chạy vùng chứa.

Đặt tham số này thành đường dẫn đến một tệp chứa một hoặc nhiều chứng chỉ đáng tin cậy ở định dạng PEM. Để xem cách sử dụng tham số này, hãy xem ví dụ về Cách định cấu hình TLS về hướng bắcCách định cấu hình TLS về hướng nam.

Ví dụ:

docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro

Hãy xem thêm bài viết Chạy Edge Micro dưới dạng vùng chứa Docker.

Tắt tính năng xác thực TLS

Mặc dù không nên, nhưng trong một số trường hợp, bạn có thể tắt tính năng xác thực TLS cho Edge Microgateway chạy trong một vùng chứa. Theo mặc định, tính năng tắt TLS không được tích hợp vào vùng chứa Edge Microgateway Docker. Để hoàn thành nhiệm vụ, bạn phải tạo một hình ảnh Docker tuỳ chỉnh cho Edge Microgateway. Dưới đây là các hướng dẫn chung về cách tạo hình ảnh tuỳ chỉnh và tắt tính năng xác thực TLS.

  1. Sao chép hoặc tải kho lưu trữ nguồn Edge Microgateway xuống từ https://github.com/apigee-internal/microgateway.

  2. cd vào thư mục microgateway/kubernetes/docker/edgemicro trong thư mục mã nguồn.

    Ví dụ:

    cd $HOME/git/microgateway/kubernetes/docker/edgemicro
    
  3. Mở tệp entrypoint.sh rồi sửa đổi mã để chấp nhận biến môi trường NODE_TLS_REJECT_UNAUTHORIZED. Sau đó, khi chạy vùng chứa, bạn sẽ chỉ định một giá trị cho biến này.

  4. Tạo vùng chứa Docker:

    docker build -t edgemicro .
    
  5. Khi bạn chạy vùng chứa, hãy chỉ định tuỳ chọn -e NODE_TLS_REJECT_UNAUTHORIZED = 1. Ví dụ:

docker run -P -p 8443:8443 -d --name edgemicro \
-v $HOME/.edgemicro:/opt/apigee/.edgemicro \
-v $HOME/.edgemicro:/opt/apigee/logs \
-e NODE_TLS_REJECT_UNAUTHORIZED = 1 \
-e EDGEMICRO_PORT=8443 \
-e EDGEMICRO_ORG=docs \
-e EDGEMICRO_ENV=test \
-e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \
-e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
--link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro

Ví dụ: Cách định cấu hình TLS về hướng bắc

Phần này giải thích cách thiết lập kết nối TLS về hướng bắc (đến) trên máy chủ Edge Microgateway. TLS hướng bắc cho phép ứng dụng sử dụng HTTPS khi thực hiện lệnh gọi API tới Edge Microgateway. Ví dụ bên dưới sử dụng chứng chỉ tự ký.

1. Các bước thiết lập ban đầu

  1. Tìm tệp openssl.cnf trên hệ thống của bạn. Ví dụ: /etc/ssl/openssl.cnf.
  2. Mở tệp opensssl.cnf để chỉnh sửa.
  3. Đảm bảo req_extensions có trong tệp cấu hình. Ví dụ: bạn sẽ có thông tin tương tự như sau trong tệp:

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. Thêm khổ thơ sau vào openssl.cnf để tạo các thuộc tính chứa nội dung quảng cáo tìm kiếm thích hợp:

    [ alt_names ]
    DNS.1 = www.example.com
    DNS.2 = example.com
    DNS.3 = localhost
    DNS.4 = localhost.localdomain
    DNS.5 = 127.0.0.1
    DNS.6 = ::1
    DNS.7 = fe80::1
    

    Tệp opensssl.cnf ví dụ:

    [ req ]
    distinguished_name      = req_distinguished_name
    attributes              = req_attributes
    req_extensions          = v3_req
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
    [ req_distinguished_name ]
    countryName                     = Country Name (2 letter code)
    countryName_min                 = 2
    countryName_max                 = 2
    stateOrProvinceName             = State or Province Name (full name)
    localityName                    = Locality Name (eg, city)
    0.organizationName              = Organization Name (eg, company)
    organizationalUnitName          = Organizational Unit Name (eg, section)
    commonName                      = Common Name (eg, fully qualified host name)
    commonName_max                  = 64
    emailAddress                    = Email Address
    emailAddress_max                = 64
    
    [ req_attributes ]
    challengePassword               = A challenge password
    challengePassword_min           = 4
    challengePassword_max           = 20
    
    [ alt_names ]
    DNS.1 = www.example.com
    DNS.2 = example.com
    DNS.3 = localhost
    DNS.4 = localhost.localdomain
    DNS.5 = 127.0.0.1
    DNS.6 = ::1
    DNS.7 = fe80::1
    
  5. Làm theo các bước nêu trong phần Điều kiện tiên quyết để khởi chạy và định cấu hình Edge Microgateway nếu bạn chưa thực hiện. Khi hoàn tất, bạn nên tạo một proxy nhận biết Edge Microgateway, Sản phẩm API, Nhà phát triển và Ứng dụng dành cho nhà phát triển. Ngoài ra, bạn nên chạy lệnh edgemicro configure và nhận khoá và bí mật.

2. Tạo chứng chỉ tự ký

Tiếp theo, hãy tạo các chứng chỉ và khoá mà bạn cần để thiết lập TLS:

  1. cd vào thư mục $HOME/.edgemicro.
  2. Tạo tập lệnh bash sau. Bạn có thể đặt bất kỳ tên nào bạn muốn. Ví dụ: keygen.sh.

    #!/bin/bash
    # generate ca
    openssl genrsa -out rootca.key 2048
    openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem
    # generate key
    openssl genrsa -out tls.key 2048
    openssl req -new -key tls.key -out tls.csr
    # sign cert
    openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
    
  3. Trong tệp bash, hãy đảm bảo đường dẫn đến tệp openssl.cnf là chính xác.

  4. Thực thi tệp bash. Bạn sẽ được nhắc cung cấp thông tin về chứng chỉ. Hãy nhớ sử dụng localhost cho Common Name (Tên chung).

  5. Kiểm tra để đảm bảo các tệp sau đã được tạo:

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt

3. Chỉnh sửa tệp cấu hình Edge Microgateway

  1. Mở tệp cấu hình Edge Micro trong trình chỉnh sửa. Ví dụ:

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. Chỉnh sửa khổ thơ edgemicro như sau. Lưu ý rằng bạn đang thực hiện thay đổi đối với các thuộc tính portssl:

    edge_config:
    ...
    edgemicro:
      port: 8443
      max_connections: 1000
      config_change_poll_interval: 600
      ssl:
        key: /opt/apigee/.edgemicro/tls.key
        cert: /opt/apigee/.edgemicro/tls.crt
        passphrase: admin123
        rejectUnauthorized: true
        requestCert: false
      logging:
    ...
    
  3. Thực thi lệnh sau để mã hoá base64 cho tệp cấu hình Edge Microgateway nằm trong $HOME/.edgemicro:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    trong đó your_orgyour_env là tổ chức và môi trường bạn đã sử dụng khi chạy lệnh edgemicro config.

    Nhớ đặt dấu phẩy ngược (`) xung quanh lệnh đó. Ví dụ:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`

Xem thêm bài viết Chạy Edge Micro dưới dạng vùng chứa Docker.

4. Chạy vùng chứa

  1. Thực thi lệnh sau để chạy vùng chứa Docker bằng Edge Microgateway:

    docker run -P -p 8443:8443 -d --name edgemicro \
    -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \
    -v path_to_your_logs_dir:/opt/apigee/logs \
    -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
    -e EDGEMICRO_PORT=8443 \
    -e EDGEMICRO_ORG=$EDGEMICRO_ORG \
    -e EDGEMICRO_ENV=$EDGEMICRO_ENV \
    -e EDGEMICRO_KEY=$EDGEMICRO_KEY \
    -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    gcr.io/apigee-microgateway/edgemicro:latest
    
  2. Hãy lưu ý các tham số dùng trong lệnh sau; các tham số này khác với lệnh cơ bản được mô tả trong phần Chạy Edge Micro dưới dạng vùng chứa Docker.

    • port được đặt thành 8443.
    • Giá đỡ ổ đĩa được dùng để gắn khoá và các tệp chứng chỉ.
    • Biến NODE_EXTRA_CA_CERTS dùng để thêm một CA tuỳ chỉnh (nếu cần trong trường hợp chứng chỉ tự ký).

5. Kiểm tra cấu hình TLS

  1. Thực thi lệnh cURL sau đây để kiểm thử chế độ thiết lập. Thay thế đường dẫn cơ sở và khoá API vào lệnh. Ví dụ sau giả định bạn đang ở trong thư mục chứa rootca.pem và proxy bạn đã tạo có đường dẫn cơ sở /hello:

    curl -v https://localhost:8443/hello --cacert rootca.pem \
    -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
    
  2. Kết quả cURL chi tiết cho thấy từng bước của quá trình bắt tay TLS. Nếu bạn thấy phản hồi HTTP 200 thì cấu hình đã thành công:

    *   Trying ::1...ey:Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
    * TCP_NODELAY set
    * Connected to localhost (::1) port 8443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
    * successfully set certificate verify locations:
    *   CAfile: rootca.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Client hello (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com
    *  start date: Dec 14 22:35:28 2018 GMT
    *  expire date: Oct  3 22:35:28 2021 GMT
    *  common name: localhost (matched)
    *  issuer: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com
    *  SSL certificate verify ok.
    > GET /hello HTTP/1.1
    > Host: localhost:8443
    > User-Agent: curl/7.54.0
    > Accept: */*
    > x-api-key:Az82fdnfaONVCOE4NKhajxAboDA3FAo
    >
    < HTTP/1.1 200 OK
    < x-powered-by: Apigee
    < access-control-allow-origin: *
    < x-frame-options: ALLOW-FROM RESOURCE-URL
    < x-xss-protection: 1
    < x-content-type-options: nosniff
    < content-type: text/plain; charset=utf-8
    < etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw"
    < date: Fri, 14 Dec 2018 22:43:13 GMT
    < via: 1.1 google
    < alt-svc: clear
    < x-response-time: 1325
    < Connection: keep-alive
    < Transfer-Encoding: chunked
    <
    * Connection #0 to host localhost left intact
    Hello, Guest!
    

Ví dụ: Cách định cấu hình TLS về hướng nam

Phần này giải thích cách thiết lập kết nối TLS hướng nam (đi) giữa máy chủ Edge Microgateway và ứng dụng đích phụ trợ. Ví dụ bên dưới sử dụng chứng chỉ tự ký.

1. Các bước thiết lập ban đầu

  1. Tìm tệp openssl.cnf trên hệ thống của bạn. Ví dụ: /etc/ssl/openssl.cnf.
  2. Mở tệp opensssl.cnf để chỉnh sửa.
  3. Đảm bảo req_extensions có trong tệp cấu hình. Ví dụ: bạn sẽ có thông tin tương tự như sau trong tệp:

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. Thêm khổ thơ sau vào openssl.cnf để tạo các thuộc tính chứa nội dung quảng cáo tìm kiếm thích hợp:

    [ alt_names ]
    DNS.1 = helloworld
    DNS.2 = localhost
    DNS.3 = localhost.localdomain
    DNS.4 = 127.0.0.1
    DNS.5 = ::1
    DNS.6 = fe80::1
    

    Tệp opensssl.cnf ví dụ:

    [ req ]
    distinguished_name      = req_distinguished_name
    attributes              = req_attributes
    req_extensions          = v3_req
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
    [ req_distinguished_name ]
    countryName                     = Country Name (2 letter code)
    countryName_min                 = 2
    countryName_max                 = 2
    stateOrProvinceName             = State or Province Name (full name)
    localityName                    = Locality Name (eg, city)
    0.organizationName              = Organization Name (eg, company)
    organizationalUnitName          = Organizational Unit Name (eg, section)
    commonName                      = Common Name (eg, fully qualified host name)
    commonName_max                  = 64
    emailAddress                    = Email Address
    emailAddress_max                = 64
    
    [ req_attributes ]
    challengePassword               = A challenge password
    challengePassword_min           = 4
    challengePassword_max           = 20
    
    [ alt_names ]
    DNS.1 = helloworld
    DNS.2 = localhost
    DNS.3 = localhost.localdomain
    DNS.4 = 127.0.0.1
    DNS.5 = ::1
    DNS.6 = fe80::1
    
  5. Chạy lệnh edgemicro configure:

    edgemicro configure -o your_org -e your_env -u your_username

    Để biết thêm thông tin chi tiết về cấu hình, hãy xem Phần 1: Định cấu hình Edge Microgateway.

  6. Sao chép khoá và thông tin xác thực bí mật được trả về từ edgemicro configure. Bạn sẽ cần các giá trị này để chạy vùng chứa. Ví dụ:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    

2. Tạo ứng dụng mục tiêu Node.js

  1. cd vào thư mục .edgemicro.

  2. Tạo tập lệnh bash sau. Bạn có thể đặt bất kỳ tên nào bạn muốn. Ví dụ: keygen.sh.

    #!/bin/bash
    # generate ca
    openssl genrsa -out rootca.key 2048
    openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem
    # generate key
    openssl genrsa -out tls.key 2048
    openssl req -new -key tls.key -out tls.csr
    # sign cert
    openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
    
  3. Trong tệp bash, hãy đảm bảo đường dẫn đến tệp openssl.cnf là chính xác.

  4. Thực thi tệp bash. Bạn sẽ được nhắc cung cấp thông tin về chứng chỉ. Hãy nhớ sử dụng hellworld cho Common Name (Tên chung).

  5. Kiểm tra để đảm bảo các tệp sau đã được tạo:

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt
  6. Tạo một tệp mới có tên là server.js.

    'use strict';
    
    const express = require('express');
    const https = require('https');
    const fs = require('fs');
    
    const options = {
      key: fs.readFileSync("tls.key"),
      cert: fs.readFileSync("tls.crt")
    };
    
    // Constants
    const PORT = 9443;
    const HOST = '0.0.0.0';
    
    // App
    const app = express();
    app.get('/', (req, res) => {
      res.send('Hello world\n');
    });
    
    https.createServer(options, app).listen(PORT);
    
  7. Tạo một tệp package.json trong cùng thư mục với server.js. Ví dụ:

    {
      "name": "helloworld",
      "version": "1.0.0",
      "description": "",
      "main": "server.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "node server.js"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "express": "^4.16.4",
        "fs": "0.0.1-security",
        "https": "^1.0.0"
      }
    }
    
  8. Chạy npm install để lấy các phần phụ thuộc.

  9. Tạo một Dockerfile mới trong cùng thư mục với server.js, trong đó WORKDIR là đường dẫn đến thư mục gốc của ứng dụng Node.js:

    FROM node:8-alpine
    WORKDIR path-to-your-node-app
    COPY package*.json ./
    
    RUN npm install
    COPY . .
    EXPOSE 9443
    CMD [ "npm", "start" ]
    
  10. Tạo hình ảnh Docker:

    docker build -t helloworld . 
    
  11. Khởi động ứng dụng mẫu:

    docker run -P -p 9443:9443 --name helloworld helloworld
    

3. Tạo thực thể trên Apigee Edge

  1. Tạo một proxy nhận biết Edge Microgateway bằng các chế độ cài đặt này. Để biết thêm thông tin, hãy xem bài viết Tạo proxy API nhận biết Edge Microgateway trên Edge.

    • Tên proxy: edgemicro_local
    • Bản sửa đổi: 1
    • Đường dẫn cơ sở: /local
    • Mục tiêu: https://helloworld:9443
  2. Tạo một sản phẩm API. Để biết chi tiết, hãy xem bài viết Tạo sản phẩm.

  3. Tạo nhà phát triển. Để biết thông tin chi tiết, hãy xem bài viết Tạo nhà phát triển.

  4. Tạo một ứng dụng dành cho nhà phát triển. Để biết thông tin chi tiết, hãy xem phần Tạo ứng dụng dành cho nhà phát triển

4. Chạy vùng chứa

  1. Mở tệp cấu hình Edge Micro trong trình chỉnh sửa. Ví dụ:

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. Chỉnh sửa khổ thơ edgemicro như sau. Lưu ý rằng bạn đang thực hiện thay đổi đối với các thuộc tính portssl:

    edge_config:
    ...
    edgemicro:
      port: 8443
      max_connections: 1000
      config_change_poll_interval: 600
      ssl:
        key: /opt/apigee/.edgemicro/tls.key
        cert: /opt/apigee/.edgemicro/tls.crt
        passphrase: admin123
        rejectUnauthorized: true
        requestCert: false
      logging:
    ...
    
  3. Thực thi lệnh sau để mã hoá base64 cho tệp cấu hình Edge Microgateway nằm trong $HOME/.edgemicro:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    trong đó your_orgyour_env là tổ chức và môi trường bạn đã sử dụng khi chạy lệnh edgemicro config.

    Nhớ đặt dấu phẩy ngược (`) xung quanh lệnh đó. Ví dụ:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  4. Chạy lệnh sau để khởi động Edge Microgateway trong vùng chứa Docker.

    docker run -P -p 8443:8443 -d --name edgemicro \
    -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \
    -v path_to_your_logs_dir:/opt/apigee/logs \
    -e EDGEMICRO_PORT=8443 \
    -e EDGEMICRO_ORG=$EDGEMICRO_ORG \
    -e EDGEMICRO_ENV=$EDGEMICRO_ENV \
    -e EDGEMICRO_KEY=$EDGEMICRO_KEY \
    -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
    

5. Kiểm tra cấu hình TLS

  1. Thực thi lệnh cURL sau đây để kiểm thử chế độ thiết lập. Thay thế đường dẫn cơ sở mà bạn đã sử dụng trong proxy nhận biết cổng vào và khoá API lấy được từ ứng dụng dành cho nhà phát triển mà bạn đã tạo trên Apigee Edge. Ví dụ:

    curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
    

    Bạn sẽ thấy lỗi này:

    ...
    *  subject: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com
    *  start date: Dec 10 02:12:22 2018 GMT
    *  expire date: Sep 29 02:12:22 2021 GMT
    *  issuer: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com
    *  SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
    > GET /local HTTP/1.1
    > Host: localhost:8443
    > User-Agent: curl/7.54.0
    > Accept: */*
    > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd
    >
    < HTTP/1.1 502 Bad Gateway
    < Date: Wed, 12 Dec 2018 05:25:01 GMT
    < Connection: keep-alive
    < Content-Length: 93
    <
    * Connection #0 to host localhost left intact
    {"message":"unable to verify the first certificate","code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE"}
    
  2. Chạy lại Edge Microgateway, nhưng lần này hãy thêm biến NODE_EXTRA_CA_CERTS.

    docker run -P -p 8443:8443 -d --name edgemicro \
    -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \
    -v path_to_your_logs_dir:/opt/apigee/logs \
    -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \
    -e EDGEMICRO_PORT=8443 \
    -e EDGEMICRO_ORG=$EDGEMICRO_ORG \
    -e EDGEMICRO_ENV=$EDGEMICRO_ENV \
    -e EDGEMICRO_KEY=$EDGEMICRO_KEY \
    -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
    
  3. Thực thi lệnh cURL sau đây. Thay thế đường dẫn cơ sở và khoá API như trước đây. Ví dụ:

    curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
    
  4. Kiểm tra kết quả. Sau khi thành công, bạn sẽ nhận được phản hồi trạng thái HTTP 200:

    ...
    > GET /local HTTP/1.1
    > Host: localhost:8443
    > User-Agent: curl/7.54.0
    > Accept: */*
    > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd
    >
    < HTTP/1.1 200 OK
    < x-powered-by: Express
    < content-type: text/html; charset=utf-8
    < etag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0"
    < date: Wed, 12 Dec 2018 05:49:28 GMT
    < x-response-time: 421
    < Connection: keep-alive
    < Transfer-Encoding: chunked
    <
    Hello world
    

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 vào vi mô bằng cách viết 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 chuyển qua cổng vi mô.

Bạn có 2 lựa chọn để triển khai trình bổ trợ cho một thực thể Edge Microgateway chạy trong vùng chứa Docker:

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ợ để thiết lập cổng vi cổng tiêu chuẩn của Edge. Nếu không, hãy xem phần Phát triển trình bổ trợ tuỳ chỉnh.

Lựa chọn A: Gắn thư mục trình bổ trợ vào một ổ đĩa

(Đã thêm vào phiên bản 2.5.27) Các bước thêm trình bổ trợ thông qua giá trị gắn ổ đĩa tương tự như các bước cần thiết để thêm bất kỳ trình bổ trợ tuỳ chỉnh nào vào Edge Microgateway. Khi chạy vùng chứa Docker, bạn có thể gắn thư mục trình bổ trợ vào hệ thống cục bộ (ổ đĩa) trên điểm gắn vùng chứa, tức là /opt/apigee/plugins. Sau đó, bạn chỉ định thư mục ổ đĩa cục bộ trong tệp cấu hình Edge Microgateway.

Các bước sau đây minh hoạ cách sử dụng điểm gắn Docker để thêm các trình bổ trợ tuỳ chỉnh.

  1. Dừng cổng micrô Edge:

    edgemicro stop
    
  2. Tạo thư mục cho các trình bổ trợ tuỳ chỉnh. Ví dụ: tạo

    $HOME/edgemicro/custom/plugins
    
  3. Thêm thư mục trình bổ trợ tuỳ chỉnh vào tệp cấu hình Edge Microgateway. Ví dụ:

      plugins:
        dir: $HOME/edgemicro/custom/plugins
        sequence:
          - oauth
          - response-uppercase
      ````
    
  4. Viết và kiểm thử trình bổ trợ theo hướng dẫn trong bài viết Viết một trình bổ trợ đơn giản. Hãy đảm bảo đặt mã trình bổ trợ vào cấu trúc thư mục thích hợp. Ví dụ:

    custom
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  5. Chạy vùng chứa Docker bằng một lệnh tương tự như sau, trong đó bạn sử dụng tuỳ chọn -v để gắn thư mục trình bổ trợ vào ổ đĩa Docker. Trong lệnh mẫu sau, thư mục trình bổ trợ $HOME/edgemicro/custom/plugins (nơi đặt trình bổ trợ tuỳ chỉnh) được liên kết với điểm gắn của vùng chứa /opt/apigee/plugins:

    docker run -P -p 8000:8000 -d --name edgemicro \
    -v /var/tmp:/opt/apigee/logs \
    -v $HOME/edgemicro/custom/plugins:/opt/apigee/plugins \
    -e EDGEMICRO_PROCESSES=1 \
    -e EDGEMICRO_ORG=jdoe \
    -e EDGEMICRO_ENV=test \
    -e EDGEMICRO_KEY=39c4b561100cd7f258768d1072f3e1d7c17b5f36a18fe89972bb5c9ce7e58fb \
    -e EDGEMICRO_SECRET=f5f9e239a38b4e6cc99c2aa067716a84aebdcff9580a7925fc500e402b1a5fa \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    -e SERVICE_NAME=edgemicro \
    --security-opt=no-new-privileges \
    --cap-drop=ALL gcr.io/apigee-microgateway/edgemicro:latest
    
  6. Hãy gọi API của bạn để kiểm thử trình bổ trợ.

Để biết thêm thông tin, hãy xem phần KHỐI [hệ thống tệp dùng chung].

Lựa chọn B: Xây dựng trình bổ trợ vào vùng chứa

Trong tuỳ chọn này, bạn sẽ tạo các trình bổ trợ vào vùng chứa của mình.

1. Đóng gói các trình bổ trợ của bạn

  1. Viết và kiểm thử trình bổ trợ 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ợ 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 cấu trúc cố định. Ví dụ sau cho thấy cấu trúc 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ó 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/

2. Tạo hình ảnh Docker

Tiếp theo, hãy tạo Dockerfile để thêm mã trình bổ trợ vào hình ảnh Edge Microgateway.

  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 và lưu tệp:

    USER root
    RUN apk update && \
        apk upgrade && \
        apk add zipapk add zip && \
        mkdir /opt/apigee/customplugins && \
        chown apigee:apigee /opt/apigee/customplugins
    COPY plugins.zip /opt/apigee/customplugins
    RUN su - apigee -c "unzip /opt/apigee/customplugins/plugins.zip -d /opt/apigee/customplugins"
    EXPOSE 8000
    EXPOSE 8443
    USER apigee
    ENTRYPOINT ["entrypoint"]
    
  3. Tạo hình ảnh Docker Microgateway mới bằng trình bổ trợ của bạn:

    docker build -t image-name .
    

    Ví dụ:

    docker build -t edgemicroplugins .
    

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

Giờ đây, các trình bổ trợ đã được đóng gói, bạn cần thêm các trình bổ trợ đó vào tệp cấu hình Edge Microgateway.

  1. Mở tệp cấu hình Edge Microgateway trong trình chỉnh sửa:

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

    Ví dụ:

    vi $HOME/.edgemicro/myorg-test-config.yaml
  2. Thêm thư mục trình bổ trợ vào tệp cấu hình. Trong ví dụ sau, thuộc tính dir chỉ định vị trí của mã trình bổ trợ (mà bạn đã chỉ định trong Dockerfile). Bạn cũng phải chỉ định tên của thư mục trình bổ trợ, trong ví dụ dưới đây là response-uppercase.

    edgemicro:
      ...
      plugins:
        dir: /opt/apigee/plugins
        sequence:
          - oauth
          - response-uppercase
    

4. Bắt đầu cổng vào vi mô

Cuối cùng, bạn phải bắt đầu cổng vào nhỏ trong vùng chứa.

  1. Chạy lệnh sau để mã hoá base64 cho tệp cấu hình Edge Microgateway nằm trong $HOME/.edgemicro:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`

    trong đó your_orgyour_env là tổ chức và môi trường bạn đã sử dụng khi chạy lệnh edgemicro config.

    Nhớ đặt dấu phẩy ngược (`) xung quanh lệnh đó. Ví dụ:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  2. Chạy Edge Microgateway dưới dạng vùng chứa. Lệnh này đặt một số biến môi trường mà thời gian chạy vùng chứa sử dụng để khởi động Edge Microgateway:

    docker run -P -p 8000:8000 -d --name edgemicroplugins \
    -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \
    -e EDGEMICRO_ORG=your_org \
    -e EDGEMICRO_ENV=your_env \
    -e EDGEMICRO_KEY=your_key \
    -e EDGEMICRO_SECRET=your_secret \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    -e SERVICE_NAME=edgemicroplugins image_name

    Ví dụ:

    docker run -P -p 8000:8000 -d --name edgemicroplugins \
    -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \
    -e EDGEMICRO_ORG=docs \
    -e EDGEMICRO_ENV=test \
    -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \
    -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \
    -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \
    -e SERVICE_NAME=edgemicroplugins edgemicroplugins
  3. Gọi API của bạn để kiểm thử trình bổ trợ:

    Hãy kiểm tra xem mã trình bổ trợ thực thi bằng cách gọi API của bạn và xác minh rằng kết quả đúng như mong đợi:

    curl -i http://localhost:8000/hello -H "x-api-key:apikey"

    Ví dụ: trình bổ trợ response-uppercase có thể trả về một phản hồi như sau:

    curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
      HELLO, WORLD!