Menggunakan Docker untuk Edge Microgateway

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Topik ini menjelaskan cara menjalankan Edge Microgateway dalam container Docker. Langkah-langkah yang dibahas dalam topik ini mengasumsikan pemahaman dasar tentang Docker, perintah Docker, serta penyiapan dan konfigurasi Edge Microgateway. Untuk mengetahui informasi selengkapnya, lihat dokumentasi untuk Docker dan Edge Microgateway.

Prasyarat

Sebelum menjalankan Edge Microgateway dalam container Docker, Anda harus melakukan tugas-tugas berikut:

  • Konfigurasikan Edge Microgateway untuk organisasi/lingkungan Apigee Anda:

    edgemicro configure -o your_org -e your_env -u your_username

    Untuk mengetahui detail selengkapnya tentang konfigurasi, lihat Bagian 1: Mengonfigurasi Edge Microgateway.

  • Setelah melakukan langkah-langkah konfigurasi, cari file konfigurasi. Lokasi defaultnya ada di sini:

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

    dengan your_org dan your_env adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintah edgemicro config. Anda akan memerlukan file ini saat memulai Edge Microgateway di container Docker.

  • Pastikan Anda memiliki kredensial kunci dan rahasia yang ditampilkan saat menjalankan perintah edgemicro config. Contoh:

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    
  • Sebelum memulai Edge Microgateway di container Docker, Anda harus membuat (atau telah membuat) entity Apigee Edge yang diperlukan untuk melakukan panggilan proxy API yang diautentikasi. Entitas ini mencakup proxy yang peka Edge Microgateway, Produk API, Developer, dan Aplikasi Developer. Untuk mengetahui petunjuk selengkapnya, lihat Membuat entity di Apigee Edge.

