Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Edge Microgateway 3.1.5 ve sonraki sürümler
Bu konuda, Edge Microgateway'in nasıl yönetileceği ve yapılandırılacağı açıklanmaktadır.
İnternet bağlantınız varsa Edge Microgateway'i yükseltme
Bu bölümde, mevcut bir Edge Microgateway kurulumunun nasıl yükseltileceği açıklanmaktadır. İnternet bağlantısı olmadan çalışıyorsanız Edge Microgateway'i internet bağlantısı olmadan yükleyebilir miyim? başlıklı makaleyi inceleyin.
Apigee, üretim ortamınızı yükseltmeden önce mevcut yapılandırmanızı yeni sürümle test etmenizi önerir.
- Edge Microgateway'in en yeni sürümüne yükseltmek için aşağıdaki
npmkomutunu yürütün:npm upgrade edgemicro -g
Edge Microgateway'in belirli bir sürümüne yükseltmek için yükseltme komutunda sürüm numarasını belirtmeniz gerekir. Sürüm numarasını belirtmezseniz en yeni sürüm yüklenir. Örneğin, 3.1.0 sürümüne yükseltmek için aşağıdaki komutu kullanın:
npm upgrade edgemicro@3.1.0 -g
- Sürüm numarasını kontrol edin. Örneğin, 3.1.0 sürümünü yüklediyseniz:
edgemicro --version current nodejs version is v12.5.0 current edgemicro version is 3.1.0 - Son olarak, edgemicro-auth proxy'sinin en yeni sürümüne geçin:
edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME
Yapılandırma değişiklikleri yapma
Bilmeniz gereken yapılandırma dosyaları şunlardır:
- Varsayılan sistem yapılandırma dosyası
- Yeni başlatılan bir Edge Microgateway örneği için varsayılan yapılandırma dosyası
- Çalışan örnekler için dinamik yapılandırma dosyası
Bu bölümde, söz konusu dosyalar ve bunları değiştirme hakkında bilmeniz gerekenler ele alınmaktadır.
Varsayılan sistem yapılandırma dosyası
Edge Microgateway'i yüklediğinizde varsayılan bir sistem yapılandırma dosyası şuraya yerleştirilir:
prefix/lib/node_modules/edgemicro/config/default.yaml
Burada prefix, npm ön ek dizinidir. Bu dizini bulamıyorsanız Edge Microgateway nerede yüklü? başlıklı makaleyi inceleyin.
Sistem yapılandırma dosyasını değiştirirseniz Edge Microgateway'i yeniden başlatmanız, yeniden yapılandırmanız ve yeniden başlatmanız gerekir:
edgemicro initedgemicro configure [params]edgemicro start [params]
Yeni başlatılan Edge Microgateway örnekleri için varsayılan yapılandırma dosyası
edgemicro init komutunu çalıştırdığınızda sistem yapılandırma dosyası (yukarıda açıklanmıştır), default.yaml, ~/.edgemicro dizinine yerleştirilir.
~/.edgemicro içindeki yapılandırma dosyasını değiştirirseniz Edge Microgateway'i yeniden yapılandırmanız ve yeniden başlatmanız gerekir:
edgemicro stopedgemicro configure [params]edgemicro start [params]
Çalışan örnekler için dinamik yapılandırma dosyası
edgemicro configure [params] komutunu çalıştırdığınızda ~/.edgemicro dizininde dinamik bir yapılandırma dosyası oluşturulur. Dosya şu kalıba göre adlandırılır: org-env-config.yaml. Burada org ve env, Apigee Edge kuruluşunuzun ve ortamınızın adlarıdır. Bu dosyayı kullanarak yapılandırma değişiklikleri yapabilir ve ardından sıfır kesinti süresiyle yeniden yükleyebilirsiniz. Örneğin, bir eklenti ekleyip yapılandırırsanız aşağıda açıklandığı gibi herhangi bir kesinti olmadan yapılandırmayı yeniden yükleyebilirsiniz.
Edge Microgateway çalışıyorsa (sıfır kesinti süresi seçeneği):
- Edge Microgateway yapılandırmasını yeniden yükleyin:
edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET
Burada:
- $ORG, Edge kuruluşunuzun adıdır (kuruluş yöneticisi olmanız gerekir).
- $ENV, kuruluşunuzdaki bir ortamdır ("test" veya "prod" gibi).
- $KEY, daha önce configure komutu tarafından döndürülen anahtardır.
- $SECRET, daha önce configure komutu tarafından döndürülen anahtardır.
Örneğin:
edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \ -s 05c14356e42ed1...4e34ab0cc824
Edge Microgateway durdurulursa:
- Edge Microgateway'i yeniden başlatın:
edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Burada:
- $ORG, Edge kuruluşunuzun adıdır (kuruluş yöneticisi olmanız gerekir).
- $ENV, kuruluşunuzdaki bir ortamdır ("test" veya "prod" gibi).
- $KEY, daha önce configure komutu tarafından döndürülen anahtardır.
- $SECRET, daha önce configure komutu tarafından döndürülen anahtardır.
Örneğin:
edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \ -s 05c1435...e34ab0cc824
Aşağıda bir yapılandırma dosyası örneği verilmiştir. Yapılandırma dosyası ayarları hakkında ayrıntılı bilgi için Edge Microgateway yapılandırma referansı başlıklı makaleyi inceleyin.
edge_config: bootstrap: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey' managementUri: 'https://api.enterprise.apigee.com' vaultName: microgateway authUri: 'https://%s-%s.apigee.net/edgemicro-auth' baseUri: >- https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s bootstrapMessage: Please copy the following property to the edge micro agent config keySecretMessage: The following credentials are required to start edge micro products: 'https://docs-test.apigee.net/edgemicro-auth/products' edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true oauth: allowNoAuthorization: false allowInvalidAuthorization: false verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey' analytics: uri: >- https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test
Ortam değişkenlerini ayarlama
Edge kuruluşunuz ve ortamınız için değerler gerektiren komut satırı arayüzü komutları ile Edge Microgateway'i başlatmak için gereken anahtar ve gizli anahtar şu ortam değişkenlerinde depolanabilir:
EDGEMICRO_ORGEDGEMICRO_ENVEDGEMICRO_KEYEDGEMICRO_SECRET
Bu değişkenleri ayarlamak isteğe bağlıdır. Bunları ayarlarsanız Edge Microgateway'i yapılandırmak ve başlatmak için komut satırı arayüzünü (CLI) kullanırken değerlerini belirtmeniz gerekmez.
Edge Microgateway sunucusunda SSL'yi yapılandırma
Apigee Edge Microgateway'de TLS'yi yapılandırma hakkında bilgi edinmek için aşağıdaki videoları izleyin:
| Video | Açıklama |
|---|---|
| Tek yönlü kuzey yönlü TLS'yi yapılandırma | Apigee Edge Microgateway'de TLS'yi yapılandırma hakkında bilgi edinin. Bu videoda TLS'ye ve önemine genel bir bakış sunulmakta, Edge Microgateway'de TLS tanıtılmakta ve Kuzey Yönlü Tek Yönlü TLS'nin nasıl yapılandırılacağı gösterilmektedir. |
| Çift yönlü kuzey yönlü TLS'yi yapılandırma | Bu, Apigee Edge Microgateway'de TLS'yi yapılandırmayla ilgili ikinci videodur. Bu videoda, kuzey yönlü çift yönlü TLS'nin nasıl yapılandırılacağı açıklanmaktadır. |
| Tek yönlü ve çift yönlü Southbound TLS'yi yapılandırma | Apigee Edge Microgateway'de TLS yapılandırmasıyla ilgili bu üçüncü videoda, güney yönlü tek yönlü ve çift yönlü TLS'nin nasıl yapılandırılacağı açıklanmaktadır. |
Microgateway sunucusunu SSL kullanacak şekilde yapılandırabilirsiniz. Örneğin, SSL yapılandırıldığında Edge Microgateway üzerinden "https" protokolüyle API'leri şu şekilde çağırabilirsiniz:
https://localhost:8000/myapi
Microgateway sunucusunda SSL'yi yapılandırmak için aşağıdaki adımları uygulayın:
- openssl yardımcı programını veya tercih ettiğiniz başka bir yöntemi kullanarak SSL sertifikası ve anahtarı oluşturun ya da alın.
- Edge Microgateway yapılandırma dosyasına
edgemicro:sslözelliğini ekleyin. Seçeneklerin tam listesi için aşağıdaki tabloya bakın. Örneğin:
edgemicro: ssl: key: <absolute path to the SSL key file> cert: <absolute path to the SSL cert file> passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2 requestCert: true
- Edge Microgateway'i yeniden başlatın. Düzenlediğiniz yapılandırma dosyasına (varsayılan dosya veya çalışma zamanı yapılandırma dosyası) bağlı olarak Yapılandırma değişiklikleri yapma bölümünde açıklanan adımları uygulayın.
Aşağıda, yapılandırma dosyasının SSL yapılandırılmış edgemicro bölümüne dair bir örnek verilmiştir:
edgemicro: port: 8000 max_connections: 1000 max_connections_hard: 5000 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - oauth ssl: key: /MyHome/SSL/em-ssl-keys/server.key cert: /MyHome/SSL/em-ssl-keys/server.crt passphrase: admin123 #option added in v2.2.2 rejectUnauthorized: true #option added in v2.2.2
Desteklenen tüm sunucu seçeneklerinin listesi aşağıda verilmiştir:
| Seçenek | Açıklama |
|---|---|
key |
ca.key dosyasının yolu (PEM biçiminde). |
cert |
ca.cert dosyasının yolu (PEM biçiminde). |
pfx |
İstemcinin özel anahtarını, sertifikasını ve CA sertifikalarını PFX biçiminde içeren bir pfx dosyasının yolu. |
passphrase |
Özel anahtar veya PFX için parola dizesi. |
ca |
PEM biçiminde güvenilir sertifikaların listesini içeren dosyanın yolu. |
ciphers |
Kullanılacak şifreleri açıklayan ve ":" ile ayrılmış bir dize. |
rejectUnauthorized |
Doğru ise sunucu sertifikası, sağlanan CA'lar listesine göre doğrulanır. Doğrulama başarısız olursa bir hata döndürülür. |
secureProtocol |
Kullanılacak SSL yöntemi. Örneğin, SSL'yi 3. sürüme zorlamak için SSLv3_method. |
servername |
SNI (Sunucu Adı Göstergesi) TLS uzantısının sunucu adı. |
requestCert |
2 yönlü SSL için true; 1 yönlü SSL için false |
İstemci SSL/TLS seçeneklerini kullanma
Edge Microgateway'i, hedef uç noktalara bağlanırken TLS veya SSL istemcisi olacak şekilde yapılandırabilirsiniz. Microgateway yapılandırma dosyasında, SSL/TLS seçeneklerini ayarlamak için targets öğesini kullanın.
Bu örnekte, tüm ana makinelere uygulanacak ayarlar verilmiştir:
edgemicro:
...
targets:
ssl:
client:
key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueBu örnekte, ayarlar yalnızca belirtilen ana makineye uygulanır:
edgemicro:
...
targets:
- host: 'myserver.example.com'
ssl:
client:
key: /Users/myname/twowayssl/ssl/client.key
cert: /Users/myname/twowayssl/ssl/ca.crt
passphrase: admin123
rejectUnauthorized: trueTLS için bir örnek:
edgemicro:
...
targets:
- host: 'myserver.example.com'
tls:
client:
pfx: /Users/myname/twowayssl/ssl/client.pfx
passphrase: admin123
rejectUnauthorized: trueDesteklenen tüm istemci seçeneklerinin listesi aşağıda verilmiştir:
| Seçenek | Açıklama |
|---|---|
pfx |
İstemcinin özel anahtarını, sertifikasını ve CA sertifikalarını PFX biçiminde içeren bir pfx dosyasının yolu. |
key |
ca.key dosyasının yolu (PEM biçiminde). |
passphrase |
Özel anahtar veya PFX için parola dizesi. |
cert |
ca.cert dosyasının yolu (PEM biçiminde). |
ca |
PEM biçiminde güvenilir sertifikaların listesini içeren dosyanın yolu. |
ciphers |
Kullanılacak şifreleri açıklayan ve ":" ile ayrılmış bir dize. |
rejectUnauthorized |
Doğru ise sunucu sertifikası, sağlanan CA'lar listesine göre doğrulanır. Doğrulama başarısız olursa bir hata döndürülür. |
secureProtocol |
Kullanılacak SSL yöntemi. Örneğin, SSL'yi 3. sürüme zorlamak için SSLv3_method. |
servername |
SNI (Sunucu Adı Göstergesi) TLS uzantısının sunucu adı. |
edgemicro-auth proxy'sini özelleştirme
Edge Microgateway, OAuth2 kimlik doğrulaması için varsayılan olarak Apigee Edge'de dağıtılan bir proxy kullanır.
Bu proxy, edgemicro configure komutunu ilk kez çalıştırdığınızda dağıtılır. JSON Web Jetonu'na (JWT) özel hak talepleri için destek eklemek, jetonun geçerlilik süresini yapılandırmak ve yenileme jetonları oluşturmak için bu proxy'nin varsayılan yapılandırmasını değiştirebilirsiniz. Ayrıntılar için GitHub'daki edgemicro-auth sayfasına bakın.
Özel bir kimlik doğrulama hizmeti kullanma
Edge Microgateway, OAuth2 kimlik doğrulaması için varsayılan olarak Apigee Edge'de dağıtılan bir proxy kullanır.
Bu proxy, edgemicro configure komutunu ilk kez çalıştırdığınızda dağıtılır. Varsayılan olarak bu proxy'nin URL'si, Edge Microgateway yapılandırma dosyasında aşağıdaki gibi belirtilir:
authUri: https://myorg-myenv.apigee.net/edgemicro-auth
Kimlik doğrulama için kendi özel hizmetinizi kullanmak istiyorsanız yapılandırma dosyasındaki authUri değerini hizmetinizi işaret edecek şekilde değiştirin. Örneğin, kimlik doğrulamak için LDAP kullanan bir hizmetiniz olabilir.
Günlük dosyalarını yönetme
Edge Microgateway, her istek ve yanıtla ilgili bilgileri günlüğe kaydeder. Günlük dosyaları, hata ayıklama ve sorun giderme için yararlı bilgiler sağlar.
Günlük dosyalarının depolandığı yer
Günlük dosyaları varsayılan olarak /var/tmp dizininde depolanır.
Varsayılan günlük dosyası dizinini değiştirme
Günlük dosyalarının depolandığı dizin, Edge Microgateway yapılandırma dosyasında belirtilir. Yapılandırma değişiklikleri yapma başlıklı makaleyi de inceleyin.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Farklı bir günlük dosyası dizini belirtmek için dir değerini değiştirin.
Günlükleri konsola gönderme
Günlük bilgilerinin günlük dosyası yerine standart çıkışa gönderilmesi için günlük kaydını yapılandırabilirsiniz. to_console işaretini aşağıdaki gibi "true" olarak ayarlayın:
edgemicro:
logging:
to_console: trueBu ayar etkinleştirildiğinde günlükler standart çıkışa gönderilir. Şu anda günlükleri hem stdout'a hem de bir günlük dosyasına gönderemezsiniz.
Günlük kaydı düzeyini ayarlama
Şu günlük düzeylerini ayarlayabilirsiniz: info, warn ve error. Bilgi düzeyi önerilir. Tüm API isteklerini ve yanıtlarını günlüğe kaydeder. Varsayılan seçenektir.
Değişiklik günlüğü aralıklarını değiştirme
Bu aralıkları Edge Microgateway yapılandırma dosyasında yapılandırabilirsiniz. Yapılandırma değişiklikleri yapma başlıklı makaleyi de inceleyin.
Yapılandırılabilir özellikler şunlardır:
- stats_log_interval: (varsayılan: 60) İstatistik kaydının API günlük dosyasına yazıldığı saniye cinsinden aralık.
- rotate_interval: (varsayılan: 24) Günlük dosyalarının döndürüldüğü saat cinsinden aralık. Örneğin:
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 rotate_interval: 24
Günlük dosyası bakımıyla ilgili iyi uygulamalar
Günlük dosyası verileri zaman içinde biriktiğinden Apigee, aşağıdaki uygulamaları benimsemenizi önerir:
- Günlük dosyaları oldukça büyük olabileceğinden günlük dosyası dizininde yeterli alan bulunduğundan emin olun. Günlük dosyalarının depolandığı yer ve Varsayılan günlük dosyası dizini nasıl değiştirilir? başlıklı bölümleri inceleyin.
- Günlük dosyalarını haftada en az bir kez silin veya ayrı bir arşiv dizinine taşıyın.
- Politikanız günlükleri silmekse eski günlükleri kaldırmak (temizlemek) için
edgemicro log -cKSA komutunu kullanabilirsiniz.
Günlük dosyası adlandırma kuralı
Her Edge Microgateway örneği üç tür günlük dosyası oluşturur:
- api: Edge Microgateway üzerinden geçen tüm istekleri ve yanıtları günlüğe kaydeder. API sayaçları (istatistikler) ve hatalar da bu dosyaya kaydedilir.
- err: stderr'e gönderilen her şeyi günlüğe kaydeder.
- out: stdout'a gönderilen her şeyi günlüğe kaydeder.
Adlandırma kuralı şu şekildedir:
edgemicro-<Host Name>-<Instance ID>-<Log Type>.log
Örneğin:
edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log
Günlük dosyası içerikleri hakkında
Eklenme tarihi: v2.3.3
Varsayılan olarak, günlük kaydı hizmeti indirilen proxy'lerin, ürünlerin ve JSON Web Jetonu'nun (JWT) JSON'sini atlar. Bu nesneleri günlük dosyalarına çıkarmak istiyorsanız Edge Microgateway'i başlattığınızda DEBUG=* değerini ayarlayın. Örneğin:
DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456
"api" günlük dosyasının içeriği
"api" günlük dosyası, Edge Microgateway üzerinden istek ve yanıt akışı hakkında ayrıntılı bilgiler içerir. "api" günlük dosyaları şu şekilde adlandırılır:
edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log
Edge Microgateway'e yapılan her istek için "api" günlük dosyasında dört etkinlik yakalanır:
- Müşteriden gelen istek
- Hedefe giden istek yapıldı
- Hedefin yanıtı
- İstemciye giden yanıt
Bu ayrı girişlerin her biri, günlük dosyalarının daha kompakt hale getirilmesine yardımcı olmak için kısa bir gösterimle temsil edilir. Aşağıda, dört etkinliğin her birini temsil eden dört örnek giriş verilmiştir. Günlük dosyasında aşağıdaki gibi görünürler (satır numaraları yalnızca belgede referans amaçlıdır, günlük dosyasında görünmez).
(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0 (2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0 (3) 1436403888672 info tres s=200, d=7, i=0 (4) 1436403888676 info res s=200, d=11, i=0
Bunları tek tek inceleyelim:
1. Müşteriden gelen istek örneği:
1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
- 1436403888651: Unix tarih damgası
- info: Bağlama bağlıdır. Günlük düzeyine bağlı olarak bilgi, uyarı veya hata olabilir. İstatistik kaydı için stats, uyarılar için warn veya hatalar için error olabilir.
- req: Etkinliği tanımlar. Bu durumda, istemciden isteyin.
- m: İstekte kullanılan HTTP fiili.
- u: URL'nin temel yoldan sonraki kısmı.
- h: Edge Microgateway'in dinlediği ana makine ve bağlantı noktası numarası.
- r: İstemci isteğinin geldiği uzak ana makine ve bağlantı noktası.
- i: İstek kimliği. Dört etkinlik girişinin tümü bu kimliği paylaşır. Her isteğe benzersiz bir istek kimliği atanır. Günlük kayıtlarını istek kimliğine göre ilişkilendirmek, hedefin gecikme süresi hakkında değerli bilgiler sağlayabilir.
- d: İsteğin Edge Microgateway tarafından alınmasından bu yana geçen süre (milisaniye cinsinden). Yukarıdaki örnekte, hedefin 0 numaralı istek için yanıtı 7 milisaniye sonra alındı (3. satır) ve yanıt, istemciye 4 milisaniye daha sonra gönderildi (4. satır). Diğer bir deyişle, toplam istek gecikmesi 11 milisaniyedir. Bunun 7 milisaniyesi hedef, 4 milisaniyesi ise Edge Microgateway tarafından harcanmıştır.
2. Hedefe gönderilen giden istek örneği:
1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
- 1436403888651: Unix tarih damgası
- info: Bağlama bağlıdır. Günlük düzeyine bağlı olarak bilgi, uyarı veya hata olabilir. İstatistik kaydı için stats, uyarılar için warn veya hatalar için error olabilir.
- treq: Etkinliği tanımlar. Bu durumda hedef istek.
- m: Hedef istekte kullanılan HTTP fiili.
- u: URL'nin temel yoldan sonraki kısmı.
- h: Arka uç hedefinin ana makine ve bağlantı noktası numarası.
- i: Günlük girişinin kimliği. Dört etkinlik girişinin tümü bu kimliği paylaşır.
3. Hedef tarafından gönderilen yanıt örneği
1436403888672 info tres s=200, d=7, i=0
1436403888651: Unix tarih damgası
- info: Bağlama bağlıdır. Günlük düzeyine bağlı olarak bilgi, uyarı veya hata olabilir. İstatistik kaydı için stats, uyarılar için warn veya hatalar için error olabilir.
- tres: Etkinliği tanımlar. Bu durumda hedef yanıt.
- s: HTTP yanıt durumu.
- d: Milisaniye cinsinden süre. Hedefin API çağrısı için harcadığı süre.
- i: Günlük girişinin kimliği. Dört etkinlik girişinin tümü bu kimliği paylaşır.
4. İstemciye gönderilen yanıt örneği
1436403888676 info res s=200, d=11, i=0
1436403888651: Unix tarih damgası
- info: Bağlama bağlıdır. Günlük düzeyine bağlı olarak bilgi, uyarı veya hata olabilir. İstatistik kaydı için stats, uyarılar için warn veya hatalar için error olabilir.
- res: Etkinliği tanımlar. Bu durumda istemciye yanıt verilir.
- s: HTTP yanıt durumu.
- d: Milisaniye cinsinden süre. Bu, hedef API'nin harcadığı süre ve Edge Microgateway'in harcadığı süre dahil olmak üzere API çağrısının harcadığı toplam süredir.
- i: Günlük girişinin kimliği. Dört etkinlik girişinin tümü bu kimliği paylaşır.
Günlük dosyası programı
Günlük dosyaları, rotate_interval yapılandırma özelliği tarafından belirtilen aralıkta döndürülür. Rotasyon aralığı sona erene kadar aynı günlük dosyasına girişler eklenmeye devam eder. Ancak Edge Microgateway her yeniden başlatıldığında yeni bir UID alır ve bu UID ile yeni bir günlük dosyası grubu oluşturur. Günlük dosyası bakımıyla ilgili en iyi uygulamalar başlıklı makaleyi de inceleyin.
Hata mesajları
Bazı günlük girişlerinde hata mesajları bulunur. Hataların nerede ve neden oluştuğunu belirlemek için Edge Microgateway hata referansı'na bakın.
Edge Microgateway yapılandırma referansı
Yapılandırma dosyasının konumu
Bu bölümde açıklanan yapılandırma özellikleri, Edge Microgateway yapılandırma dosyasında bulunur. Yapılandırma değişiklikleri yapma başlıklı makaleyi de inceleyin.
edge_config özellikleri
Bu ayarlar, Edge Microgateway örneği ile Apigee Edge arasındaki etkileşimi yapılandırmak için kullanılır.
- bootstrap: (varsayılan: yok) Apigee Edge'de çalışan Edge Microgateway'e özel bir hizmeti işaret eden URL. Edge Microgateway, Apigee Edge ile iletişim kurmak için bu hizmeti kullanır. Bu URL, ortak/özel anahtar çiftini oluşturma komutunu çalıştırdığınızda döndürülür:
edgemicro genkeys. Ayrıntılar için Edge Microgateway'i kurma ve yapılandırma başlıklı makaleyi inceleyin. - jwt_public_key: (varsayılan: yok) Apigee Edge'de dağıtılan Edge Microgateway proxy'sine işaret eden bir URL. Bu proxy, istemcilere imzalı erişim jetonları vermek için kimlik doğrulama uç noktası olarak kullanılır. Bu URL, proxy'yi dağıtma komutunu (edgemicro configure) çalıştırdığınızda döndürülür. Ayrıntılar için Edge Microgateway'i kurma ve yapılandırma başlıklı makaleyi inceleyin.
- quotaUri: Kotaları kuruluşunuzda dağıtılan
edgemicro-authproxy'si aracılığıyla yönetmek istiyorsanız bu yapılandırma özelliğini ayarlayın. Bu özellik ayarlanmazsa kota uç noktası varsayılan olarak dahili Edge Microgateway uç noktası olur.edge_config: quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
edgemicro özellikleri
Bu ayarlar, Edge Microgateway işlemini yapılandırır.
- port: (varsayılan: 8000) Edge Microgateway işleminin dinlediği bağlantı noktası numarası.
- max_connections: (varsayılan: -1) Edge Microgateway'in alabileceği maksimum eşzamanlı gelen bağlantı sayısını belirtir. Bu sayı aşılırsa aşağıdaki durum döndürülür:
res.statusCode = 429; // Too many requests
- max_connections_hard: (varsayılan: -1) Edge Microgateway'in bağlantıyı kapatmadan önce alabileceği maksimum eşzamanlı istek sayısı. Bu ayar, hizmet reddi saldırılarını engellemek için tasarlanmıştır. Genellikle max_connections değerinden daha büyük bir sayıya ayarlayın.
-
günlüğe kaydetme:
-
level: (varsayılan: error)
- info: Bir Edge Microgateway örneğinden geçen tüm istekleri ve yanıtları günlüğe kaydeder.
- warn: Yalnızca uyarı mesajlarını günlüğe kaydeder.
- error: Yalnızca hata mesajlarını günlüğe kaydeder.
- dir: (varsayılan: /var/tmp) Günlük dosyalarının depolandığı dizin.
- stats_log_interval: (varsayılan: 60) İstatistik kaydının API günlük dosyasına yazıldığı saniye cinsinden aralık.
- rotate_interval: (varsayılan: 24) Günlük dosyalarının döndürüldüğü saat cinsinden aralık.
-
level: (varsayılan: error)
- Eklentiler: Eklentiler, Edge Microgateway'e işlevsellik ekler. Eklenti geliştirme hakkında ayrıntılı bilgi için Özel eklentiler geliştirme başlıklı makaleyi inceleyin.
- dir: ./gateway dizininden ./plugins dizinine giden göreli yol veya mutlak yol.
- sequence: Edge Microgateway örneğinize eklenecek eklenti modüllerinin listesi. Modüller burada belirtilen sırayla yürütülür.
-
debug: Edge Microgateway işlemine uzaktan hata ayıklama ekler.
- port: Dinlenecek bağlantı noktası numarası. Örneğin, IDE hata ayıklayıcınızı bu bağlantı noktasını dinleyecek şekilde ayarlayın.
- args: Hata ayıklama işleminin bağımsız değişkenleri. Örneğin:
args --nolazy
- config_change_poll_interval: (varsayılan: 600 saniye) Edge Microgateway, düzenli olarak yeni bir yapılandırma yükler ve herhangi bir değişiklik olursa yeniden yükleme işlemi gerçekleştirir. Sorgulama, Edge'de yapılan değişiklikleri (ürünlerde, mikro ağ geçidi kullanan proxy'lerde vb. yapılan değişiklikler) ve yerel yapılandırma dosyasında yapılan değişiklikleri alır.
- disable_config_poll_interval: (varsayılan: false) Otomatik değişiklik yoklamasını devre dışı bırakmak için true olarak ayarlayın.
- request_timeout: Hedef istekler için zaman aşımı süresi belirler. Zaman aşımı saniye cinsinden ayarlanır. Zaman aşımı gerçekleşirse Edge Microgateway, 504 durum koduyla yanıt verir. (2.4.x sürümünde eklendi)
- keep_alive_timeout: Bu özellik, Edge Microgateway zaman aşımını (milisaniye cinsinden) ayarlamanıza olanak tanır. (Varsayılan: 5 saniye) (3.0.6 sürümünde eklendi)
- headers_timeout: Bu özellik, HTTP ayrıştırıcısının HTTP üstbilgilerinin tamamını almak için bekleyeceği süreyi (milisaniye cinsinden) sınırlandırır.
Örneğin:
edgemicro: keep_alive_timeout: 6000 headers_timeout: 12000
Dahili olarak parametre, isteklerde Node.js
Server.headersTimeoutözelliğini ayarlar. (Varsayılan:edgemicro.keep_alive_timeoutile ayarlanan süreden 5 saniye daha uzun. Bu varsayılan ayar, yük dengeleyicilerin veya proxy'lerin bağlantıyı yanlışlıkla kesmesini önler.) (3.1.1 sürümünde eklendi) - noRuleMatchAction: (Dize)
accesscontroleklentisinde belirtilen eşleşme kuralı çözümlenmezse (eşleşmezse) yapılacak işlem (erişime izin verme veya erişimi reddetme). Geçerli değerler:ALLOWveyaDENYVarsayılan:ALLOW(Eklendi: v3.1.7) - enableAnalytics: (varsayılan: true) Analytics eklentisinin yüklenmesini önlemek için özelliği false olarak ayarlayın. Bu durumda, Apigee Edge analizine çağrı yapılmaz. true olarak ayarlanırsa veya bu özellik sağlanmazsa Analytics eklentisi her zamanki gibi çalışır. Ayrıntılar için edgemicro özellikleri bölümüne bakın. (3.1.8 sürümüne eklendi).
Örnek:
edgemicro enableAnalytics=false|true
headers özellikleri
Bu ayarlar, belirli HTTP üstbilgilerinin nasıl ele alınacağını yapılandırır.
- x-forwarded-for: (varsayılan: true) x-forwarded-for başlıklarının hedefe iletilmesini önlemek için false olarak ayarlayın. İstekte bir x-forwarded-for üstbilgisi varsa değerinin Edge Analytics'te client-ip değerine ayarlanacağını unutmayın.
- x-forwarded-host: (varsayılan: true) x-forwarded-host başlıklarının hedefe iletilmesini önlemek için false olarak ayarlayın.
- x-request-id: (varsayılan: true) x-request-id başlıklarının hedefe iletilmesini önlemek için false olarak ayarlayın.
- x-response-time: (varsayılan: true) x-response-time üstbilgilerinin hedefe iletilmesini önlemek için false olarak ayarlayın.
- via: (varsayılan: true) Via üstbilgilerinin hedefe iletilmesini önlemek için false olarak ayarlayın.
oauth özellikleri
Bu ayarlar, istemci kimlik doğrulamasının Edge Microgateway tarafından nasıl zorunlu kılındığını yapılandırır.
- allowNoAuthorization: (varsayılan: false) True değerine ayarlanırsa API çağrılarının, herhangi bir yetkilendirme başlığı olmadan Edge Microgateway'den geçmesine izin verilir. Authorization başlığının zorunlu olması için bu değeri false (varsayılan) olarak ayarlayın.
- allowInvalidAuthorization: (varsayılan: false) True değerine ayarlanırsa Yetkilendirme başlığında iletilen jeton geçersiz veya süresi dolmuş olsa bile API çağrılarının geçmesine izin verilir. Geçerli jetonlar gerektirmek için bu değeri false (yanlış) olarak ayarlayın (varsayılan).
- authorization-header: (varsayılan: Authorization: Bearer) Erişim jetonunu Edge Microgateway'e göndermek için kullanılan üstbilgi. Hedefin, Authorization üstbilgisini başka bir amaçla kullanması gereken durumlarda varsayılan değeri değiştirmek isteyebilirsiniz.
- api-key-header: (varsayılan: x-api-key) Edge Microgateway'e API anahtarı iletmek için kullanılan başlığın veya sorgu parametresinin adı. API anahtarı kullanma konusunu da inceleyin.
- keep-authorization-header: (varsayılan: false) True olarak ayarlanırsa istekte gönderilen Authorization başlığı hedefe iletilir (korunur).
- allowOAuthOnly: Doğru olarak ayarlanırsa her API'nin, Bearer erişim jetonu içeren bir yetkilendirme üstbilgisi olması gerekir. Yalnızca OAuth güvenlik modeline izin vermenizi sağlar (geriye dönük uyumluluğu korurken). (2.4.x sürümünde eklendi)
- allowAPIKeyOnly: Doğru olarak ayarlanırsa her API'nin bir API anahtarı içeren x-api-key başlığı (veya özel bir konumu) olmalıdır.Yalnızca API anahtarı güvenlik modeline izin vermenizi sağlar (geriye dönük uyumluluğu korurken). (2.4.x sürümünde eklendi)
- gracePeriod: Bu parametre, sistem saatiniz ile JWT yetkilendirme jetonunda belirtilen Not Before (nbf) veya Issued At (iat) zamanları arasındaki küçük tutarsızlıklardan kaynaklanan hataları önlemeye yardımcı olur. Bu parametreyi, bu tür tutarsızlıklara izin verilecek saniye sayısına ayarlayın. (2.5.7 sürümünde eklendi)
Eklentiye özel özellikler
Her bir eklentinin yapılandırılabilir özellikleri hakkında ayrıntılı bilgi için Eklentileri kullanma başlıklı makaleyi inceleyin.
Filtreleme proxy'leri
Bir Edge Microgateway örneğinin hangi mikro ağ geçidi uyumlu proxy'leri işleyeceğini filtreleyebilirsiniz.
Edge Microgateway başlatıldığında, ilişkili olduğu kuruluştaki tüm mikro ağ geçidi uyumlu proxy'leri indirir. Mikro ağ geçidinin işleyeceği proxy'leri sınırlamak için aşağıdaki yapılandırmayı kullanın. Örneğin, bu yapılandırma, mikro ağ geçidinin işleyeceği proxy'leri üç ile sınırlar: edgemicro_proxy-1, edgemicro_proxy-2 ve edgemicro_proxy-3:
edgemicro: proxies: - edgemicro_proxy-1 - edgemicro_proxy-2 - edgemicro_proxy-3
Ürünler ada göre filtreleniyor
Edge Microgateway'in indirip işlediği API ürünlerinin sayısını sınırlamak için aşağıdaki yapılandırmayı kullanın. İndirilen ürünleri filtrelemek için productnamefilter sorgu parametresini Edge Microgateway *.config.yaml dosyasında listelenen /products API'sine ekleyin. Örneğin:
edge_config:
bootstrap: >-
https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
managementUri: 'https://api.enterprise.apigee.com'
vaultName: microgateway
authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
baseUri: >-
https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
bootstrapMessage: Please copy the following property to the edge micro agent config
keySecretMessage: The following credentials are required to start edge micro
products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'
Sorgu parametresinin değerinin normal ifade biçiminde belirtilmesi ve URL olarak kodlanması gerektiğini unutmayın. Örneğin, ^[Ee]dgemicro.*$ normal ifadesi şu adları yakalar:
"edgemicro-test-1" , "edgemicro_demo" ve "Edgemicro_New_Demo". Sorgu parametresinde kullanıma uygun, URL olarak kodlanmış değer: %5E%5BEe%5Ddgemicro.%2A%24.
Aşağıdaki hata ayıklama çıkışı, yalnızca filtrelenmiş ürünlerin indirildiğini gösterir:
...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
"apiProduct":[
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590549037549,
"createdBy":"k***@g********m",
"displayName":"test upper case in name",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590549037549,
"lastModifiedBy":"k***@g********m",
"name":"Edgemicro_New_Demo",
"proxies":[
"catchall"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1590548328998,
"createdBy":"k***@g********m",
"displayName":"edgemicro test 1",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1590548328998,
"lastModifiedBy":"k***@g********m",
"name":"edgemicro-test-1",
"proxies":[
"Lets-Encrypt-Validation-DoNotDelete"
],
"quota":"null",
"quotaInterval":"null",
"quotaTimeUnit":"null",
"scopes":[
]
},
{
"apiResources":[
"/",
"/**"
],
"approvalType":"auto",
"attributes":[
{
"name":"access",
"value":"public"
}
],
"createdAt":1558182193472,
"createdBy":"m*********@g********m",
"displayName":"Edge microgateway demo product",
"environments":[
"prod",
"test"
],
"lastModifiedAt":1569077897465,
"lastModifiedBy":"m*********@g********m",
"name":"edgemicro_demo",
"proxies":[
"edgemicro-auth",
"edgemicro_hello"
],
"quota":"600",
"quotaInterval":"1",
"quotaTimeUnit":"minute",
"scopes":[
]
}
]
}Ürünleri özel özelliklere göre filtreleme
Ürünleri özel özelliklere göre filtrelemek için:
- Edge kullanıcı arayüzünde, Edge Microgateway'i yapılandırdığınız kuruluşta/ortamda edgemicro_auth proxy'sini seçin.
- Develop (Geliştirme) sekmesinde JavaCallout politikasını düzenleyicide açın.
products.filter.attributesanahtarıyla özel bir özellik ekleyin ve özellik adlarını virgülle ayrılmış bir liste halinde girin. Yalnızca özel özellik adlarından herhangi birini içeren ürünler Edge Microgateway'e döndürülür.- Özel özelliği
products.filter.env.enableolarak ayarlayarak ürünün mevcut ortam için etkinleştirilip etkinleştirilmediğini görmek için yapılan kontrolü devre dışı bırakabilirsiniz.false(Varsayılan değer "true"dur.) - (Yalnızca Private Cloud) Edge for Private Cloud kullanıyorsanız CPS olmayan ortamlar için ürünleri almak üzere
org.noncpsözelliğinitrueolarak ayarlayın.
Örneğin:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
<DisplayName>JavaCallout</DisplayName>
<FaultRules/>
<Properties>
<Property name="products.filter.attributes">attrib.one, attrib.two</Property>
<Property name="products.filter.env.enable">false</Property>
<Property name="org.noncps">true</Property>
</Properties>
<ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
<ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
</JavaCallout>Analytics push sıklığı yapılandırılıyor
Edge Microgateway'in Apigee'ye analiz verileri gönderme sıklığını kontrol etmek için şu yapılandırma parametrelerini kullanın:
- bufferSize (İsteğe bağlı): Arabelleğin en eski kayıtları silmeye başlamadan önce tutabileceği maksimum analiz kaydı sayısı. Varsayılan: 10000
- batchSize (İsteğe bağlı): Apigee'ye gönderilen bir grup analiz kaydının maksimum boyutu. Varsayılan: 500
- flushInterval (İsteğe bağlı): Apigee'ye gönderilen bir grup analiz kaydının her temizleme işlemi arasında geçen milisaniye cinsinden süre. Varsayılan: 5.000
Örneğin:
analytics: bufferSize: 15000 batchSize: 1000 flushInterval: 6000
Analiz verilerini maskeleme
Aşağıdaki yapılandırma, istek yolu bilgilerinin Edge analizlerinde gösterilmesini engeller. İstek URI'sini ve/veya istek yolunu maskelemek için mikro ağ geçidi yapılandırmasına aşağıdakileri ekleyin. URI'nin, isteğin ana makine adı ve yol bölümlerinden oluştuğunu unutmayın.
analytics: mask_request_uri: 'string_to_mask' mask_request_path: 'string_to_mask'
Edge Analytics'te API çağrılarını ayırma
Analytics eklentisini, belirli bir API yolunu ayıracak şekilde yapılandırabilirsiniz. Böylece bu yol, Edge Analytics kontrol panellerinde ayrı bir proxy olarak görünür. Örneğin, gerçek API proxy çağrılarıyla karıştırılmaması için kontrol panelinde bir durum denetimi API'sini ayırabilirsiniz. Analytics kontrol panelinde, ayrılmış proxy'ler şu adlandırma kalıbını izler:
edgemicro_proxyname-health
Aşağıdaki resimde, Analytics kontrol panelinde iki ayrı proxy gösterilmektedir: edgemicro_hello-health ve edgemicro_mock-health:

Analytics kontrol panelinde göreli ve mutlak yolları ayrı proxy'ler olarak ayırmak için bu parametreleri kullanın:
- relativePath (İsteğe bağlı): Analytics kontrol panelinde ayrılacak göreli yolu belirtir. Örneğin,
/healthcheckdeğerini belirtirseniz/healthcheckyolunu içeren tüm API çağrıları, kontrol panelindeedgemicro_proxyname-healtholarak görünür. Bu işaretin proxy temel yolunu yok saydığını unutmayın. Temel yol da dahil olmak üzere tam yola göre ayırmak içinproxyPathişaretini kullanın. - proxyPath (İsteğe bağlı): Analiz kontrol panelinde ayrılacak proxy temel yolu da dahil olmak üzere tam bir API proxy yolu belirtir. Örneğin,
/mocktarget/healthcheckdeğerini belirtirseniz (burada/mocktarget, proxy temel yoludur)/mocktarget/healthcheckyoluna sahip tüm API çağrıları, kontrol panelindeedgemicro_proxyname-healtholarak görünür.
Örneğin, aşağıdaki yapılandırmada /healthcheck içeren tüm API yolları, analiz eklentisi tarafından ayrılır. Bu, /foo/healthcheck ve /foo/bar/healthcheck'nin analiz kontrol panelinde edgemicro_proxyname-health adlı ayrı bir proxy olarak ayrılacağı anlamına gelir.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
relativePath: /healthcheckAşağıdaki yapılandırmada, proxy yolu /mocktarget/healthcheck olan tüm API'ler, analiz kontrol panelinde edgemicro_proxyname-health adlı ayrı bir proxy olarak ayrılır.
analytics:
uri: >-
https://xx/edgemicro/ax/org/docs/environment/test
bufferSize: 100
batchSize: 50
flushInterval: 500
proxyPath: /mocktarget/healthcheckEdge Microgateway'i şirket güvenlik duvarının arkasında kurma
Apigee Edge ile iletişim için HTTP proxy kullanma
3.1.2 sürümüne eklendi.
Edge Microgateway ile Apigee Edge arasındaki iletişim için HTTP proxy kullanmak istiyorsanız aşağıdakileri yapın:
HTTP_PROXY,HTTPS_PROXYveNO_PROXYortam değişkenlerini ayarlayın. Bu değişkenler, Apigee Edge ile iletişim için kullanmak istediğiniz her bir HTTP proxy'sinin ana makinelerini veya Apigee Edge ile iletişimi işlememesi gereken ana makineleri kontrol eder. Örneğin:export HTTP_PROXY='http://localhost:3786' export HTTPS_PROXY='https://localhost:3786' export NO_PROXY='localhost,localhost:8080'
NO_PROXY, Edge Microgateway'in proxy oluşturmaması gereken alanların virgülle ayrılmış bir listesi olabilir.Bu değişkenler hakkında daha fazla bilgi için https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables adresini ziyaret edin.
- Edge Microgateway'i yeniden başlatın.
Hedef iletişim için HTTP proxy kullanma
3.1.2 sürümüne eklendi.
Edge Microgateway ile arka uç hedefleri arasındaki iletişim için HTTP proxy kullanmak istiyorsanız aşağıdakileri yapın:
- Mikro ağ geçidi yapılandırma dosyasına aşağıdaki yapılandırmayı ekleyin:
edgemicro: proxy: tunnel: true | false url: proxy_url bypass: target_host # target hosts to bypass the proxy. enabled: true | falseBurada:
- tunnel: (İsteğe bağlı) Doğru olduğunda Edge Microgateway, HTTP isteklerini tek bir TCP bağlantısı üzerinden tünellemek için HTTP CONNECT yöntemini kullanır. (Aynı durum, proxy'yi yapılandırmak için aşağıda belirtilen ortam değişkenleri TLS etkinse de geçerlidir). Varsayılan:
false - url: HTTP proxy URL'si.
- bypass: (İsteğe bağlı) HTTP proxy'yi atlaması gereken bir veya daha fazla virgülle ayrılmış hedef ana makine URL'sini belirtir. Bu özellik ayarlanmazsa hangi hedef URL'lerin atlanacağını belirtmek için NO_PROXY ortam değişkenini kullanın.
- enabled: Doğru ise ve
proxy.urlayarlanmışsa HTTP proxy içinproxy.urldeğerini kullanın. Doğru ise veproxy.urlayarlanmamışsa Apigee Edge ile iletişim için HTTP proxy kullanma bölümünde açıklandığı gibi,HTTP_PROXYveHTTPS_PROXYHTTP proxy ortam değişkenlerinde belirtilen proxy'leri kullanın.
Örneğin:
edgemicro: proxy: tunnel: true url: 'http://localhost:3786' bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy. enabled: true - tunnel: (İsteğe bağlı) Doğru olduğunda Edge Microgateway, HTTP isteklerini tek bir TCP bağlantısı üzerinden tünellemek için HTTP CONNECT yöntemini kullanır. (Aynı durum, proxy'yi yapılandırmak için aşağıda belirtilen ortam değişkenleri TLS etkinse de geçerlidir). Varsayılan:
- Edge Microgateway'i yeniden başlatın.
Microgateway kullanan proxy'lerde joker karakter kullanma
Bir edgemicro_* (Microgateway uyumlu) proxy'nin temel yolunda bir veya daha fazla "*" joker karakteri kullanabilirsiniz. Örneğin, /team/*/members şeklindeki bir temel yol, istemcilerin yeni ekipleri desteklemek için yeni API proxy'leri oluşturmanıza gerek kalmadan https://[host]/team/blue/members ve https://[host]/team/green/members adreslerini çağırmasına olanak tanır. /**/ desteklenmez.
Önemli: Apigee, temel yolun ilk öğesi olarak joker karakter "*" kullanılmasını DESTEKLEMEZ. Örneğin, şu desteklenmez: /*/ araması.
JWT anahtarlarını rotasyona tabi tutma
JWT'yi ilk kullanıma hazırladıktan sonra, Edge şifrelenmiş Kernel Tabanlı Sanal Makine'de depolanan ortak/özel anahtar çiftini değiştirmeniz gerekebilir. Yeni bir anahtar çifti oluşturma işlemine anahtar rotasyonu denir.
Edge Microgateway'in JWT'leri kullanma şekli
JSON Web Jetonu (JWT), RFC7519'da açıklanan bir jeton standardıdır. JWT, bir dizi hak talebini imzalamanın bir yolunu sunar. Bu hak talepleri, JWT'nin alıcısı tarafından güvenilir bir şekilde doğrulanabilir.
KSA'yı kullanarak bir JWT oluşturabilir ve bunu API anahtarı yerine API çağrılarının yetkilendirme başlığında kullanabilirsiniz. Örneğin:
curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"
KSA ile JWT oluşturma hakkında bilgi edinmek için Jeton oluşturma başlıklı makaleyi inceleyin.
Anahtar rotasyonu nedir?
JWT'yi ilk kullanıma hazırladıktan sonra, Edge şifrelenmiş Kernel Tabanlı Sanal Makine'de depolanan ortak/özel anahtar çiftini değiştirmeniz gerekebilir. Yeni bir anahtar çifti oluşturma işlemine anahtar rotasyonu denir. Anahtarları rotasyona tabi tuttuğunuzda yeni bir özel/ortak anahtar çifti oluşturulur ve Apigee Edge kuruluşunuzdaki/ortamınızdaki "microgateway" KVM'de depolanır. Ayrıca, eski ortak anahtar, orijinal anahtar kimliği değeriyle birlikte saklanır.
EDGE, JWT oluşturmak için şifrelenmiş Kernel Tabanlı Sanal Makine'de depolanan bilgileri kullanır. Edge Microgateway'i ilk kez kurduğunuzda (yapılandırdığınızda) microgateway adlı bir KVM oluşturulur ve anahtarlarla doldurulur. KVM'deki anahtarlar, JWT'yi imzalamak ve şifrelemek için kullanılır.
KVM anahtarları şunlardır:
-
private_key: JWT'leri imzalamak için kullanılan en son (en yeni oluşturulan) RSA özel anahtarı.
-
public_key: private_key ile imzalanmış JWT'leri doğrulamak için kullanılan en son (en yeni oluşturulan) sertifika.
-
private_key_kid: En son (en yakın zamanda oluşturulan) özel anahtar kimliği. Bu anahtar kimliği, private_key değeriyle ilişkilidir ve anahtar rotasyonunu desteklemek için kullanılır.
-
public_key1_kid: En yeni (en son oluşturulan) ortak anahtar kimliği. Bu anahtar, public_key1 değeriyle ilişkilidir ve anahtar rotasyonunu desteklemek için kullanılır. Bu değer, özel anahtarın kid değeriyle aynıdır.
-
public_key1: En yeni (en son oluşturulan) ortak anahtar.
Anahtar rotasyonu gerçekleştirdiğinizde, mevcut anahtar değerleri haritada değiştirilir ve eski ortak anahtarları korumak için yeni anahtarlar eklenir. Örneğin:
-
public_key2_kid: Eski ortak anahtar kimliği. Bu anahtar, public_key2 değeriyle ilişkilidir ve anahtar rotasyonunu desteklemek için kullanılır.
-
public_key2: Eski ortak anahtar.
Doğrulama için sunulan JWT'ler yeni ortak anahtar kullanılarak doğrulanır. Doğrulama başarısız olursa JWT'nin süresi dolana kadar (token_expiry* aralığından sonra, varsayılan olarak 30 dakika) eski ortak anahtar kullanılır. Bu sayede, API trafiğini hemen kesintiye uğratmadan anahtarları "rotasyona tabi tutabilirsiniz".
Anahtar rotasyonu nasıl yapılır?
Bu bölümde, anahtar rotasyonunun nasıl gerçekleştirileceği açıklanmaktadır.
- KVM'yi yükseltmek için
edgemicro upgradekvmkomutunu kullanın. Bu komutu çalıştırmayla ilgili ayrıntılar için KVM'yi yükseltme başlıklı makaleyi inceleyin. Bu adımı yalnızca bir kez uygulamanız yeterlidir. - edgemicro-oauth proxy'sini yükseltmek için
edgemicro upgradeauthkomutunu kullanın. Bu komutu çalıştırmayla ilgili ayrıntılar için edgemicro-auth proxy'sini yükseltme başlıklı makaleyi inceleyin. Bu adımı yalnızca bir kez uygulamanız yeterlidir. ~/.edgemicro/org-env-config.yamldosyanıza aşağıdaki satırı ekleyin. Burada, mikro ağ geçidini kullanmak üzere yapılandırdığınız kuruluş ve ortamı belirtmeniz gerekir:jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
Anahtar rotasyonu yapmak için anahtar rotasyonu komutunu çalıştırın. Bu komutla ilgili ayrıntılar için Anahtarları rotasyona tabi tutma başlıklı makaleyi inceleyin.
edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET
Örneğin:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
Anahtar rotasyonundan sonra Edge, Edge Microgateway'e birden fazla anahtar döndürür. Aşağıdaki örnekte her anahtarın benzersiz bir "kid" (Anahtar Kimliği) değeri olduğuna dikkat edin. Mikro ağ geçidi, yetkilendirme jetonlarını doğrulamak için bu anahtarları kullanır. Jeton doğrulama başarısız olursa mikro ağ geçidi, anahtar grubunda daha eski bir anahtar olup olmadığına bakar ve bu anahtarı dener. Döndürülen anahtarların biçimi JSON Web Anahtarı'dır (JWK). Bu biçim hakkında RFC 7517'de bilgi edinebilirsiniz.
{
"keys": [
{
"kty": "RSA",
"n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
"e": "AQAB",
"kid": "2"
},
{
"kty": "RSA",
"n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
"e": "AQAB",
"kid": "1"
}
]
}"Şu tarihten önce değil" gecikmesini yapılandırma
3.1.5 ve önceki sürümlerde, rotatekey komutu tarafından oluşturulan yeni özel anahtar hemen geçerli olur ve oluşturulan yeni jetonlar yeni özel anahtarla imzalanırdı. Ancak yeni ortak anahtar, yalnızca mikro ağ geçidi yapılandırması yenilendiğinde (varsayılan olarak her 10 dakikada bir) Edge Microgateway örneklerine sunuluyordu. Jeton imzalama ile mikro ağ geçidi örneği yenileme arasındaki bu gecikme nedeniyle, en son anahtarla imzalanan jetonlar, tüm örnekler en son ortak anahtarı alana kadar reddediliyordu.
Birden fazla mikro ağ geçidi örneğinin bulunduğu durumlarda, ortak anahtar gecikmesi bazen 403 durumlu aralıklı çalışma zamanı hatalarına neden oluyordu. Bunun nedeni, jeton doğrulamanın bir örnekte başarılı olması ancak tüm örnekler yenilenene kadar başka bir örnekte başarısız olmasıydı.
3.1.6 sürümünden itibaren, rotatekey komutundaki yeni bir işaret, yeni özel anahtarın geçerli olması için bir gecikme süresi belirlemenize olanak tanır. Böylece, tüm microgateway örneklerinin yenilenmesi ve yeni ortak anahtarı alması için zaman tanınır. Yeni işaret, "not before" (önce değil) anlamına gelen --nbf işaretidir.
Bu işaret, gecikme süresini dakika cinsinden belirten bir tam sayı değeri alır.
Aşağıdaki örnekte gecikme 15 dakika olarak ayarlanmıştır:
edgemicro rotatekey -o docs -e test \ -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \ -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \ --nbf 15
Gecikmeyi, varsayılan olarak 10 dakika olan config_change_poll_internal yapılandırma ayarından daha uzun bir süreye ayarlamanız önerilir. edgemicro özellikleri bölümüne de bakın.
İndirilen proxy'ler filtreleniyor
Varsayılan olarak Edge Microgateway, Edge kuruluşunuzda "edgemicro_" adlandırma önekiyle başlayan tüm proxy'leri indirir. Bu varsayılan ayarı, adları bir kalıpla eşleşen proxy'leri indirecek şekilde değiştirebilirsiniz.
- Edge Micro yapılandırma dosyanızı açın:
~/.edgemicro/org-env-config.yaml - edge_config altına proxyPattern öğesini ekleyin. Örneğin, aşağıdaki kalıp edgemicro_foo, edgemicro_fast ve edgemicro_first gibi proxy'leri indirir.
edge_config: … proxyPattern: edgemicro_f*
API proxy'leri olmadan ürünleri belirtme
Apigee Edge'de, API proxy'si içermeyen bir API ürünü oluşturabilirsiniz. Bu ürün yapılandırması, ürünle ilişkili bir API anahtarının kuruluşunuzda dağıtılan tüm proxy'lerle çalışmasına olanak tanır. Edge Microgateway, 2.5.4 sürümünden itibaren bu ürün yapılandırmasını destekler.
Hata ayıklama ve sorun giderme
Hata ayıklayıcıya bağlanma
Edge Microgateway'i node-inspector gibi bir hata ayıklayıcıyla çalıştırabilirsiniz. Bu, özel eklentilerle ilgili sorunları giderme ve hata ayıklama için kullanışlıdır.
- Edge Microgateway'i hata ayıklama modunda yeniden başlatın. Bunu yapmak için
startkomutunun başınaDEBUG=*ekleyin:DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET
Hata ayıklama çıkışını bir dosyaya yönlendirmek için şu komutu kullanabilirsiniz:
export DEBUG=* nohup edgemicro start \ -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log
- Hata ayıklayıcınızı başlatın ve hata ayıklama işlemi için bağlantı noktası numarasını dinleyecek şekilde ayarlayın.
- Artık Edge Microgateway kodunda adım adım ilerleyebilir, kesme noktaları ayarlayabilir, ifadeleri izleyebilir ve daha fazlasını yapabilirsiniz.
Hata ayıklama moduyla ilgili standart Node.js işaretlerini belirtebilirsiniz. Örneğin,
--nolazy, zaman uyumsuz kodda hata ayıklamaya yardımcı olur.
Günlük dosyaları kontrol ediliyor
Sorun yaşıyorsanız yürütme ayrıntıları ve hata bilgileri için günlük dosyalarını inceleyin. Ayrıntılı bilgi için Günlük dosyalarını yönetme başlıklı makaleyi inceleyin.
API anahtarı güvenliğini kullanma
API anahtarları, Edge Microgateway'e istek gönderen istemcilerin kimliğini doğrulamak için basit bir mekanizma sağlar. Edge Microgateway kimlik doğrulama proxy'sini içeren bir Apigee Edge ürününden tüketici anahtarı (istemci kimliği olarak da bilinir) değerini kopyalayarak API anahtarı alabilirsiniz.
Anahtarların önbelleğe alınması
API anahtarları, önbelleğe alınan hamiline ait jetonlarla değiştirilir. Edge Microgateway'e gelen isteklerde Cache-Control: no-cache başlığını ayarlayarak önbelleğe almayı devre dışı bırakabilirsiniz.
Bir API anahtarını kullanma
API anahtarını, API isteğinde sorgu parametresi veya başlık olarak iletebilirsiniz. Varsayılan olarak üstbilgi ve sorgu parametresi adı x-api-key şeklindedir.
Sorgu parametresi örneği:
curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz
Üstbilgi örneği:
curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
API anahtarı adını yapılandırma
Varsayılan olarak, hem API anahtarı üstbilgisi hem de sorgu parametresi için x-api-key adı kullanılır.
Yapılandırma değişiklikleri yapma bölümünde açıklandığı gibi, yapılandırma dosyasında bu varsayılan ayarı değiştirebilirsiniz. Örneğin, adı apiKey olarak değiştirmek için:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false api-key-header: apiKey
Bu örnekte, hem sorgu parametresi hem de üstbilgi adı apiKey olarak değiştirilmiştir. x-api-key adı artık her iki durumda da çalışmayacak. Yapılandırma değişiklikleri yapma başlıklı makaleyi de inceleyin.
Örneğin:
curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"
API anahtarlarını proxy istekleriyle kullanma hakkında daha fazla bilgi için Secure Edge Microgateway başlıklı makaleyi inceleyin.
Üst akış yanıt kodlarını etkinleştirme
Varsayılan olarak, yanıt 200 durumu değilse oauth eklentisi yalnızca 4xx hata durum kodlarını döndürür. Bu davranışı, hataya bağlı olarak her zaman tam 4xx veya 5xx kodunu döndürecek şekilde değiştirebilirsiniz.
Bu özelliği etkinleştirmek için Edge Microgateway yapılandırmanıza oauth.useUpstreamResponse: true özelliğini ekleyin. Örneğin:
oauth: allowNoAuthorization: false allowInvalidAuthorization: false gracePeriod: 10 useUpstreamResponse: true
OAuth2 jeton güvenliğini kullanma
Bu bölümde, OAuth2 erişim jetonlarının ve yenileme jetonlarının nasıl alınacağı açıklanmaktadır. Erişim jetonları, mikro ağ geçidi üzerinden güvenli API çağrıları yapmak için kullanılır. Yenileme jetonları, yeni erişim jetonları almak için kullanılır.
Erişim jetonu alma
Bu bölümde, erişim jetonu almak için edgemicro-auth proxy'sinin nasıl kullanılacağı açıklanmaktadır.
edgemicro token CLI komutunu kullanarak da erişim jetonu alabilirsiniz.
CLI hakkında ayrıntılı bilgi için Jetonları yönetme başlıklı makaleyi inceleyin.
API 1: Kimlik bilgilerini gövde parametreleri olarak gönderme
URL'de kuruluş ve ortam adlarınızı değiştirin ve Apigee Edge'deki bir geliştirici uygulamasından alınan Tüketici Kimliği ve Tüketici Gizli Anahtarı değerlerini client_id ve client_secret gövde parametreleriyle değiştirin:
curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"
API 2: Kimlik bilgilerini Basic Auth üstbilgisinde gönderme
İstemci kimlik bilgilerini Temel Kimlik Doğrulama üstbilgisi, grant_type parametresini ise form parametresi olarak gönderin. Bu komut biçimi, RFC 6749: OAuth 2.0 Yetkilendirme Çerçevesi'nde de ele alınmıştır.
http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \ -d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"
Örnek çıkış
API, JSON yanıtı döndürür.token ve access_token özellikleri arasında fark olmadığını unutmayın. İkisinden birini kullanabilirsiniz.
{ "token": "eyJraWQiOiIxIiwidHlwIjoi", "access_token": "eyJraWQiOiIxIiwid", "token_type": "bearer", "expires_in": "108000" }
Yenileme jetonu alma
Yenileme jetonu almak için edgemicro-auth proxy'sinin /token uç noktasına bir API çağrısı yapın. Bu API çağrısını password yetkilendirme türüyle yapmanız GEREKİR. Aşağıdaki adımlarda bu süreç açıklanmaktadır.
/tokenAPI ile erişim ve yenileme jetonu alın. Yetkilendirme türününpasswordolduğunu unutmayın:curl -X POST \ https://your_organization-your_environment.apigee.net/edgemicro-auth/token \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq", "client_secret":"bUdDcFgv3nXffnU", "grant_type":"password", "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq", "password":"bUdD2FvnMsXffnU" }'API, bir erişim jetonu ve bir yenileme jetonu döndürür. Yanıt şuna benzer:
{ "token": "your-access-token", "access_token": "your-access-token", "token_type": "bearer", "expires_in": "108000", "refresh_token": "your-refresh-token", "refresh_token_expires_in": "431999", "refresh_token_issued_at": "1562087304302", "refresh_token_status": "approved" }- Artık aynı API'nin
/refreshuç noktasını çağırarak yeni bir erişim jetonu almak için yenileme jetonunu kullanabilirsiniz. Örneğin:curl -X POST \ https://willwitman-test.apigee.net/edgemicro-auth/refresh \ -H 'Content-Type: application/json' \ -d '{ "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq", "client_secret":"bUdDc2Fv3nMXffnU", "grant_type":"refresh_token", "refresh_token":"your-refresh-token" }'API, yeni bir erişim jetonu döndürür. Yanıt şuna benzer:
{ "token": "your-new-access-token" }
Sürekli izleme
Forever, işlemin başarısız olması veya hata vermesi durumunda Node.js uygulamasını otomatik olarak yeniden başlatan bir Node.js aracıdır. Edge Microgateway'de, Edge Microgateway'in kaç kez ve hangi aralıklarla yeniden başlatılacağını kontrol etmek için yapılandırabileceğiniz bir forever.json dosyası bulunur. Bu dosya, Forever'ı programatik olarak yöneten forever-monitor adında bir Forever hizmeti yapılandırır.
forever.json dosyasını Edge Microgateway kök yükleme dizininde bulabilirsiniz. Edge Microgateway nerede yüklü? başlıklı makaleyi inceleyin. Yapılandırma seçenekleriyle ilgili ayrıntılar için forever-monitor belgelerine bakın.
edgemicro forever komutu, forever.json dosyasının konumunu belirtmenize (-f işareti) ve Forever izleme işlemini başlatmanıza/durdurmanıza (-a işareti) olanak tanıyan işaretler içerir. Örneğin:
edgemicro forever -f ~/mydir/forever.json -a start
Daha fazla bilgi için CLI referansındaki Forever izleme bölümüne bakın.
Yapılandırma dosyası uç noktası belirtme
Birden fazla Edge Microgateway örneği çalıştırıyorsanız bunların yapılandırmalarını tek bir konumdan yönetmek isteyebilirsiniz. Bunu yapmak için Edge Micro'nun yapılandırma dosyasını indirebileceği bir HTTP uç noktası belirtebilirsiniz. Edge Micro'yu -u işaretini kullanarak başlattığınızda bu uç noktayı belirtebilirsiniz.
Örneğin:
edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key
Burada mgconfig uç noktası, yapılandırma dosyanızın içeriğini döndürür. Bu dosya, varsayılan olarak ~/.edgemicro konumunda bulunur ve şu adlandırma kuralına sahiptir: org-env-config.yaml.
TCP bağlantısı veri arabelleğe alma özelliğini devre dışı bırakma
Edge Microgateway tarafından kullanılan TCP bağlantıları için veri arabelleğe almayı devre dışı bırakmak üzere nodelay yapılandırma özelliğini kullanabilirsiniz.
Varsayılan olarak TCP bağlantıları, verileri göndermeden önce arabelleğe almak için Nagle algoritmasını kullanır. nodelay değerini true olarak ayarlamak bu davranışı devre dışı bırakır (socket.write() her çağrıldığında veriler hemen gönderilir). Daha fazla bilgi için Node.js belgelerini de inceleyebilirsiniz.
nodelay özelliğini etkinleştirmek için Edge Micro yapılandırma dosyasını aşağıdaki gibi düzenleyin:
edgemicro:
nodelay: true
port: 8000
max_connections: 1000
config_change_poll_interval: 600
logging:
level: error
dir: /var/tmp
stats_log_interval: 60
rotate_interval: 24
Edge Microgateway'i bağımsız modda çalıştırma
Edge Microgateway'i herhangi bir Apigee Edge bağımlılığından tamamen bağımsız olarak çalıştırabilirsiniz. Bağımsız mod olarak adlandırılan bu senaryo, Edge Microgateway'i internet bağlantısı olmadan çalıştırmanıza ve test etmenize olanak tanır.
Bağımsız modda, Apigee Edge'e bağlantı gerektiren aşağıdaki özellikler çalışmaz:
- OAuth ve API anahtarı
- Kota
- Analytics
Öte yandan, özel eklentiler ve ani artış önleme, Apigee Edge'e bağlantı gerektirmediğinden normal şekilde çalışır. Ayrıca, extauth adlı yeni bir eklenti, bağımsız moddayken mikro ağ geçidine yapılan API çağrılarını bir JWT ile yetkilendirmenize olanak tanır.
Ağ geçidini yapılandırma ve başlatma
Edge Microgateway'i bağımsız modda çalıştırmak için:
- Şu şekilde adlandırılmış bir yapılandırma dosyası oluşturun:
$HOME/.edgemicro/$ORG-$ENV-config.yamlÖrneğin:
vi $HOME/.edgemicro/foo-bar-config.yaml
- Aşağıdaki kodu dosyaya yapıştırın:
edgemicro: port: 8000 max_connections: 1000 config_change_poll_interval: 600 logging: level: error dir: /var/tmp stats_log_interval: 60 rotate_interval: 24 plugins: sequence: - extauth - spikearrest headers: x-forwarded-for: true x-forwarded-host: true x-request-id: true x-response-time: true via: true extauth: publickey_url: https://www.googleapis.com/oauth2/v1/certs spikearrest: timeUnit: second allow: 10 buffersize: 0 - Aşağıdaki ortam değişkenini "1" değeriyle dışa aktarın:
export EDGEMICRO_LOCAL=1
- Yerel proxy'yi örneklendirmek için değerleri sağlayarak aşağıdaki
startkomutunu çalıştırın:edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \ -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH
Burada:
- $ORG, yapılandırma dosyası adında kullandığınız "kuruluş" adıdır.
- $ENV, yapılandırma dosyası adında kullandığınız "env" adıdır.
- $LOCAL_PROXY_NAME, oluşturulacak yerel proxy'nin adıdır. İstediğiniz adı kullanabilirsiniz.
- $LOCAL_PROXY_VERSION, proxy'nin sürüm numarasıdır.
- $TARGET_URL, proxy hedefinin URL'sidir. (Hedef, proxy'nin çağırdığı hizmettir.)
- $BASE_PATH, proxy'nin temel yoludur. Bu değer eğik çizgiyle başlamalıdır. Kök taban yolu için yalnızca eğik çizgi belirtin (ör. "/").
Örneğin:
edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
- Yapılandırmayı test edin.
curl http://localhost:8000/echo { "error" : "missing_authorization" }extautheklentisifoo-bar-config.yamldosyasında olduğu için "missing_authorization" hatası alırsınız. Bu eklenti, API çağrısının Authorization başlığında bulunması gereken bir JWT'yi doğrular. Sonraki bölümde, API çağrılarının hata olmadan gerçekleşmesini sağlayacak bir JWT alacaksınız.
Örnek: Yetkilendirme jetonu alma
Aşağıdaki örnekte, Apigee Edge'deki (edgemicro-auth/jwkPublicKeys) Edge Microgateway JWT uç noktasından nasıl JWT alınacağı gösterilmektedir.
Bu uç nokta, Edge Microgateway'in standart kurulumunu ve yapılandırmasını gerçekleştirdiğinizde dağıtılır.
JWT'yi Apigee uç noktasından almak için önce standart Edge Microgateway kurulumunu yapmanız ve internete bağlı olmanız gerekir. Apigee uç noktası burada yalnızca örnek amaçlı kullanılmıştır ve zorunlu değildir. Dilerseniz başka bir JWT jeton uç noktası kullanabilirsiniz. Bu durumda, söz konusu uç nokta için sağlanan API'yi kullanarak JWT'yi almanız gerekir.
Aşağıdaki adımlarda, edgemicro-auth/jwkPublicKeys uç noktasını kullanarak nasıl jeton alacağınız açıklanmaktadır.
edgemicro-authproxy'sini Apigee Edge'deki kuruluşunuza/ortamınıza dağıtmak için Edge Microgateway'in standart kurulum ve yapılandırmasını yapmanız gerekir. Bu adımı daha önce uyguladıysanız tekrarlamanız gerekmez.- Edge Microgateway'i Apigee Cloud'a dağıttıysanız bu uç noktadan JWT alabilmek için internete bağlı olmanız gerekir.
-
Edge Microgateway'i durdurma:
edgemicro stop
- Daha önce oluşturduğunuz yapılandırma dosyasında (
$HOME/.edgemicro/org-env-config.yaml),extauth:publickey_urlözelliğini Apigee Edge kuruluşunuzdaki/ortamınızdakiedgemicro-auth/jwkPublicKeysuç noktasına yönlendirin. Örneğin:extauth: publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
-
Edge Microgateway'i daha önce yaptığınız gibi, yapılandırma dosyası adında kullandığınız kuruluş/ortam adlarını kullanarak yeniden başlatın. Örneğin:
edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
-
Yetkilendirme uç noktasından bir JWT jetonu alın.
edgemicro-auth/jwkPublicKeysuç noktasını kullandığınız için şu KSA komutunu kullanabilirsiniz:
edgemicro token komutunu veya bir API'yi kullanarak Edge Microgateway için JWT oluşturabilirsiniz. Örneğin:
edgemicro token get -o your_org -e your_env \ -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy
Burada:
- your_org, daha önce Edge Microgateway'i yapılandırdığınız Apigee kuruluşunuzun adıdır.
- your_env, kuruluştaki bir ortamdır.
iseçeneği,edgemicro-authproxy'sini içeren bir ürüne sahip geliştirici uygulamasının tüketici anahtarını belirtir.sseçeneği,edgemicro-authproxy'sini içeren bir ürüne sahip geliştirici uygulamasının Tüketici Gizli Anahtarı'nı belirtir.
Bu komut, Apigee Edge'den API çağrılarını doğrulamak için kullanılabilecek bir JWT oluşturmasını ister.
Jeton oluşturma başlıklı makaleyi de inceleyin.Bağımsız yapılandırmayı test etme
Yapılandırmayı test etmek için API'yi, Authorization başlığına eklenen jetonla aşağıdaki gibi çağırın:
curl http://localhost:8000/echo -H "Authorization: Bearer your_token
Örnek:
curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"
Örnek çıkış:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Yerel proxy modu kullanılıyor
Yerel proxy modunda Edge Microgateway, Apigee Edge'de microgateway uyumlu bir proxy'nin dağıtılmasını gerektirmez. Bunun yerine, mikro ağ geçidini başlattığınızda yerel proxy adı, temel yol ve hedef URL sağlayarak bir "yerel proxy" yapılandırırsınız. Mikro ağ geçidine yapılan API çağrıları, yerel proxy'nin hedef URL'sine gönderilir. Diğer tüm açılardan yerel proxy modu, Edge Microgateway'i normal modda çalıştırmakla tamamen aynı şekilde çalışır. Kimlik doğrulama, ani artış önleme ve kota yaptırımı, özel eklentiler vb. aynı şekilde çalışır.
Kullanım alanı ve örnek
Yerel proxy modu, yalnızca tek bir proxy'yi bir Edge Microgateway örneğiyle ilişkilendirmeniz gerektiğinde kullanışlıdır. Örneğin, Edge Microgateway'i Kubernetes'e yardımcı proxy olarak ekleyebilirsiniz. Bu durumda, mikro ağ geçidi ve hizmet tek bir kapsülde çalışır ve mikro ağ geçidi, eşlik eden hizmete giden ve hizmetten gelen trafiği yönetir. Aşağıdaki şekilde, Edge Microgateway'in bir Kubernetes kümesinde yardımcı proxy olarak çalıştığı bu mimari gösterilmektedir. Her mikro ağ geçidi örneği, yalnızca tamamlayıcı hizmetindeki tek bir uç noktayla iletişim kurar:

Bu mimari tarzının avantajlarından biri, Edge Microgateway'in Kubernetes kümesi gibi bir container ortamına dağıtılan ayrı hizmetler için API yönetimi sağlamasıdır.
Yerel proxy modunu yapılandırma
Edge Microgateway'i yerel proxy modunda çalışacak şekilde yapılandırmak için aşağıdaki adımları uygulayın:
- Yerel yapılandırma ortamınızı, tipik bir Edge Microgateway kurulumunda yaptığınız gibi ayarlamak için
edgemicro initkomutunu çalıştırın. Edge Microgateway'i yapılandırma başlıklı makaleyi de inceleyin. - Tipik bir Edge Microgateway kurulum prosedüründe yaptığınız gibi
edgemicro configurekomutunu çalıştırın. Örneğin:edgemicro configure -o your_org -e your_env -u your_apigee_username
Bu komut, edgemicro-auth politikasını Edge'e dağıtır ve microgateway'i başlatmak için ihtiyacınız olan bir anahtar ve gizli anahtar döndürür. Yardıma ihtiyacınız varsa Edge Microgateway'i yapılandırma başlıklı makaleyi inceleyin.
- Apigee Edge'de bir API ürünü oluşturun ve aşağıdaki zorunlu yapılandırma şartlarını uygulayın (diğer tüm yapılandırmaları dilediğiniz gibi yönetebilirsiniz):
- Ürüne edgemicro-auth proxy'sini eklemeniz gerekir. Bu proxy,
edgemicro configurekomutunu çalıştırdığınızda otomatik olarak dağıtıldı. - Bir kaynak yolu sağlamanız gerekir. Apigee, ürüne şu yolun eklenmesini önerir:
/**. Daha fazla bilgi için Kaynak yolunun davranışını yapılandırma başlıklı makaleyi inceleyin. Edge belgelerindeki API ürünleri oluşturma bölümüne de göz atın.
- Ürüne edgemicro-auth proxy'sini eklemeniz gerekir. Bu proxy,
Apigee Edge'de bir geliştirici oluşturun veya isterseniz mevcut bir geliştiriciyi kullanın. Yardım için Edge yönetim kullanıcı arayüzünü kullanarak geliştirici ekleme başlıklı makaleyi inceleyin.
- Apigee Edge'de bir geliştirici uygulaması oluşturun. Yeni oluşturduğunuz API ürününü uygulamaya eklemeniz gerekir. Yardım için Edge yönetim kullanıcı arayüzünde uygulama kaydetme başlıklı makaleyi inceleyin.
- Edge Microgateway'in yüklü olduğu makinede, aşağıdaki ortam değişkenini "1" değeriyle dışa aktarın.
export EDGEMICRO_LOCAL_PROXY=1
- Aşağıdaki
startkomutunu yürütün:edgemicro start -o your_org -e your_environment -k your_key -s your_secret \ -a local_proxy_name -v local_proxy_version -t target_url -b base_pathBurada:
- your_org, Apigee kuruluşunuzdur.
- your_environment, kuruluşunuzdaki bir ortamdır.
- your_key,
edgemicro configurekomutunu çalıştırdığınızda döndürülen anahtardır. - your_secret,
edgemicro configurekomutunu çalıştırdığınızda döndürülen gizli anahtardır. - local_proxy_name, oluşturulacak yerel proxy'nin adıdır.
- local_proxy_version, proxy'nin sürüm numarasıdır.
- target_url, proxy'nin hedefinin (proxy'nin çağıracağı hizmet) URL'sidir.
- base_path, proxy'nin temel yoludur. Bu değer eğik çizgiyle başlamalıdır. Kök taban yolu için yalnızca eğik çizgi belirtin (ör. "/").
Örneğin:
edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \ -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \ -t http://mocktarget.apigee.net -b /echo
Yapılandırmayı test etme
Proxy uç noktasını çağırarak yerel proxy yapılandırmasını test edebilirsiniz. Örneğin, /echo temel yolunu belirttiyseniz proxy'yi aşağıdaki gibi çağırabilirsiniz:
curl http://localhost:8000/echo
{
"error" : "missing_authorization",
"error_description" : "Missing Authorization header"
}Geçerli bir API anahtarı sağlamadığınız için bu ilk API çağrısı hata verdi. Anahtarı, daha önce oluşturduğunuz geliştirici uygulamasında bulabilirsiniz. Uygulamayı Edge kullanıcı arayüzünde açın, tüketici anahtarını kopyalayın ve bu anahtarı aşağıdaki gibi kullanın:
curl http://localhost:8000/echo -H 'x-api-key:your_api_key'
Örneğin:
curl http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"
Örnek çıkış:
{
"headers":{
"user-agent":"curl/7.54.0",
"accept":"*/*",
"x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
"client_received_start_timestamp":"1535134472699",
"x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
"target_sent_start_timestamp":"1535134472702",
"x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
"x-forwarded-proto":"http",
"x-forwarded-host":"localhost:8000",
"host":"mocktarget.apigee.net",
"x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
"via":"1.1 localhost, 1.1 google",
"x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
"connection":"Keep-Alive"
},
"method":"GET",
"url":"/",
"body":""
}Senkronizasyon aracını kullanma
Bu bölümde, Apigee Edge'den yapılandırma verilerini alıp yerel bir Redis veritabanına yazmasına izin vererek Edge Microgateway'in esnekliğini artıran isteğe bağlı bir özellik olan senkronizasyon aracının nasıl kullanılacağı açıklanmaktadır. Çalışan bir senkronizasyon aracı örneğiyle, farklı düğümlerde çalışan diğer Edge Microgateway örnekleri yapılandırmalarını doğrudan bu veritabanından alabilir.
Senkronizasyon özelliği şu anda Redis 5.0.x ile çalışacak şekilde desteklenmektedir.
Senkronizasyon aracı nedir?
Senkronizasyon aracı, Edge Microgateway için bir düzeyde esneklik sağlar. Bu, her Edge Microgateway örneğinin aynı yapılandırmayı kullanmasını ve internet kesintisi durumunda Edge Microgateway örneklerinin düzgün şekilde başlatılıp çalıştırılabilmesini sağlar.
Varsayılan olarak Edge Microgateway örnekleri, API proxy'si ve API ürünü yapılandırmaları gibi yapılandırma verilerini almak ve yenilemek için Apigee Edge ile iletişim kurabilmelidir. Edge ile internet bağlantısı kesilirse en son yapılandırma verileri önbelleğe alındığı için mikro ağ geçidi örnekleri çalışmaya devam edebilir. Ancak yeni mikro ağ geçidi örnekleri, net bir bağlantı olmadan başlatılamaz. Ayrıca, internet kesintisi nedeniyle bir veya daha fazla mikro ağ geçidi örneği, diğer örneklerle senkronize olmayan yapılandırma bilgileriyle çalışabilir.
Edge Microgateway senkronizasyon aracı, Edge Microgateway örneklerinin API proxy trafiğini başlatmak ve işlemek için ihtiyaç duyduğu yapılandırma verilerini almasına yönelik alternatif bir mekanizma sağlar.
Apigee Edge çağrılarından alınan yapılandırma verileri şunları içerir: jwk_public_keys çağrısı,
jwt_public_key çağrısı, önyükleme çağrısı ve API ürünleri çağrısı.
Senkronizasyon aracı, farklı düğümlerde çalışan tüm Edge Microgateway örneklerinin düzgün şekilde başlatılmasını ve Edge Microgateway ile Apigee Edge arasındaki internet bağlantısı kesilse bile senkronize kalmasını sağlar.
Senkronizasyon aracı, Edge Microgateway'in özel olarak yapılandırılmış bir örneğidir. Tek amacı, Apigee Edge'i sorgulamak (zamanlama yapılandırılabilir), yapılandırma verilerini almak ve yerel bir Redis veritabanına yazmaktır. Senkronizasyon örneğinin kendisi API proxy trafiğini işleyemez. Farklı düğümlerde çalışan diğer Edge Microgateway örnekleri, yapılandırma verilerini Apigee Edge yerine Redis veritabanından alacak şekilde yapılandırılabilir. Tüm mikro ağ geçidi örnekleri, yapılandırma verilerini yerel veritabanından çektiği için internet kesintisi durumunda bile API isteklerini başlatabilir ve işleyebilir.
Senkronizasyon örneği yapılandırma
Senkronizasyon aracı olarak kullanmak istediğiniz Edge Microgateway kurulumu için org-env/config.yaml dosyasına aşağıdaki yapılandırmayı ekleyin:
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 1 redisBasedConfigCache: true
Örneğin:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 1 redisBasedConfigCache: true
| Seçenek | Açıklama |
|---|---|
redisHost |
Redis örneğinizin çalıştığı ana makine. Varsayılan: 127.0.0.1 |
redisPort |
Redis örneğinin bağlantı noktası. Varsayılan: 6379 |
redisDb |
Kullanılacak Redis veritabanı. Varsayılan: 0 |
redisPassword |
Veritabanı şifreniz. |
Son olarak, yapılandırma dosyasını kaydedin ve Edge Microgateway örneğini başlatın. Apigee Edge'i sorgulamaya ve indirilen yapılandırma verilerini Redis veritabanında depolamaya başlar.
Normal Edge Microgateway örneklerini yapılandırma
Senkronizasyon aracı çalışırken, API proxy trafiğini işleyen normal mikro ağ geçidi örneklerini çalıştırmak için ek Edge Microgateway düğümleri yapılandırabilirsiniz. Ancak bu örnekleri, yapılandırma verilerini Apigee Edge yerine Redis veritabanından alacak şekilde yapılandırırsınız.
Her ek Edge Microgateway düğümünün org-env/config.yaml dosyasına aşağıdaki yapılandırmayı ekleyin. synchronizerMode özelliğinin 0 olarak ayarlandığını unutmayın. Bu özellik, örneği API proxy trafiğini işleyen normal bir Edge Microgateway örneği olarak çalışacak şekilde ayarlar ve örnek, yapılandırma verilerini Redis veritabanından alır.
edgemicro: redisHost: host_IP redisPort: host_port redisDb: database_index redisPassword: password edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Örneğin:
edgemicro: redisHost: 192.168.4.77 redisPort: 6379 redisDb: 0 redisPassword: codemaster edge_config: synchronizerMode: 0 redisBasedConfigCache: true
Yapılandırma özellikleri
Senkronizasyon aracının kullanımını desteklemek için aşağıdaki yapılandırma özellikleri eklenmiştir:
| Özellik | Değerler | Açıklama |
|---|---|---|
edge_config.synchronizerMode |
0 veya 1 | 0 (varsayılan) ise Edge Microgateway standart modunda çalışır. 1 ise Edge Microgateway örneğini senkronizasyon aracı olarak çalışacak şekilde başlatın. Bu modda örnek, yapılandırma verilerini Apigee Edge'den alır ve yerel bir Redis veritabanında depolar. Bu örnek, API proxy isteklerini işleyemez. Tek amacı, yapılandırma verileri için Apigee Edge'i sorgulamak ve bu verileri yerel veritabanına yazmaktır. Ardından, diğer mikro ağ geçidi örneklerini veritabanından okuyacak şekilde yapılandırmanız gerekir. |
edge_config.redisBasedConfigCache |
doğru veya yanlış | Doğru ise Edge Microgateway örneği, yapılandırma verilerini Apigee Edge yerine Redis veritabanından getirir. Redis veritabanı, senkronizasyon aracının yazmak üzere yapılandırıldığı veritabanıyla aynı olmalıdır. Redis veritabanı kullanılamıyorsa veya veritabanı boşsa mikro ağ geçidi, yapılandırması için mevcut bir cache-config.yaml dosyası arar.
Yanlış ise (varsayılan) Edge Microgateway örneği, yapılandırma verilerini her zamanki gibi Apigee Edge'den getirir. |
edgemicro.config_change_poll_interval |
Saniye cinsinden zaman aralığı | Senkronizasyon aracının Apigee Edge'den veri çekmesi için yoklama aralığını belirtir. |
Eklentiler için hariç tutulan URL'leri yapılandırma
Mikro ağ geçidini, belirtilen URL'ler için eklentilerin işlenmesini atlayacak şekilde yapılandırabilirsiniz. Bu "hariç tutma" URL'lerini genel olarak (tüm eklentiler için) veya belirli eklentiler için yapılandırabilirsiniz.
Örneğin:
...
edgemicro:
...
plugins:
excludeUrls: '/hello,/proxy_one' # global exclude urls
sequence:
- oauth
- json2xml
- quota
json2xml:
excludeUrls: '/hello/xml' # plugin level exclude urls
...
Bu örnekte, eklentiler /hello veya /proxy_one yollarına sahip gelen API proxy çağrılarını işlemez. Ayrıca, yolunda /hello/xml bulunan API'ler için json2xml eklentisi atlanır.
Yapılandırma özelliklerini ortam değişkeni değerleriyle ayarlama
Yapılandırma dosyasındaki etiketleri kullanarak ortam değişkenlerini belirtebilirsiniz. Belirtilen ortam değişkeni etiketleri, gerçek ortam değişkeni değerleriyle değiştirilir. Değişiklikler yalnızca bellekte saklanır, orijinal yapılandırma veya önbellek dosyalarında saklanmaz.
Bu örnekte, key özelliği TARGETS_SSL_CLIENT_KEY ortam değişkeninin değeriyle değiştirilir ve bu şekilde devam eder.
targets:
- ssl:
client:
key: <E>TARGETS_SSL_CLIENT_KEY</E>
cert: <E>TARGETS_SSL_CLIENT_CERT</E>
passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>
Bu örnekte, <n> etiketi bir tam sayı değerini belirtmek için kullanılır. Yalnızca pozitif tam sayılar desteklenir.
edgemicro: port: <E><n>EMG_PORT</n></E>
Bu örnekte, <b> etiketi bir boole (yani doğru veya yanlış) değerini belirtmek için kullanılmıştır.
quotas: useRedis: <E><b>EMG_USE_REDIS</b></E>