Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Topik ini menjelaskan cara menjalankan Edge Microgateway dalam container Docker. Langkah-langkahnya yang dibahas dalam topik ini mengasumsikan pemahaman dasar tentang Docker, perintah Docker, dan Edge Microgateway penyiapan dan konfigurasi. Sebagai informasi selengkapnya, lihat dokumentasi untuk Docker dan Edge Microgateway.
Prasyarat
Sebelum menjalankan Edge Microgateway dalam container Docker, Anda harus melakukan hal berikut tugas:
Konfigurasi Edge Microgateway untuk organisasi/lingkungan Apigee Anda:
edgemicro configure -o your_org -e your_env -u your_username
Untuk detail selengkapnya tentang konfigurasi, lihat Bagian 1: Mengonfigurasi Edge Microgateway.
Setelah melakukan langkah-langkah konfigurasi, cari konfigurasi . Lokasi defaultnya adalah di sini:
$HOME/.edgemicro/your_org-your_env-config.yaml
dengan
your_org
danyour_env
adalah organisasinya dan lingkungan yang digunakan saat Anda menjalankan perintahedgemicro config
. Anda akan memerlukan file ini saat Anda memulai Edge Microgateway dalam container Docker.Pastikan Anda memiliki kunci dan kredensial rahasia yang dikembalikan saat Anda menjalankan Perintah
edgemicro config
. Contoh:The following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
Sebelum memulai Edge Microgateway dalam container Docker, Anda perlu membuat (atau telah membuat) entity Apigee Edge yang diperlukan untuk melakukan panggilan proxy API yang diotentikasi. Entitas ini mencakup Edge Microgateway-aware {i>proxy<i}, Produk API, Pengembang, dan Aplikasi Pengembang. Untuk petunjuk selengkapnya, lihat Buat entity di Apigee Edge.
Menjalankan Edge Micro sebagai container Docker
Download image Docker untuk Edge Microgateway:
docker pull gcr.io/apigee-microgateway/edgemicro:latest
Sebelum Anda melanjutkan ke langkah berikutnya, pastikan Anda telah melakukan semua langkah dalam bagian Prasyarat.
Jalankan perintah berikut untuk mengenkode file konfigurasi Edge Microgateway dalam base64 yang berlokasi di
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_org
danyour_env
adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config
.Ingatlah 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 "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
Publikasikan semua port yang diekspos ke host. Lihat juga Referensi Docker run. -p
Petakan satu port atau rentang port secara eksplisit. Lihat juga Referensi Docker run. -d
Jalankan dalam mode terpisah. Lihat juga Referensi Docker run. -v, -- volume
Menentukan pemasangan volume. Perhatikan bahwa jika Anda mengonfigurasi Edge Microgateway untuk menggunakan TLS di kontainer Docker, Anda harus mengekspos porta 8443 jika Anda 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
danedgemicro.pid
harus dibuat. Anda tidak dapat mengubah root nama fileedgemicro
. 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 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 tujuan pengiriman output log. 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/edgemicroUntuk memeriksa apakah container 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 dalam container Docker, penampung secara default akan mengalihkan stdout dan output error ke file yang terletak di penampung di lokasi:
${APIGEE_ROOT}/logs/edgemicro.log
.Untuk mencegah informasi log dikirim ke
edgemicro.log
, gunakan variabelLOG_CONSOLE_OUTPUT_TO_FILE
saat Anda menjalankan penampung.Tabel berikut menjelaskan perilaku output log saat Anda menggunakan
LOG_CONSOLE_OUTPUT_TO_FILE
denganto_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 penampung, Anda dapat melakukan panggilan API ke instance tersebut. 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 ditangani 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 UI Edge, navigasikan ke Aplikasi Developer yang Anda buat sebelumnya. Di halaman Developer Halaman aplikasi, tampilkan Kunci Konsumen, lalu salin. Nilai ini adalah kunci API. Anda akan menggunakan kunci ini untuk melakukan panggilan API yang diotentikasi.
Panggil API dengan header
x-api-key
seperti berikut. Kunci Konsumen memberikan nilai yang disalin dari Aplikasi Developer adalah kunci API. Secara default, Edge Microgateway Anda harus meneruskan kunci di header yang disebutx-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 membuat panggilan API terautentikasi melalui Edge Microgateway dengan kunci API dan token OAuth, lihat Bagian 4: Secure Edge Microgateway.
Menghentikan Microgateway Edge
Gunakan perintah Docker berikut untuk menghentikan Edge Microgateway:
docker stop edgemicro
Memulai ulang Microgateway Edge
Setelah menghentikan Edge Microgateway, Anda dapat memulai ulang dengan perintah Docker ini:
docker start edgemicro
Menggunakan TLS di container Docker
Bagian ini menjelaskan cara mengonfigurasi TLS untuk Edge Microgateway yang berjalan dan tiap langkah build dijalankan di container Docker. Anda dapat mengonfigurasi server Edge Microgateway agar menggunakan TLS untuk permintaan masuk (arah utara), dan Anda dapat mengonfigurasi Edge Microgateway menjadi klien TLS untuk permintaan keluar guna menargetkan endpoint (arah selatan).
Lokasi penempatan file sertifikat
Container Docker yang menjalankan Edge Microgateway memiliki direktori pemasangan di
/opt/apigee/.edgemicro
. Saat mengonfigurasi Edge Microgateway agar menggunakan sertifikat TLS, Anda dapat membuat file sertifikat yang tersedia pada titik pemasangan itu dan merujuknya di File konfigurasi Edge Microgateway. File konfigurasi ini biasanya terletak di$HOME/.edgemicro
, dan diberi namayour_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 Otoritas Sertifikat (CA) yang tidak dipercaya secara default oleh Node.js (misalnya, untuk sertifikat yang ditandatangani sendiri), pertimbangkan untuk menggunakan parameter
NODE_EXTRA_CA_CERTS
saat Anda menjalankan container.Tetapkan parameter ini ke jalur ke file yang berisi satu atau beberapa dan sertifikat tepercaya dalam format PEM. Untuk melihat cara parameter ini digunakan, lihat referensi contoh Cara mengonfigurasi TLS arah utara dan Cara mengonfigurasi TLS menuju 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 disarankan, dalam beberapa kasus, Anda mungkin ingin menonaktifkan validasi TLS untuk Edge Microgateway yang berjalan dalam container. Kemampuan untuk menonaktifkan TLS tidak dibangun di dalam container Docker Edge Microgateway secara default. Untuk mencapai untuk menjalankan tugas ini, Anda harus membuat image Docker yang disesuaikan untuk Edge Microgateway. Di Bawah adalah petunjuk umum untuk membuat image kustom dan menonaktifkan validasi TLS.
Clone atau download repositori sumber Edge Microgateway dari
https://github.com/apigee-internal/microgateway
.cd
ke direktorimicrogateway/kubernetes/docker/edgemicro
dalam direktori kode sumber.Contoh:
cd $HOME/git/microgateway/kubernetes/docker/edgemicro
Buka file
entrypoint.sh
dan ubah kode untuk menerimaNODE_TLS_REJECT_UNAUTHORIZED
variabel lingkungan. Nanti, saat menjalankan container, Anda akan menentukan nilai untuk variabel.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 menuju arah utara
Bagian ini menjelaskan cara menyiapkan koneksi TLS arah utara (masuk) di Edge Microgateway server tertentu. TLS menuju utara memungkinkan klien menggunakan HTTPS saat melakukan panggilan API ke Edge Microgateway. Contoh di bawah ini menggunakan sertifikat yang ditandatangani sendiri.
1. Langkah-langkah penyiapan intim
- Cari file
openssl.cnf
di sistem Anda. Misalnya,/etc/ssl/openssl.cnf
. - Buka file
opensssl.cnf
untuk mengedit. Pastikan
req_extensions
ada di file konfigurasi Anda. Sebagai contoh, Anda harus memiliki informasi yang serupa dengan berikut ini dalam file Anda:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Tambahkan stanza berikut ke
openssl.cnf
untuk 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::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
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 {i>Proxy<i} berbasis Edge Microgateway, Produk API, Pengembang, dan Aplikasi Pengembang. Selain itu, Anda harus sudah menjalankan perintah
edgemicro configure
dan menerima kunci dan rahasia.
2. Membuat sertifikat yang ditandatangani sendiri
Selanjutnya, buat sertifikat dan kunci yang Anda perlukan untuk membuat TLS:
cd
ke direktori$HOME/.edgemicro
.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
Di file bash, pastikan jalur ke file
openssl.cnf
sudah benar.Jalankan file bash. Anda akan diminta untuk memberikan informasi sertifikat. Pastikan untuk menggunakan
localhost
untuk Nama Umum.Periksa apakah file berikut telah dibuat:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.crt
3. Mengedit file konfigurasi Edge Microgateway
Buka file konfigurasi Edge Micro di editor. Contoh:
vi $HOME/.edgemicro/myorg-test-config.yaml
Edit stanza
edgemicro
sebagai berikut. Perhatikan bahwa Anda membuat perubahan ke atributport
danssl
: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 dalam base64 yang berlokasi di
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_org
danyour_env
adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro 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
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; berbeda dari model dasar yang dijelaskan dalam Menjalankan Edge Micro sebagai container Docker.
port
disetel ke8443
.- Pemasangan volume digunakan untuk memasang file kunci dan sertifikat.
- Variabel
NODE_EXTRA_CA_CERTS
digunakan untuk menambahkan CA kustom (sesuai kebutuhan dalam kasus sertifikat yang ditandatangani sendiri).
5. Menguji konfigurasi TLS
Jalankan perintah cURL berikut untuk menguji penyiapan. Pengganti basepath dan kunci API Anda ke dalam perintah. Contoh berikut mengasumsikan bahwa Anda berada di direktori tempat
rootca.pem
ditemukan dan proxy yang Anda buat memiliki jalur dasar/hello
:curl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
Output cURL panjang 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 menuju selatan
Bagian ini menjelaskan cara menyiapkan koneksi TLS arah selatan (keluar) antara server Edge Microgateway dan aplikasi target backend. Contoh di bawah ini menggunakan yang ditandatangani sendiri.
1. Langkah penyiapan awal
- Cari file
openssl.cnf
di sistem Anda. Misalnya,/etc/ssl/openssl.cnf
. - Buka file
opensssl.cnf
untuk mengedit. Pastikan
req_extensions
ada di file konfigurasi Anda. Sebagai contoh, Anda harus memiliki informasi yang serupa dengan berikut ini dalam file Anda:[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment
Tambahkan stanza berikut ke
openssl.cnf
untuk 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::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
Jalankan perintah
edgemicro configure
:edgemicro configure -o your_org -e your_env -u your_username
Untuk detail selengkapnya tentang konfigurasi, lihat Bagian 1: Mengonfigurasi Edge Microgateway.
Salin kunci dan kredensial rahasia yang ditampilkan dari
edgemicro configure
. Anda akan memerlukan 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
cd
ke direktori.edgemicro
.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
Di file bash, pastikan jalur ke file
openssl.cnf
sudah benar.Jalankan file bash. Anda akan diminta untuk memberikan informasi sertifikat. Pastikan untuk menggunakan
hellworld
untuk Nama Umum.Periksa apakah file berikut telah dibuat:
rootca.key
rootca.pem
tls.key
tls.csr
rootca.srl
tls.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.json
di 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 install
untuk mendapatkan dependensi.Buat Dockerfile baru di direktori yang sama dengan
server.js
, tempatWORKDIR
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" ]
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 berbasis Edge Microgateway dengan setelan ini. Untuk informasi selengkapnya, lihat Membuat proxy Edge Microgateway-aware API di Edge.
- Nama proxy:
edgemicro_local
- Revisi:
1
- Jalur dasar:
/local
- Target:
https://helloworld:9443
- Nama proxy:
Buat produk API. Untuk mengetahui detailnya, lihat Membuat produk.
Membuat developer. Untuk mengetahui detailnya, lihat Membuat developer.
Membuat 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.yaml
Edit stanza
edgemicro
sebagai berikut. Perhatikan bahwa Anda membuat perubahan ke atributport
danssl
: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 dalam
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_org
danyour_env
adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config
.Ingatlah 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. Pengganti {i>basepath<i} yang Anda gunakan di {i> microgateway-aware proxy<i} 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"}
Jalankan ulang 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. Pengganti basepath dan kunci API Anda seperti sebelumnya. Contoh:
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
Periksa outputnya. 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 custom plugin. Plugin kustom memungkinkan Anda berinteraksi secara terprogram dengan permintaan dan respons yang mengalir melalui microgateway.
Anda memiliki dua opsi untuk men-deploy plugin ke Edge Microgateway yang berjalan dalam container docker:
Selanjutnya, bagian ini mengasumsikan membuat Anda terbiasa menulis dan mengonfigurasi plugin untuk pengaturan Edge Microgateway standar. Jika tidak, lihat Mengembangkan plugin kustom.
Opsi A: Memasang direktori plugin pada volume
(Ditambahkan dalam v.2.5.27) Langkah-langkah untuk menambahkan plugin melalui pemasangan volume adalah mirip dengan langkah-langkah yang diperlukan untuk menambahkan plugin kustom apa pun ke Edge Microgateway. Kapan Anda menjalankan kontainer Docker, Anda dapat memasang direktori plugin (volume) di titik pemasangan container, yaitu
/opt/apigee/plugins
. Kemudian, Anda menentukan direktori volume lokal di file konfigurasi Edge Microgateway.Langkah-langkah berikut mengilustrasikan cara menggunakan titik pemasangan Docker untuk menyertakan plugin.
Hentikan Microgateway Edge:
edgemicro stop
Buat direktori untuk plugin kustom Anda. Misalnya, buat
$HOME/edgemicro/custom/plugins
Tambahkan 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 dalam Menulis plugin sederhana. Pastikan untuk tempatkan kode plugin Anda di struktur direktori yang tepat. Contoh:
custom | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
Jalankan container Docker dengan perintah yang mirip dengan perintah berikut ini, gunakan opsi
-v
untuk memasang direktori plugin pada volume Docker. Di kolom perintah contoh 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
Panggil API Anda untuk menguji plugin.
Untuk informasi selengkapnya, lihat VOLUME [sistem file bersama].
Opsi B: Membangun plugin ke dalam container
Dalam opsi ini, Anda membangun plugin ke dalam container.
1. Kemas plugin Anda
Tulis dan uji plugin Anda, sesuai dengan petunjuk dalam Menulis plugin sederhana.
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
danrequest-headers
adalah nama folder yang berisi kode plugin khusus (nama-nama ini hanya contoh, nama folder Anda mungkin berbeda):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
ke 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 tempat file zip berada, buat file baru bernama
Dockerfile
. 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"]
Buat image Docker Edge Microgateway baru dengan plugin Anda:
docker build -t image-name .
Contoh:
docker build -t edgemicroplugins .
3. Mengupdate konfigurasi Edge Microgateway
Setelah plugin dikemas, Anda perlu menambahkannya ke Edge Microgateway file konfigurasi Anda.
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. Pada contoh berikut Atribut
dir
menentukan lokasi kode plugin (yang Anda tentukan di Dockerfile). Anda juga harus menentukan nama direktori plugin, yang dalam contoh di bawah ini adalahresponse-uppercase
.edgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
4. Mulai microgateway
Terakhir, Anda harus memulai microgateway dalam container.
Jalankan perintah berikut untuk mengenkode file konfigurasi Edge Microgateway dalam base64 yang berlokasi di
$HOME/.edgemicro
:export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
dengan
your_org
danyour_env
adalah organisasi dan lingkungan yang Anda gunakan saat menjalankan perintahedgemicro config
.Ingatlah 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 dijalankan dengan memanggil API Anda dan memverifikasi bahwa output-nya seperti 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!