Jalankan Edge Micro sebagai container Docker

  1. Download image Docker untuk Edge Microgateway:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. Sebelum melanjutkan ke langkah berikutnya, pastikan Anda telah melakukan semua langkah di bagian Prasyarat.

  3. Jalankan perintah berikut untuk mengenkode base64 file konfigurasi Edge Microgateway yang terletak di $HOME/.edgemicro:

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

    dengan your_org dan your_env adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintah edgemicro config.

    Ingatlah untuk menempatkan tanda petik terbalik (`) di sekitar perintah. Contoh:

    export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
  4. Jalankan Edge Microgateway sebagai container. Perintah ini menetapkan beberapa variabel lingkungan yang digunakan oleh runtime container untuk memulai Edge Microgateway:

    chown -R 100:101 ~/.edgemicro/ \
    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 "LOG_CONSOLE_OUTPUT_TO_FILE=false" \
    -e SERVICE_NAME=edgemicro \
    --security-opt=no-new-privileges \
    --cap-drop=ALL \
    gcr.io/apigee-microgateway/edgemicro:latest

    Parameter

      <tr>
        <td><code>SERVICE_NAME</code></td>
        <td>If you are on Kubernetes, this parameter is auto-populated. Otherwise,
          you can set it to anything you wish. If you specify nothing, the service
          name is set to <code>default</code>.</td>
      </tr>
      <tr>
        <tr>
        <td><code>DEBUG</code></td>
        <td>Set to <code>*</code> to enable debugging. </td>
      </tr>
      <tr>
        <td><code>HTTP_PROXY</code>
            <code>HTTPS_PROXY</code></td>
        <td>Use when Edge Microgateway is
          running behind a firewall and the gateway cannot communicate with Apigee
          Edge. For more
          information, see <a href="operation-and-configuration-reference-edge-microgateway#settingupedgemicrogatewaybehindacompanyfirewall">Setting up Edge Microgateway behind a company firewall</a>. 
          <p>For example: <code>HTTP_PROXY=http://10.203.0.1:5187/</code></p></td>
      </tr>
      <tr>
        <td><code>NO_PROXY</code></td>
        <td>A comma delimited list of domains that Edge Microgateway should not proxy to. 
          For more information, see <a href="operation-and-configuration-reference-edge-microgateway#settingupedgemicrogatewaybehindacompanyfirewall">Setting up Edge Microgateway behind a company firewall</a>.
          <p>For example: <code>localhost,127.0.0.1,localaddress,.localdomain.com</code></p></td>
      </tr>
      <tr>
      <tr>
        <tr>
        <td><code>NODE_EXTRA_CA_CERTS</code></td>
        <td>(Optional) Use this parameter if you are using a CA that's not trusted
          by default by Node.js. Set the value of this parameter to the path to a
          file containing one or more trusted certificates in PEM format. For
          details, see <a href="#tls_certificates">TLS certificates</a>.</td>
      </tr>
      <tr>
        <td><code>--security-opt</code></td>
        <td>(Optional) Sets desired Docker security options. See <a href="https://docs.docker.com/engine/reference/run/#security-configuration">Security configuration</a> in the Docker documentation.</td>
      </tr>
      <tr>
        <td><code>--cap-drop</code></td>
        <td>(Optional) Sets limits on Linux capabilities permitted in the container. See <a href="https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities">Runtime privilege and Linux capabilities</a> in the Docker documentation.</td>
      </tr>
    </tbody>
    

    Parameter Deskripsi
    -P Memublikasikan semua port yang diekspos ke host. Lihat juga Referensi menjalankan Docker.
    -p Memetakan satu port atau rentang port secara eksplisit. Lihat juga Referensi menjalankan Docker.
    -d Jalankan dalam mode terpisah. Lihat juga Referensi menjalankan Docker.
    -v, -- volume Menentukan pemasangan volume. Perhatikan bahwa jika Anda mengonfigurasi Edge Microgateway untuk menggunakan TLS dalam container Docker, Anda harus mengekspos port 8443 jika memasang direktori file log. Lihat juga VOLUME [sistem file bersama]. Lihat juga Menggunakan TLS di Container Docker.
    -w, -- workdir (Opsional) Menentukan jalur ke direktori tempat file edgemicro.sock dan edgemicro.pid harus dibuat. Anda tidak dapat mengubah root nama file edgemicro. Setelan defaultnya adalah jalur direktori kerja saat ini.

    Contoh:

    docker run -P -p 8000:8000 -d -w /tmp --name edgemicro 
    ...
    EDGEMICRO_ORG Nama organisasi Apigee yang Anda gunakan untuk mengonfigurasi Edge Microgateway.
    EDGEMICRO_ENV Nama lingkungan Apigee yang Anda gunakan untuk mengonfigurasi Edge Microgateway.
    EDGEMICRO_PROCESSES Jumlah proses yang akan dimulai.
    EDGEMICRO_KEY Kunci yang ditampilkan saat Anda mengonfigurasi Edge Microgateway.
    EDGEMICRO_SECRET Rahasia yang ditampilkan saat Anda mengonfigurasi Edge Microgateway.
    EDGEMICRO_CONFIG Variabel yang berisi file konfigurasi Edge Microgateway berenkode base64.
    LOG_CONSOLE_OUTPUT_TO_FILE (Boolean) Memungkinkan Anda menentukan ke mana output log dikirim. Lihat Menentukan opsi file log.

    Contoh:

    chown -R 100:101 ~/.edgemicro/ 
    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

    1. Untuk memeriksa apakah container sedang berjalan:

      docker ps

      Anda akan melihat output yang mirip dengan berikut ini:

      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
      

    Menentukan opsi output file log

    Parameter konfigurasi Edge Microgateway to_console memungkinkan Anda memilih untuk mengirim informasi log ke output standar, bukan ke file log. Jika Anda mengikuti langkah-langkah untuk menjalankan Edge Microgateway di container Docker, container secara default akan mengalihkan stdout dan output error ke file yang berada dalam container di lokasi: ${APIGEE_ROOT}/logs/edgemicro.log.

    Untuk mencegah informasi log dikirim ke edgemicro.log, gunakan variabel LOG_CONSOLE_OUTPUT_TO_FILE saat Anda menjalankan penampung.

    Tabel berikut menjelaskan perilaku output log saat Anda menggunakan LOG_CONSOLE_OUTPUT_TO_FILE dengan to_console:

    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=false

    • Tidak ada log yang akan dikirim ke file log Edge Microgateway, seperti yang dijelaskan dalam Mengelola file log.
    • Log tidak akan dikirim ke file edgemicro.log.
    to_console: true

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • Tidak ada log yang akan dikirim ke file log Edge Microgateway, seperti yang dijelaskan dalam Mengelola file log.
    • Log akan dikirim ke file edgemicro.log.
    to_console: false

    LOG_CONSOLE_OUTPUT_TO_FILE=true

    • Log akan dikirim ke file log Edge Microgateway, seperti yang dijelaskan dalam Mengelola file log.
    • Log akan dikirim ke file edgemicro.log.

    Menguji panggilan API

    Setelah memulai Edge Microgateway di container, Anda dapat melakukan panggilan API ke sana. Misalnya, jika jalur dasar API Anda adalah /hello:

    http://localhost:8000/hello

    Contoh output:

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

    Jika Anda melihat respons ini, berarti Edge Microgateway berhasil menangani panggilan API. Namun, secara default, Edge Microgateway memerlukan kunci API untuk autentikasi. Pada bagian berikutnya, Anda akan menguji API dengan kunci API yang valid.

    Menguji API dengan kunci API yang valid

    Di UI Edge, buka Aplikasi Developer yang Anda buat sebelumnya. Di halaman Aplikasi Developer, tampilkan Kunci Konsumen, lalu salin. Nilai ini adalah kunci API. Anda harus menggunakan kunci ini untuk melakukan panggilan API yang diautentikasi.

    Panggil API dengan header x-api-key sebagai berikut. Nilai Kunci Konsumen yang disalin dari Aplikasi Developer adalah kunci API. Secara default, Edge Microgateway mengharapkan Anda meneruskan kunci dalam header bernama x-api-key, seperti ini:

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

    Contoh:

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

    Jika Anda ingin mempelajari lebih lanjut cara melakukan panggilan API yang diautentikasi melalui Edge Microgateway dengan kunci API dan token OAuth, lihat Bagian 4: Mengamankan Edge Microgateway.

    Menghentikan Microgateway Edge

    Gunakan perintah Docker berikut untuk menghentikan Edge Microgateway:

    docker stop edgemicro
    

    Memulai Ulang Edge Microgateway

    Setelah menghentikan Edge Microgateway, Anda dapat memulai ulangnya dengan perintah Docker ini:

    docker start edgemicro
    

    Menggunakan TLS di container Docker

    Bagian ini menjelaskan cara mengonfigurasi TLS untuk Edge Microgateway yang berjalan di container Docker. Anda dapat mengonfigurasi server Edge Microgateway agar menggunakan TLS untuk permintaan masuk (arah ke utara), dan dapat mengonfigurasi Edge Microgateway menjadi klien TLS untuk permintaan keluar guna menargetkan endpoint (arah selatan).

    Tempat meletakkan file sertifikat

    Container Docker yang menjalankan Edge Microgateway memiliki titik pemasangan di /opt/apigee/.edgemicro. Saat mengonfigurasi Edge Microgateway untuk menggunakan sertifikat TLS, Anda dapat menyediakan file sertifikat di direktori pemasangan tersebut dan merujuknya di file konfigurasi Edge Microgateway. File konfigurasi ini biasanya berada di direktori $HOME/.edgemicro, dan diberi nama your_org-your_env-config.yaml. Contoh:

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

    Menggunakan CA yang tidak dipercaya oleh Node.js

    Jika Anda menggunakan Certificate Authority (CA) yang tidak dipercaya secara default oleh Node.js (seperti pada sertifikat yang ditandatangani sendiri), pertimbangkan untuk menggunakan parameter NODE_EXTRA_CA_CERTS saat Anda menjalankan penampung.

    Tetapkan parameter ini ke jalur ke file yang berisi satu atau beberapa sertifikat tepercaya dalam format PEM. Untuk melihat cara parameter ini digunakan, lihat contoh Cara mengonfigurasi TLS arah utara dan Cara mengonfigurasi TLS arah selatan.

    Contoh:

    chown -R 100:101 ~/.edgemicro/ \
    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
    

    Lihat juga Menjalankan Edge Micro sebagai container Docker.

    Menonaktifkan validasi TLS

    Meskipun tidak direkomendasikan, dalam beberapa kasus, Anda mungkin ingin menonaktifkan validasi TLS untuk Edge Microgateway yang berjalan di container. Secara default, kemampuan untuk menonaktifkan TLS tidak terintegrasi dalam container Docker Edge Microgateway. Agar dapat menyelesaikan tugas ini, Anda harus membuat image Docker yang disesuaikan untuk Edge Microgateway. Berikut petunjuk umum untuk membuat image kustom dan menonaktifkan validasi TLS.

    1. Clone atau download repositori sumber Edge Microgateway dari https://github.com/apigee-internal/microgateway.

    2. cd ke direktori microgateway/kubernetes/docker/edgemicro di direktori kode sumber.

      Contoh:

      cd $HOME/git/microgateway/kubernetes/docker/edgemicro
      
    3. Buka file entrypoint.sh dan ubah kode untuk menerima variabel lingkungan NODE_TLS_REJECT_UNAUTHORIZED. Kemudian, saat menjalankan penampung, Anda akan menentukan nilai untuk variabel ini.

    4. Bangun container Docker:

      docker build -t edgemicro .
      
    5. Saat Anda menjalankan penampung, tentukan opsi -e NODE_TLS_REJECT_UNAUTHORIZED = 1. Contoh:

    chown -R 100:101 ~/.edgemicro/ \
    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
    

    Contoh: Cara mengonfigurasi TLS arah utara

    Bagian ini menjelaskan cara menyiapkan koneksi TLS arah utara (masuk) di server Edge Microgateway. TLS Northbound memungkinkan klien menggunakan HTTPS saat melakukan panggilan API ke Edge Microgateway. Contoh di bawah menggunakan sertifikat yang ditandatangani sendiri.

    1. Langkah-langkah penyiapan intim

    1. Temukan file openssl.cnf di sistem Anda. Misalnya, /etc/ssl/openssl.cnf.
    2. Buka file opensssl.cnf untuk mengedit.
    3. Pastikan req_extensions ada di file konfigurasi Anda. Misalnya, Anda harus memiliki informasi yang mirip dengan berikut ini dalam file:

      [ req ]
      ...
      req_extensions          = v3_req
      ...
      
      [ v3_req ]
      extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
      basicConstraints = CA:FALSE
      keyUsage = nonRepudiation, digitalSignature, keyEncipherment
      
    4. Tambahkan stanza berikut ke openssl.cnf untuk menghasilkan atribut SNI yang tepat:

      [ 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
      

      Contoh file opensssl.cnf:

      [ 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. Ikuti langkah-langkah yang diberikan di bagian Prasyarat untuk melakukan inisialisasi dan mengonfigurasi Edge Microgateway, jika Anda belum melakukannya. Setelah selesai, Anda seharusnya sudah membuat proxy Edge Microgateway, Produk API, Developer, dan Aplikasi Developer. Selain itu, Anda harus menjalankan perintah edgemicro configure serta menerima kunci dan rahasia.

    2. Membuat sertifikat yang ditandatangani sendiri

    Selanjutnya, buat sertifikat dan kunci yang diperlukan untuk membuat TLS:

    1. cd ke direktori $HOME/.edgemicro.
    2. Buat skrip bash berikut. Anda dapat menamainya apa saja yang Anda inginkan. Contoh: 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. Di file bash, pastikan jalur ke file openssl.cnf sudah benar.

    4. Jalankan file bash. Anda akan diminta untuk memberikan informasi sertifikat. Pastikan untuk menggunakan localhost untuk Nama Umum.

    5. Pastikan file berikut telah dibuat:

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

    3. Mengedit file konfigurasi Edge Microgateway

    1. Buka file konfigurasi Edge Micro di editor. Contoh:

      vi $HOME/.edgemicro/myorg-test-config.yaml
      
    2. Edit stanza edgemicro sebagai berikut. Perlu diperhatikan bahwa Anda akan membuat perubahan pada atribut port dan ssl:

      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. Jalankan perintah berikut untuk mengenkode base64 file konfigurasi Edge Microgateway yang terletak di $HOME/.edgemicro:

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

      dengan your_org dan your_env adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintah edgemicro config.

      Ingatlah untuk menempatkan tanda petik terbalik (`) di sekitar perintah. Contoh:

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

    Lihat juga Menjalankan Edge Micro sebagai container Docker.

    4. Jalankan container

    1. Jalankan perintah berikut untuk menjalankan container Docker dengan Edge Microgateway:

      chown -R 100:101 ~/.edgemicro/ \
      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. Perhatikan parameter yang digunakan dalam perintah berikut; parameter ini berbeda dengan perintah dasar yang dijelaskan dalam Run Edge Micro sebagai container Docker.

      • port disetel ke 8443.
      • Pemasangan volume digunakan untuk memasang file kunci dan sertifikat.
      • Variabel NODE_EXTRA_CA_CERTS digunakan untuk menambahkan CA kustom (sebagaimana diperlukan dalam kasus sertifikat yang ditandatangani sendiri).

    5. Menguji konfigurasi TLS

    1. Jalankan perintah cURL berikut untuk menguji penyiapan. Ganti basepath dan kunci API Anda ke dalam perintah. Contoh berikut mengasumsikan Anda berada di direktori tempat rootca.pem berada dan proxy yang Anda buat memiliki basepath /hello:

      curl -v https://localhost:8443/hello --cacert rootca.pem \
      -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
      
    2. Output cURL panjang menunjukkan setiap langkah handhaking TLS. Jika Anda melihat respons HTTP 200, konfigurasi berhasil:

      *   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!
      

    Contoh: Cara mengonfigurasi TLS arah selatan

    Bagian ini menjelaskan cara menyiapkan koneksi TLS arah selatan (keluar) antara server Edge Microgateway dan aplikasi target backend. Contoh di bawah ini menggunakan sertifikat yang ditandatangani sendiri.

    1. Langkah penyiapan awal

    1. Temukan file openssl.cnf di sistem Anda. Misalnya, /etc/ssl/openssl.cnf.
    2. Buka file opensssl.cnf untuk mengedit.
    3. Pastikan req_extensions ada di file konfigurasi Anda. Misalnya, Anda harus memiliki informasi yang mirip dengan berikut ini dalam file:

      [ req ]
      ...
      req_extensions          = v3_req
      ...
      
      [ v3_req ]
      extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
      basicConstraints = CA:FALSE
      keyUsage = nonRepudiation, digitalSignature, keyEncipherment
      
    4. Tambahkan stanza berikut ke openssl.cnf untuk menghasilkan atribut SNI yang tepat:

      [ 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
      

      Contoh file opensssl.cnf:

      [ 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. Jalankan perintah edgemicro configure:

      edgemicro configure -o your_org -e your_env -u your_username

      Untuk mengetahui detail selengkapnya tentang konfigurasi, lihat Bagian 1: Mengonfigurasi Edge Microgateway.

    6. Salin kredensial kunci dan rahasia yang ditampilkan dari edgemicro configure. Anda akan memerlukan nilai-nilai ini untuk menjalankan container. Contoh:

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

    2. Membuat aplikasi target Node.js

    1. cd ke direktori .edgemicro.

    2. Buat skrip bash berikut. Anda dapat menamainya apa saja yang Anda inginkan. Contoh: 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. Di file bash, pastikan jalur ke file openssl.cnf sudah benar.

    4. Jalankan file bash. Anda akan diminta untuk memberikan informasi sertifikat. Pastikan untuk menggunakan hellworld untuk Nama Umum.

    5. Pastikan file berikut telah dibuat:

      • rootca.key
      • rootca.pem
      • tls.key
      • tls.csr
      • rootca.srl
      • tls.crt
    6. Buat file baru dengan nama 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. Buat file package.json di direktori yang sama dengan server.js. Contoh:

      {
        "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. Jalankan npm install untuk mendapatkan dependensi.

    9. Buat Dockerfile baru di direktori yang sama dengan server.js, dengan WORKDIR adalah jalur ke root aplikasi Node.js Anda:

      FROM node:8-alpine
      WORKDIR path-to-your-node-app
      COPY package*.json ./
      
      RUN npm install
      COPY . .
      EXPOSE 9443
      CMD [ "npm", "start" ]
      
    10. Bangun image Docker:

      docker build -t helloworld . 
      
    11. Mulai aplikasi contoh:

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

    3. Membuat entity di Apigee Edge

    1. Buat proxy yang mendukung Edge Microgateway dengan setelan ini. Untuk mengetahui informasi selengkapnya, lihat Membuat proxy API Edge Microgateway-aware di Edge.

      • Nama proxy: edgemicro_local
      • Revisi: 1
      • Jalur dasar: /local
      • Target: https://helloworld:9443
    2. Membuat produk API. Untuk mengetahui detailnya, lihat Membuat produk.

    3. Membuat developer. Untuk mengetahui detailnya, lihat Membuat developer.

    4. Membuat aplikasi Developer. Untuk mengetahui detailnya, lihat Membuat aplikasi developer

    4. Jalankan container

    1. Buka file konfigurasi Edge Micro di editor. Contoh:

      vi $HOME/.edgemicro/myorg-test-config.yaml
      
    2. Edit stanza edgemicro sebagai berikut. Perlu diperhatikan bahwa Anda akan membuat perubahan pada atribut port dan ssl:

      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. Jalankan perintah berikut untuk mengenkode base64 file konfigurasi Edge Microgateway yang berada di $HOME/.edgemicro:

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

      dengan your_org dan your_env adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintah edgemicro config.

      Ingatlah untuk menempatkan tanda petik terbalik (`) di sekitar perintah. Contoh:

      export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
    4. Jalankan perintah berikut untuk memulai Edge Microgateway di container Docker.

      chown -R 100:101 ~/.edgemicro/ \
      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. Menguji konfigurasi TLS

    1. Jalankan perintah cURL berikut untuk menguji penyiapan. Ganti jalur dasar yang Anda gunakan di proxy berbasis microgateway dan kunci API yang diperoleh dari aplikasi Developer yang Anda buat di Apigee Edge. Contoh:

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

      Anda akan melihat error ini:

      ...
      *  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. Jalankan kembali Edge Microgateway, tetapi kali ini tambahkan variabel NODE_EXTRA_CA_CERTS.

      chown -R 100:101 ~/.edgemicro/ \
      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. Jalankan perintah cURL berikut. Ganti jalur dasar dan kunci API Anda seperti sebelumnya. Contoh:

      curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
      
    4. Periksa output. Jika berhasil, Anda akan mendapatkan respons status 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
      

    Menambahkan plugin kustom

    Anda dapat menambahkan fitur dan kemampuan baru ke microgateway dengan menulis plugin kustom. Plugin kustom memungkinkan Anda berinteraksi secara terprogram dengan permintaan dan respons yang mengalir melalui microgateway.

    Anda memiliki dua opsi untuk men-deploy plugin ke instance Edge Microgateway yang berjalan di container docker:

    Bagian selanjutnya mengasumsikan bahwa Anda telah terbiasa menulis dan mengonfigurasi plugin untuk penyiapan Edge Microgateway standar. Jika belum, lihat Mengembangkan plugin kustom.

    Opsi A: Memasang direktori plugin pada volume

    (Ditambahkan di v.2.5.27) Langkah-langkah untuk menambahkan plugin melalui pemasangan volume mirip dengan langkah yang diperlukan untuk menambahkan plugin kustom ke Edge Microgateway. Saat menjalankan container Docker, Anda dapat memasang direktori plugin di sistem lokal (volume) di direktori pemasangan container, yaitu /opt/apigee/plugins. Kemudian, Anda dapat menentukan direktori volume lokal di file konfigurasi Edge Microgateway.

    Langkah-langkah berikut menunjukkan cara menggunakan direktori pemasangan Docker untuk menyertakan plugin kustom.

    1. Menghentikan Edge Microgateway:

      edgemicro stop
      
    2. Buat direktori untuk plugin kustom Anda. Misalnya, buat

      $HOME/edgemicro/custom/plugins
      
    3. Tambahkan direktori plugin kustom ke file konfigurasi Edge Microgateway. Contoh:

        plugins:
          dir: $HOME/edgemicro/custom/plugins
          sequence:
            - oauth
            - response-uppercase
        ````
      
    4. Tulis dan uji plugin Anda, sesuai dengan petunjuk dalam Menulis plugin sederhana. Pastikan untuk menempatkan kode plugin Anda di struktur direktori yang tepat. Contoh:

      custom
        |
        |-- plugins
          |
          |- response-uppercase
          |     |- index.js
          |     |- package.json
          |- request-headers
          |     | - index.js
                | - package.json
      
    5. Jalankan container Docker dengan perintah yang mirip dengan berikut ini, tempat Anda menggunakan opsi -v untuk memasang direktori plugin pada volume Docker. Dalam contoh perintah berikut, direktori plugin $HOME/edgemicro/custom/plugins (tempat plugin kustom berada) dipetakan ke titik pemasangan container /opt/apigee/plugins:

      chown -R 100:101 ~/.edgemicro/ \
      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. Panggil API Anda untuk menguji plugin.

    Untuk informasi selengkapnya, lihat VOLUME [sistem file bersama].

    Opsi B: Mem-build plugin ke dalam container

    Dalam opsi ini, Anda mem-build plugin ke dalam penampung.

    1. Mengemas plugin

    1. Tulis dan uji plugin Anda, sesuai dengan petunjuk dalam Menulis plugin sederhana.

    2. Tempatkan kode plugin Anda di struktur direktori yang tepat. Direktori plugin harus mengikuti struktur yang ditetapkan. Contoh berikut menunjukkan struktur yang harus Anda ikuti, dengan response-uppercase dan request-headers adalah nama folder yang berisi kode plugin kustom (nama ini hanya contoh, nama folder Anda mungkin berbeda):

      plugin
        |
        |-- plugins
          |
          |- response-uppercase
          |     |- index.js
          |     |- package.json
          |- request-headers
          |     | - index.js
                | - package.json
      
    3. cd ke folder plugin.

    4. Dalam folder plugin, zip seluruh folder plugins:

      zip -r plugins.zip plugins/

    2. Membuat image Docker

    Selanjutnya, buat Dockerfile untuk menambahkan kode plugin Anda ke image Edge Microgateway.

    1. Di direktori yang sama dengan tempat file ZIP berada, buat file baru bernama Dockerfile.
    2. Tambahkan kode berikut ke Dockerfile dan simpan file:

      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. Buat image Docker Edge Microgateway baru dengan plugin Anda:

      docker build -t image-name .
      

      Contoh:

      docker build -t edgemicroplugins .
      

    3. Memperbarui konfigurasi Edge Microgateway

    Setelah paket dikemas, Anda perlu menambahkannya ke file konfigurasi Edge Microgateway.

    1. Buka file konfigurasi Edge Microgateway di editor:

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

      Contoh:

      vi $HOME/.edgemicro/myorg-test-config.yaml
    2. Tambahkan direktori plugin ke file konfigurasi. Dalam contoh berikut, atribut dir menentukan lokasi kode plugin (yang Anda tentukan di Dockerfile). Anda juga harus menentukan nama direktori plugin, yang pada contoh di bawah adalah response-uppercase.

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

    4. Mulai microgateway

    Terakhir, Anda harus memulai microgateway dalam container.

    1. Jalankan perintah berikut untuk mengenkode base64 file konfigurasi Edge Microgateway yang terletak di $HOME/.edgemicro:

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

      dengan your_org dan your_env adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintah edgemicro config.

      Ingatlah untuk menempatkan tanda petik terbalik (`) di sekitar perintah. Contoh:

      export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
    2. Jalankan Edge Microgateway sebagai container. Perintah ini menetapkan beberapa variabel lingkungan yang digunakan oleh runtime container untuk memulai 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

      Contoh:

      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. Panggil API Anda untuk menguji plugin:

      Uji apakah kode plugin dijalankan dengan memanggil API Anda dan memverifikasi bahwa output sesuai yang diharapkan:

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

      Misalnya, plugin response-uppercase mungkin menampilkan respons seperti ini:

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