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 di container Docker, Anda harus melakukan tugas berikut:
Mengonfigurasi 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_orgdanyour_envadalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config. Anda akan memerlukan file ini saat memulai Edge Microgateway di container Docker.Pastikan Anda memiliki kredensial kunci dan rahasia yang ditampilkan saat Anda menjalankan perintah
edgemicro config. Contoh:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430Sebelum memulai Edge Microgateway dalam penampung Docker, Anda perlu membuat (atau telah membuat) entitas Apigee Edge yang diperlukan untuk melakukan panggilan proxy API yang diautentikasi. Entitas ini mencakup proxy yang kompatibel dengan Edge Microgateway, Produk API, Developer, dan Aplikasi Developer. Untuk mengetahui petunjuk lengkapnya, lihat Membuat entitas di Apigee Edge.
Menjalankan Edge Micro sebagai container Docker
Download image Docker untuk Edge Microgateway:
docker pull gcr.io/apigee-microgateway/edgemicro:latest
Sebelum melanjutkan ke langkah berikutnya, pastikan Anda telah melakukan semua langkah di bagian Prasyarat.
Jalankan perintah berikut untuk mengenkode file konfigurasi Edge Microgateway yang terletak di
$HOME/.edgemicrodengan base64:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_orgdanyour_envadalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config.Jangan lupa untuk menempatkan tanda petik terbalik (`) di sekitar perintah. Contoh:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
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 SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro:latest
Parameter
Parameter Deskripsi -PPublikasikan semua port yang terekspos ke host. Lihat juga Referensi Docker run. -pMemetakan satu port atau rentang port secara eksplisit. Lihat juga Referensi Docker run. -dJalankan dalam mode terpisah. Lihat juga Referensi Docker run. -v, --volumeMenentukan pemasangan volume. Perhatikan bahwa jika Anda mengonfigurasi Edge Microgateway untuk menggunakan TLS di penampung Docker, Anda harus mengekspos port 8443 jika Anda memasang direktori file log. Lihat juga VOLUME [shared filesystems]. Lihat juga Menggunakan TLS di Container Docker. EDGEMICRO_ORGNama organisasi Apigee yang Anda gunakan untuk mengonfigurasi Edge Microgateway. EDGEMICRO_ENVNama lingkungan Apigee yang Anda gunakan untuk mengonfigurasi Edge Microgateway. EDGEMICRO_PROCESSESJumlah proses yang akan dimulai. EDGEMICRO_KEYKunci yang ditampilkan saat Anda mengonfigurasi Edge Microgateway. EDGEMICRO_SECRETSecret yang ditampilkan saat Anda mengonfigurasi Edge Microgateway. EDGEMICRO_CONFIGVariabel yang berisi file konfigurasi Edge Microgateway berenkode base64. SERVICE_NAMEJika Anda menggunakan Kubernetes, parameter ini akan diisi otomatis. Jika tidak, Anda dapat menyetelnya ke nilai apa pun yang Anda inginkan. Jika Anda tidak menentukan apa pun, nama layanan akan ditetapkan ke default.DEBUGSetel ke *untuk mengaktifkan proses debug.HTTP_PROXYHTTPS_PROXYGunakan saat Edge Microgateway berjalan di belakang firewall dan gateway tidak dapat berkomunikasi dengan Apigee Edge. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan Edge Microgateway di belakang firewall perusahaan. Contoh:
HTTP_PROXY=http://10.203.0.1:5187/NO_PROXYDaftar domain yang dipisahkan koma yang tidak boleh di-proxy oleh Edge Microgateway. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan Edge Microgateway di belakang firewall perusahaan. Contoh:
localhost,127.0.0.1,localaddress,.localdomain.comNODE_EXTRA_CA_CERTS(Opsional) Gunakan parameter ini jika Anda menggunakan CA yang tidak dipercaya secara default oleh Node.js. Tetapkan nilai parameter ini ke jalur ke file yang berisi satu atau beberapa sertifikat tepercaya dalam format PEM. Untuk detailnya, lihat Sertifikat TLS. --security-opt(Opsional) Menetapkan opsi keamanan Docker yang diinginkan. Lihat Konfigurasi keamanan dalam dokumentasi Docker. --cap-drop(Opsional) Menetapkan batas pada kemampuan Linux yang diizinkan dalam penampung. Lihat Hak istimewa runtime dan kemampuan Linux dalam dokumentasi Docker. 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
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
Menguji panggilan API
Setelah memulai Edge Microgateway di penampung, Anda dapat melakukan panggilan API ke Edge Microgateway.
Misalnya, jika basepath 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. Di bagian berikutnya, Anda akan menguji API dengan kunci API yang valid.
Menguji API dengan kunci API yang valid
Di Edge UI, buka Aplikasi Developer yang Anda buat sebelumnya. Di halaman Aplikasi Developer, tampilkan Consumer Key dan salin. Nilai ini adalah kunci API. Anda akan menggunakan kunci ini untuk melakukan panggilan API yang terautentikasi.
Panggil API dengan header x-api-key sebagai berikut. Nilai Consumer Key yang Anda salin dari Aplikasi Developer adalah kunci API. Secara default, Edge Microgateway mengharapkan Anda meneruskan kunci di 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 Edge Microgateway
Gunakan perintah Docker berikut untuk menghentikan Edge Microgateway:
docker stop edgemicro
Memulai ulang Edge Microgateway
Setelah menghentikan Edge Microgateway, Anda dapat memulainya kembali 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 untuk menggunakan TLS bagi permintaan masuk (arah utara), dan Anda dapat mengonfigurasi Edge Microgateway agar menjadi klien TLS untuk permintaan keluar ke endpoint target (arah selatan).
Tempat meletakkan file sertifikat
Container Docker yang menjalankan Edge Microgateway memiliki direktori pemasangan di /opt/apigee/.edgemicro.
Saat mengonfigurasi Edge Microgateway untuk menggunakan sertifikat TLS, Anda dapat menyediakan file sertifikat di direktori pemasangan tersebut dan merujuknya dalam file konfigurasi Edge Microgateway. File konfigurasi ini biasanya terletak 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 dipercayai oleh Node.js
Jika Anda menggunakan Otoritas Sertifikat (CA) yang tidak dipercaya secara default oleh
Node.js (seperti halnya sertifikat yang ditandatangani sendiri), sebaiknya gunakan
parameter NODE_EXTRA_CA_CERTS saat Anda menjalankan penampung.
Tetapkan parameter ini ke jalur file yang berisi satu atau beberapa sertifikat tepercaya dalam format PEM. Untuk melihat cara penggunaan parameter ini, lihat contoh Cara mengonfigurasi TLS northbound dan Cara mengonfigurasi TLS southbound.
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 dalam penampung. Kemampuan untuk menonaktifkan TLS tidak disertakan dalam container Docker Edge Microgateway secara default. Untuk menyelesaikan tugas ini, Anda harus membuat image Docker yang disesuaikan untuk Edge Microgateway. Di bawah ini adalah petunjuk umum untuk membuat image kustom dan menonaktifkan validasi TLS.
Lakukan clone atau download repositori sumber Edge Microgateway dari
https://github.com/apigee-internal/microgateway.cdke direktorimicrogateway/kubernetes/docker/edgemicrodi direktori kode sumber.Contoh:
cd $HOME/git/microgateway/kubernetes/docker/edgemicroBuka file
entrypoint.shdan ubah kode untuk menerima variabel lingkunganNODE_TLS_REJECT_UNAUTHORIZED. Nanti, saat menjalankan container, Anda akan menentukan nilai untuk variabel ini.Bangun container Docker:
docker build -t edgemicro .Saat Anda menjalankan container, 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 northbound
Bagian ini menjelaskan cara menyiapkan koneksi TLS northbound (masuk) di server Edge Microgateway. TLS ke utara memungkinkan klien menggunakan HTTPS saat melakukan panggilan API ke Edge Microgateway. Contoh di bawah menggunakan sertifikat yang ditandatangani sendiri.
1. Langkah-langkah penyiapan awal
- Temukan file
openssl.cnfdi sistem Anda. Misalnya,/etc/ssl/openssl.cnf. - Buka file
opensssl.cnfuntuk mengedit. Pastikan
req_extensionsada di file konfigurasi Anda. Misalnya, Anda akan memiliki informasi yang mirip dengan berikut dalam file Anda:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentTambahkan stanza berikut ke
openssl.cnfuntuk membuat 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::1Contoh 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::1Ikuti langkah-langkah yang diberikan di bagian Prasyarat untuk menginisialisasi dan mengonfigurasi Edge Microgateway, jika Anda belum melakukannya. Setelah selesai, Anda akan membuat proxy yang kompatibel dengan Edge Microgateway, Produk API, Developer, dan Aplikasi Developer. Selain itu, Anda akan menjalankan perintah
edgemicro configuredan menerima kunci dan rahasia.
2. Membuat sertifikat yang ditandatangani sendiri
Selanjutnya, buat sertifikat dan kunci yang akan Anda perlukan untuk membuat TLS:
cdke direktori$HOME/.edgemicro.Buat skrip bash berikut. Anda dapat memberinya nama apa pun 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
Di file bash, pastikan jalur ke file
openssl.cnfsudah benar.Jalankan file bash. Anda akan diminta untuk memasukkan informasi sertifikat. Pastikan untuk menggunakan
localhostuntuk Nama Umum.Periksa apakah file berikut telah dibuat:
rootca.keyrootca.pemtls.keytls.csrrootca.srltls.crt
3. Edit file konfigurasi Edge Microgateway
Buka file konfigurasi Edge Micro di editor. Contoh:
vi $HOME/.edgemicro/myorg-test-config.yamlEdit stanza
edgemicrosebagai berikut. Perhatikan bahwa Anda membuat perubahan pada atributportdanssl: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: ...Jalankan perintah berikut untuk mengenkode file konfigurasi Edge Microgateway yang terletak di
$HOME/.edgemicrodengan base64:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_orgdanyour_envadalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config.Jangan lupa 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
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
Perhatikan parameter berikut yang digunakan dalam perintah; parameter ini berbeda dengan perintah dasar yang dijelaskan dalam Menjalankan Edge Micro sebagai container Docker.
portdisetel ke8443.- Pemasangan volume digunakan untuk memasang file kunci dan sertifikat.
- Variabel
NODE_EXTRA_CA_CERTSdigunakan untuk menambahkan CA kustom (seperti yang diperlukan dalam kasus sertifikat yang ditandatangani sendiri).
5. Menguji konfigurasi TLS
Jalankan perintah cURL berikut untuk menguji penyiapan. Ganti basepath dan kunci API Anda ke dalam perintah. Contoh berikut mengasumsikan bahwa Anda berada di direktori tempat
rootca.pemberada dan bahwa proxy yang Anda buat memiliki basepath/hello:curl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"Output cURL verbose menampilkan setiap langkah handshake 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 southbound
Bagian ini menjelaskan cara menyiapkan koneksi TLS southbound (keluar) antara server Edge Microgateway dan aplikasi target backend. Contoh di bawah menggunakan sertifikat yang ditandatangani sendiri.
1. Langkah penyiapan awal
- Temukan file
openssl.cnfdi sistem Anda. Misalnya,/etc/ssl/openssl.cnf. - Buka file
opensssl.cnfuntuk mengedit. Pastikan
req_extensionsada di file konfigurasi Anda. Misalnya, Anda akan memiliki informasi yang mirip dengan berikut dalam file Anda:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentTambahkan stanza berikut ke
openssl.cnfuntuk membuat 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::1Contoh 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::1Jalankan 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.
Salin kredensial kunci dan rahasia yang ditampilkan dari
edgemicro configure. Anda akan memerlukan nilai ini untuk menjalankan penampung. Contoh:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
2. Membuat aplikasi target Node.js
cdke direktori.edgemicro.Buat skrip bash berikut. Anda dapat memberinya nama apa pun 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
Di file bash, pastikan jalur ke file
openssl.cnfsudah benar.Jalankan file bash. Anda akan diminta memasukkan informasi sertifikat. Pastikan untuk menggunakan
hellworlduntuk Nama Umum.Periksa apakah file berikut telah dibuat:
rootca.keyrootca.pemtls.keytls.csrrootca.srltls.crt
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);Buat file
package.jsondi direktori yang sama denganserver.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" } }Jalankan
npm installuntuk mendapatkan dependensi.Buat Dockerfile baru di direktori yang sama dengan
server.js, denganWORKDIRadalah 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" ]
Bangun image Docker:
docker build -t helloworld .Mulai aplikasi contoh:
docker run -P -p 9443:9443 --name helloworld helloworld
3. Membuat entity di Apigee Edge
Buat proxy yang kompatibel dengan Edge Microgateway dengan setelan ini. Untuk mengetahui informasi selengkapnya, lihat Membuat proxy API yang kompatibel dengan Edge Microgateway di Edge.
- Nama proxy:
edgemicro_local - Revisi:
1 - Basepath:
/local - Target:
https://helloworld:9443
- Nama proxy:
Buat produk API. Untuk mengetahui detailnya, lihat Membuat produk.
Buat developer. Untuk mengetahui detailnya, lihat Membuat developer.
Buat aplikasi Developer. Untuk mengetahui detailnya, lihat Membuat aplikasi developer
4. Jalankan container
Buka file konfigurasi Edge Micro di editor. Contoh:
vi $HOME/.edgemicro/myorg-test-config.yamlEdit stanza
edgemicrosebagai berikut. Perhatikan bahwa Anda membuat perubahan pada atributportdanssl: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: ...Jalankan perintah berikut untuk mengenkode file konfigurasi Edge Microgateway yang terletak di
$HOME/.edgemicrodengan base64:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_orgdanyour_envadalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config.Jangan lupa untuk menempatkan tanda petik terbalik (`) di sekitar perintah. Contoh:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
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
Jalankan perintah cURL berikut untuk menguji penyiapan. Ganti basepath yang Anda gunakan di proxy yang kompatibel dengan 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" -vAnda 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"}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
Jalankan perintah cURL berikut. Ganti basepath dan kunci API Anda seperti sebelumnya. Contoh:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -vPeriksa 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 sudah memahami cara menulis dan mengonfigurasi plugin untuk penyiapan Edge Microgateway standar. Jika tidak, lihat Mengembangkan plugin kustom.
Opsi A: Pasang direktori plugin pada volume
(Ditambahkan di v.2.5.27) Langkah-langkah untuk menambahkan plugin melalui pemasangan volume serupa dengan langkah-langkah yang diperlukan untuk menambahkan plugin kustom ke Edge Microgateway. Saat menjalankan container Docker, Anda dapat memasang direktori plugin di sistem lokal (volume) pada direktori pemasangan container, yaitu /opt/apigee/plugins.
Kemudian, Anda menentukan direktori volume lokal dalam file konfigurasi Edge Microgateway.
Langkah-langkah berikut menggambarkan cara menggunakan direktori pemasangan Docker untuk menyertakan plugin kustom.
Hentikan Edge Microgateway:
edgemicro stopBuat direktori untuk plugin kustom Anda. Misalnya, buat
$HOME/edgemicro/custom/pluginsTambahkan direktori plugin kustom ke file konfigurasi Edge Microgateway. Contoh:
plugins: dir: $HOME/edgemicro/custom/plugins sequence: - oauth - response-uppercase ````Tulis dan uji plugin Anda, sesuai dengan petunjuk di Menulis plugin sederhana. Pastikan untuk menempatkan kode plugin Anda dalam struktur direktori yang tepat. Contoh:
custom | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsonJalankan container Docker dengan perintah yang mirip dengan berikut, dengan menggunakan opsi
-vuntuk memasang direktori plugin di volume Docker. Dalam perintah contoh berikut, direktori plugin$HOME/edgemicro/custom/plugins(tempat plugin kustom berada) dipetakan ke direktori 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:latestPanggil API Anda untuk menguji plugin.
Untuk mengetahui informasi selengkapnya, lihat VOLUME [sistem file bersama].
Opsi B: Membangun plugin ke dalam container
Dalam opsi ini, Anda membangun plugin ke dalam container.
1. Mengemas plugin
Tulis dan uji plugin Anda, sesuai dengan petunjuk di Menulis plugin sederhana.
Tempatkan kode plugin Anda dalam struktur direktori yang tepat. Direktori plugin harus mengikuti struktur yang ditetapkan. Contoh berikut menunjukkan struktur yang harus Anda ikuti, dengan
response-uppercasedanrequest-headersadalah 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.jsoncdke folderplugin.Di folder
plugin, zip seluruh folderplugins:zip -r plugins.zip plugins/
2. Membuat image Docker
Selanjutnya, buat Dockerfile untuk menambahkan kode plugin Anda ke image Edge Microgateway.
- Di direktori yang sama dengan tempat file zip berada, buat file baru bernama
Dockerfile. Tambahkan kode berikut ke
Dockerfiledan 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"]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 plugin dikemas, Anda perlu menambahkannya ke file konfigurasi Edge Microgateway.
Buka file konfigurasi Edge Microgateway di editor:
$HOME/.edgemicro/org-env-config.yaml
Contoh:
vi $HOME/.edgemicro/myorg-test-config.yaml
Tambahkan direktori plugin ke file konfigurasi. Dalam contoh berikut, atribut
dirmenentukan lokasi kode plugin (yang Anda tentukan dalam Dockerfile). Anda juga harus menentukan nama direktori plugin, yang dalam contoh di bawah adalahresponse-uppercase.edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
4. Mulai microgateway
Terakhir, Anda harus memulai microgateway di container.
Jalankan perintah berikut untuk mengenkode file konfigurasi Edge Microgateway yang terletak di
$HOME/.edgemicrodengan base64:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_orgdanyour_envadalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config.Jangan lupa untuk menempatkan tanda petik terbalik (`) di sekitar perintah. Contoh:
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
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
Panggil API Anda untuk menguji plugin:
Uji apakah kode plugin dieksekusi dengan memanggil API Anda dan memverifikasi bahwa outputnya sesuai yang diharapkan:
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
Misalnya, plugin
response-uppercasedapat menampilkan respons seperti ini:curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!