Edge Microgateway için işlem ve yapılandırma referansı

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, Edge Microgateway'in mevcut bir yüklemesini nasıl yükselteceğiniz 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.

  1. Edge Microgateway'in en yeni sürümüne yükseltmek için aşağıdaki npm komutunu çalıştırı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 son 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
  2. 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
        
  3. Son olarak, edgemicro-auth proxy'sini en son sürüme yükseltin:
    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ırması dosyası

Edge Microgateway'i yüklediğinizde varsayılan sistem yapılandırma dosyası şu konuma yerleştirilir:

prefix/lib/node_modules/edgemicro/config/default.yaml

Buradaki prefix, npm ön eki dizinidir. Bu dizini bulamıyorsanız Edge Microgateway nereye yüklenir? başlıklı makaleye bakın.

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 init
edgemicro 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'daki yapılandırma dosyasını değiştirirseniz Edge Microgateway'i yeniden yapılandırıp yeniden başlatmanız gerekir:

edgemicro stop
edgemicro 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 içinde dinamik bir yapılandırma dosyası oluşturulur. Dosya, şu düzene 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ı yapılandırma değişiklikleri yapmak ve ardından sıfır kapalı kalma süresiyle yeniden yüklemek için kullanabilirsiniz. Örneğin, bir eklenti ekleyip yapılandırırsanız aşağıda açıklandığı gibi herhangi bir kapalı kalma süresi yaşamadan yapılandırmayı yeniden yükleyebilirsiniz.

Edge Microgateway çalışıyorsa (sıfır kapalı kalma süresi seçeneği):

  1. 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 (ör. "test" veya "prod").
    • $KEY, yapılandırma komutu tarafından daha önce döndürülen anahtardır.
    • $SECRET, yapılandırma komutu tarafından daha önce döndürülen anahtardır.

    Örneğin:

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

Edge Microgateway durdurulursa:

  1. 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 (ör. "test" veya "prod").
    • $KEY, yapılandırma komutu tarafından daha önce döndürülen anahtardır.
    • $SECRET, yapılandırma komutu tarafından daha önce 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 saklanabilir:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

Bu değişkenleri ayarlamak isteğe bağlıdır. Bu parametreleri ayarlarsanız Edge Microgateway'i yapılandırmak ve başlatmak için komut satırı arayüzünü (CLI) kullandığınızda 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ü kuzeye giden 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'deki TLS tanıtılmakta ve kuzeye giden tek yönlü TLS'nin nasıl yapılandırılacağı gösterilmektedir.
2 yönlü Kuzeye Bağlı TLS'yi yapılandırma Bu video, Apigee Edge Microgateway'de TLS'yi yapılandırma ile ilgili ikinci videodur. Bu videoda, kuzeye doğru 2 yönlü TLS'nin nasıl yapılandırılacağı açıklanmaktadır.
Tek yönlü ve çift yönlü güney yönlü TLS'yi yapılandırma Apigee Edge Microgateway'de TLS'yi yapılandırma hakkındaki bu üçüncü videoda, güneye doğru tek yönlü ve iki 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ılmışken Edge Microgateway üzerinden API'leri "https" protokolüyle şu şekilde çağırabilirsiniz:

https://localhost:8000/myapi

Microgateway sunucusunda SSL'yi yapılandırmak için aşağıdaki adımları uygulayın:

  1. openssl yardımcı programını veya tercih ettiğiniz yöntemi kullanarak bir SSL sertifikası ve anahtarı oluşturun ya da edinin.
  2. edgemicro:ssl özelliğini Edge Microgateway yapılandırma dosyasına 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
  3. Edge Microgateway'i yeniden başlatın. Hangi yapılandırma dosyasını düzenlediğinize (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 belirtilen adımları uygulayın.

Aşağıda, yapılandırma dosyasının edgemicro bölümünün SSL yapılandırılmış bir örneği 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 listesini aşağıda bulabilirsiniz:

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 PFX biçiminde istemcinin özel anahtarını, sertifikasını ve CA sertifikalarını içeren bir pfx dosyasının yolu.
passphrase Özel anahtar veya PFX için parola içeren bir dize.
ca PEM biçiminde güvenilen sertifikaların listesini içeren bir dosyanın yolu.
ciphers Kullanılacak şifreleri açıklayan, ":" ile ayrılmış bir dize.
rejectUnauthorized Doğruysa sunucu sertifikası, sağlanan CA'ların listesine göre doğrulanır. Doğrulama başarısız olursa 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

Hedef uç noktalara bağlanırken Edge Microgateway'i TLS veya SSL istemcisi olacak şekilde yapılandırabilirsiniz. Microgateway yapılandırma dosyasında, SSL/TLS seçeneklerini ayarlamak için hedefler öğesini kullanın.

Bu örnekte, tüm ana makinelere uygulanacak ayarlar sağlanmaktadır:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

Bu ö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: true

TLS için bir örnek:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

Desteklenen tüm istemci seçeneklerinin listesini aşağıda bulabilirsiniz:

Seçenek Açıklama
pfx PFX biçiminde istemcinin özel anahtarını, sertifikasını ve CA sertifikalarını 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 içeren bir dize.
cert ca.cert dosyasının yolu (PEM biçiminde).
ca PEM biçiminde güvenilen sertifikaların listesini içeren bir dosyanın yolu.
ciphers Kullanılacak şifreleri açıklayan, ":" ile ayrılmış bir dize.
rejectUnauthorized Doğruysa sunucu sertifikası, sağlanan CA'ların listesine göre doğrulanır. Doğrulama başarısız olursa 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, varsayılan olarak OAuth2 kimlik doğrulaması için Apigee Edge'e dağıtılan bir proxy kullanır. Bu proxy, edgemicro configure'yı ilk kez çalıştırdığınızda dağıtılır. Bu proxy'nin varsayılan yapılandırmasını, JSON Web Jetonu'na (JWT) özel talepler için destek eklemek, jeton geçerlilik süresini yapılandırmak ve yenileme jetonları oluşturmak üzere değiştirebilirsiniz. Ayrıntılar için GitHub'daki edgemicro-auth sayfasına bakın.

Özel kimlik doğrulama hizmeti kullanma

Edge Microgateway, varsayılan olarak OAuth2 kimlik doğrulaması için Apigee Edge'e dağıtılan bir proxy kullanır. Bu proxy, edgemicro configure'yı 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 şekilde belirtilir:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

Kimlik doğrulama işlemini kendi özel hizmetinizle yapmak istiyorsanız yapılandırma dosyasındaki authUri değerini hizmetinize yönlendirecek şekilde değiştirin. Örneğin, kimliği 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 faydalı bilgiler sağlar.

Günlük dosyalarının depolandığı yer

Günlük dosyaları varsayılan olarak /var/tmp konumunda saklanı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 bir günlük dosyasına değil, standart çıkışa gönderilmesi için günlüğü yapılandırabilirsiniz. to_console işaretini aşağıdaki gibi "true" olarak ayarlayın:

edgemicro:
  logging:
    to_console: true

Bu ayarla birlikte 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. INFO düzeyinin kullanılması önerilir. Tüm API isteklerini ve yanıtlarını günlüğe kaydeder ve 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 ayarlayabilirsiniz. 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ığı aralık (saniye cinsinden).
  • rotate_interval: (varsayılan: 24) Günlük dosyalarının döndürüldüğü saat aralığı. Ö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

İyi günlük dosyası bakım uygulamaları

Günlük dosyası verileri zaman içinde biriktikçe Apigee aşağıdaki uygulamaları benimsemenizi önerir:

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'ye gönderilen her şeyi günlüğe kaydeder.
  • out: stdout'a gönderilen her şeyi günlüğe kaydeder.

Adlandırma kuralı şöyledir:

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

Eklendiği sürüm: 2.3.3

Varsayılan olarak, günlük kaydı hizmeti indirilen proxy'lerin, ürünlerin ve JSON Web Jetonu'nun (JWT) JSON'unu atlar. Bu nesneleri günlük dosyalarına çıkarmak istiyorsanız Edge Microgateway'i başlatırken DEBUG=* değerini ayarlayın. Örneğin:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

tuşunu kullanma

"api" günlük dosyasının içeriği

"api" günlük dosyası, Edge Microgateway üzerinden istek ve yanıt akışıyla ilgili 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:

  • İstemciden gelen istek
  • Hedefe giden istek yapıldı
  • Hedeften gelen yanıt
  • Müşteriye giden yanıt

Bu ayrı girişlerin her biri, günlük dosyalarını daha kompakt hale getirmek için kısa bir notasyonla gösterilir. 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 dokümanda 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 istatistikler, uyarılar için uyarı veya hatalar için hata olabilir.
  • req: Etkinliği tanımlar. Bu durumda, istemciden isteyin.
  • m: İstekle 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 gecikmesi hakkında değerli bilgiler sağlayabilir.
  • d: İstek Edge Microgateway tarafından alındıktan sonra geçen süre (milisaniye cinsinden). Yukarıdaki örnekte, 0 numaralı isteğin hedef yanıtı 7 milisaniye sonra (3. satır) alınmış ve yanıt, 4 milisaniye daha geçtikten sonra (4. satır) istemciye gönderilmiştir. Başka bir deyişle, toplam istek gecikmesi 11 milisaniyeydi. Bunun 7 milisaniyesi hedef tarafından, 4 milisaniyesi ise Edge Microgateway'in kendisi tarafından kullanıldı.

2. Hedefe yapılan giden isteğin ö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 istatistikler, uyarılar için uyarı veya hatalar için hata 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 makinesi 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. Hedeften gelen yanıttan örnek

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 istatistikler, uyarılar için uyarı veya hatalar için hata olabilir.
  • tres: Etkinliği tanımlar. Bu durumda hedef yanıt.
  • s: HTTP yanıt durumu.
  • d: Süre (milisaniye cinsinden). Hedef tarafından API çağrısı için geçen süre.
  • i: Günlük girişinin kimliği. Dört etkinlik girişinin tümü bu kimliği paylaşır.

4. Müşteriye gönderilen yanıttan örnek

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 istatistikler, uyarılar için uyarı veya hatalar için hata olabilir.
  • res: Etkinliği tanımlar. Bu durumda, istemciye yanıt verilir.
  • s: HTTP yanıt durumu.
  • d: Süre (milisaniye cinsinden). Bu, hedef API'nin aldığı süre ve Edge Microgateway'in aldığı süre dahil olmak üzere API çağrısının aldığı 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. Girişler, rotasyon aralığı sona erene kadar aynı günlük dosyasına 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. Ayrıca İyi günlük dosyası bakımı 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 özgü 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 edgemicro genkeys ç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.
  • jwt_public_key: (varsayılan: yok) Apigee Edge'de dağıtılan Edge Microgateway proxy'sini işaret eden bir URL. Bu proxy, istemcilere imzalı erişim jetonları vermek için kimlik doğrulama uç noktası olarak işlev görür. Bu URL, proxy'yi dağıtma komutunu (edgemicro configure) yürüttüğünüzde döndürülür. Ayrıntılar için Edge Microgateway'i kurma ve yapılandırma başlıklı makaleyi inceleyin.
  • quotaUri: Kuruluşunuza dağıtılan edgemicro-auth proxy'si üzerinden kotaları 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 sürecini yapılandırır.

  • port: (varsayılan: 8000) Edge Microgateway sürecinin 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, bu değeri max_connections değerinden büyük bir sayıya ayarlayın.
  • logging:
    • 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ığı aralık (saniye cinsinden).
    • rotate_interval: (varsayılan: 24) Günlük dosyalarının döndürüldüğü saat aralığı.
  • Eklentiler: Eklentiler, Edge Microgateway'e işlevsellik kazandırır. 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 sürecine iletilecek bağımsız değişkenler. Örneğin: args --nolazy
  • config_change_poll_interval: (varsayılan: 600 saniye) Edge Microgateway yeni bir yapılandırmayı düzenli olarak yükler ve herhangi bir değişiklik olursa yeniden yükleme gerçekleştirir. Yoklama, Edge'de yapılan tüm değişiklikleri (ürünlerde, mikro ağ geçidi farkında olan 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 istekleri için zaman aşımı ayarlar. 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) (v3.0.6'da eklendi)
  • headers_timeout: Bu özellik, HTTP ayrıştırıcının HTTP üstbilgilerinin tamamını almak için bekleyeceği süreyi (milisaniye cinsinden) sınırlar.

    Örneğin:

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    Dahili olarak, parametre isteklerde Node.js Server.headersTimeout<0xx0A> özelliğini ayarlar. (Varsayılan: edgemicro.keep_alive_timeout ile ayarlanan süreden 5 saniye fazla. Bu varsayılan ayar, yük dengeleyicilerin veya proxy'lerin bağlantıyı yanlışlıkla bırakmasını engeller.) (v3.1.1 sürümünde eklendi)

  • noRuleMatchAction: (Dize) accesscontrol eklentisinde belirtilen eşleşme kuralı çözümlenmezse (eşleşmezse) yapılacak işlem (erişime izin ver veya erişimi reddet). Geçerli değerler: ALLOW veya DENY Varsayılan: ALLOW (Eklendi: v3.1.7)
  • enableAnalytics: (varsayılan: doğru) Analytics eklentisinin yüklenmesini önlemek için özelliği yanlış olarak ayarlayın. Bu durumda, Apigee Edge Analytics'e herhangi bir çağrı yapılmaz. Bu politika doğru değerine ayarlanırsa veya bu özellik sağlanmazsa analiz eklentisi normal şekilde çalışır. Ayrıntılar için edgemicro özelliklerine bakın. (v3.1.8 sürümünde eklendi).

    Örnek:

    edgemicro
      enableAnalytics=false|true

başlık özellikleri

Bu ayarlar, belirli HTTP üstbilgilerinin nasıl işleneceğini yapılandırır.

  • x-forwarded-for: (varsayılan: doğru) x-forwarded-for başlıklarının hedefe iletilmesini önlemek için yanlış olarak ayarlayın. İstek içinde bir x-forwarded-for başlığı varsa değerinin Edge Analytics'teki client-ip değeri olarak ayarlanacağını unutmayın.
  • x-forwarded-host: (varsayılan: doğru) x-forwarded-host başlıklarının hedefe iletilmesini önlemek için yanlış olarak ayarlayın.
  • x-request-id: (varsayılan: doğru) x-request-id üstbilgilerinin hedefe iletilmesini önlemek için yanlış 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) Hedefe via üstbilgilerinin 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ınacağını yapılandırır.

  • allowNoAuthorization: (varsayılan: false) true olarak ayarlanırsa API çağrılarının, Edge Microgateway'den herhangi bir yetkilendirme başlığı olmadan geçmesine izin verilir. Yetkilendirme üstbilgisi gerektirmek için bunu false olarak ayarlayın (varsayılan).
  • allowInvalidAuthorization: (varsayılan: false) Doğru olarak ayarlanırsa, yetkilendirme üstbilgisinde iletilen jeton geçersiz veya süresi dolmuş olsa bile API çağrılarının iletilmesine izin verilir. Geçerli jetonların zorunlu olması 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, yetkilendirme üstbilgisini başka bir amaçla kullanması gerektiği durumlarda varsayılan değeri değiştirmek isteyebilirsiniz.
  • api-key-header: (varsayılan: x-api-key) Bir API anahtarını Edge Microgateway'e aktarmak için kullanılan başlığın veya sorgu parametresinin adı. Ayrıca API anahtarı kullanma başlıklı makaleyi de inceleyin.
  • keep-authorization-header: (varsayılan: false) True olarak ayarlanırsa istekte gönderilen yetkilendirme başlığı hedefe iletilir (korunur).
  • allowOAuthOnly: Doğru olarak ayarlanırsa her API, hamiline ait erişim jetonu içeren bir yetkilendirme üstbilgisi taşımalıdır. Geriye dönük uyumluluğu korurken yalnızca OAuth güvenlik modeline izin vermenizi sağlar. (2.4.x sürümünde eklendi)
  • allowAPIKeyOnly: Doğru olarak ayarlanırsa her API, API anahtarıyla bir x-api-key üstbilgisi (veya özel bir konum) taşımalıdır.Geriye dönük uyumluluğu korurken yalnızca API anahtarı güvenlik modeline izin vermenizi sağlar. (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 farklılıklardan kaynaklanan hataları önlemeye yardımcı olur. Bu parametreyi, bu tür tutarsızlıklar için izin verilecek saniye sayısına ayarlayın. (2.5.7 sürümünde eklendi)

Eklentiye özel özellikler

Her eklentinin yapılandırılabilir özellikleri hakkında ayrıntılı bilgi için Eklentileri kullanma başlıklı makaleyi inceleyin.

Filtreleme proxy'leri

Edge Microgateway örneğinin hangi microgateway'e duyarlı proxy'leri işleyeceğini filtreleyebilirsiniz. Edge Microgateway başlatıldığında, ilişkili olduğu kuruluştaki tüm microgateway'e duyarlı proxy'leri indirir. Mikro ağ geçidinin hangi proxy'leri işleyeceğini 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 üçle 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ünleri ada göre filtreleme

Edge Microgateway'in indirdiği ve 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 Edge Microgateway productnamefilter dosyasında listelenen /products API'ye *.config.yaml sorgu parametresini 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 aşağıdaki gibi 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 çıktısında, yalnızca filtrelenen ürünlerin indirildiği gösterilmektedir:

...
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:

  1. Edge kullanıcı arayüzünde, Edge Microgateway'i yapılandırdığınız kuruluş/ortamda edgemicro_auth proxy'sini seçin.
  2. Geliştirme sekmesinde JavaCallout politikasını düzenleyicide açın.
  3. Virgülle ayrılmış özellik adları listesiyle products.filter.attributes anahtarına sahip bir özel özellik ekleyin. Yalnızca özel özellik adlarından herhangi birini içeren ürünler Edge Microgateway'e döndürülür.
  4. İsteğe bağlı olarak, products.filter.env.enable özel özelliğini false olarak ayarlayarak ürünün mevcut ortam için etkin olup olmadığını kontrol etme işlemini devre dışı bırakabilirsiniz. (Varsayılan değer true'dur.)
  5. (Yalnızca Private Cloud) Edge for Private Cloud kullanıyorsanız CPS dışı ortamlar için ürün çekmek üzere org.noncps özelliğini true olarak ayarlayın.
  6. Ö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>

Analiz verilerinin gönderilme sıklığını yapılandırma

Edge Microgateway'in Apigee'ye analiz verilerini gönderme sıklığını kontrol etmek için bu yapılandırma parametrelerini kullanın:

  • bufferSize (İsteğe bağlı): Arabelleğin en eski kayıtları bırakmaya başlamadan önce tutabileceği maksimum analiz kaydı sayısı. Varsayılan: 10.000
  • batchSize (İsteğe bağlı): Apigee'ye gönderilen bir analiz kayıtları grubunun maksimum boyutu. Varsayılan: 500
  • flushInterval (İsteğe bağlı): Apigee'ye gönderilen bir grup analiz kaydının her temizlenmesi arasındaki milisaniye sayısı. 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 Analytics'te görünmesini 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

Analiz eklentisini, belirli bir API yolunu Edge Analytics kontrol panellerinde ayrı bir proxy olarak görünecek şekilde ayıracak şekilde yapılandırabilirsiniz. Örneğin, gerçek API proxy'si çağrılarıyla karıştırılmaması için kontrol panelinde bir sağlık durumu kontrolü API'sini ayırabilirsiniz. Analytics kontrol panelinde, ayrılmış proxy'ler şu adlandırma kalıbını kullanır:

edgemicro_proxyname-health

Aşağıdaki resimde, Analytics kontrol panelinde iki ayrılmış 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 şu parametreleri kullanın:

  • relativePath (İsteğe bağlı): Analytics kontrol panelinde ayrılacak göreli bir yolu belirtir. Örneğin, /healthcheck değerini belirtirseniz /healthcheck yolunu içeren tüm API çağrıları kontrol panelinde edgemicro_proxyname-health olarak görünür. Bu işaretin, proxy temel yolunu yoksaydığını unutmayın. Basepath dahil tam yola göre ayırmak için proxyPath işaretini kullanın.
  • proxyPath (İsteğe bağlı): Analiz kontrol panelinde ayrılacak olan proxy temel yolu da dahil olmak üzere tam bir API proxy yolu belirtir. Örneğin, /mocktarget/healthcheck değerini belirtirseniz, (/mocktarget proxy'nin temel yolu) /mocktarget/healthcheck yoluyla yapılan tüm API çağrıları kontrol panelinde edgemicro_proxyname-health olarak 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 durumda, /foo/healthcheck ve /foo/bar/healthcheck, Analytics 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
  relativePath: /healthcheck

Aşağıdaki yapılandırmada, /mocktarget/healthcheck proxy yoluna sahip 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/healthcheck

Edge Microgateway'i şirket güvenlik duvarı arkasında ayarlama

Apigee Edge ile iletişim için HTTP proxy kullanma

3.1.2 sürümünde eklendi.

Edge Microgateway ile Apigee Edge arasındaki iletişim için HTTP proxy kullanmak üzere aşağıdakileri yapın:

  1. HTTP_PROXY, HTTPS_PROXY ve NO_PROXY ortam değişkenlerini ayarlayın. Bu değişkenler, Apigee Edge ile iletişim için kullanmak istediğiniz her HTTP proxy'nin ana makinelerini veya hangi ana makinelerin Apigee Edge ile iletişimi işlememesi gerektiğini 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'sini kullanmaması gereken alan adlarını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.

  2. Edge Microgateway'i yeniden başlatın.

Hedef iletişim için HTTP proxy kullanma

3.1.2 sürümünde eklendi.

Edge Microgateway ile arka uç hedefleri arasındaki iletişim için HTTP proxy kullanmak üzere aşağıdakileri yapın:

  1. Microgateway 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 | false

    Burada:

    • tunnel: (İsteğe bağlı) Doğru olduğunda Edge Microgateway, HTTP isteklerini tek bir TCP bağlantısı üzerinden tünel oluşturmak için HTTP CONNECT yöntemini kullanır. (Aşağıda belirtildiği gibi, proxy'yi yapılandırmak için ortam değişkenlerinde TLS etkinleştirilmişse de aynı durum geçerlidir.) Varsayılan: false
    • url: HTTP proxy URL'si.
    • bypass: (İsteğe bağlı) HTTP proxy'sini atlaması gereken virgülle ayrılmış bir veya daha fazla hedef ana makine URL'si belirtir. Bu özellik ayarlanmamışsa hangi hedef URL'lerin atlanacağını belirtmek için NO_PROXY ortam değişkenini kullanın.
    • etkin: Doğruysa ve proxy.url ayarlanmışsa HTTP proxy için proxy.url değeri kullanılır. Doğruysa ve proxy.url ayarlanmamışsa Apigee Edge ile iletişim için HTTP proxy kullanma bölümünde açıklandığı gibi, HTTP proxy ortam değişkenlerinde HTTP_PROXY ve HTTPS_PROXY 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

  2. Edge Microgateway'i yeniden başlatın.

Microgateway'e duyarlı proxy'lerde joker karakterleri kullanma

edgemicro_* (Microgateway'e duyarlı) proxy'nin temel yolunda bir veya daha fazla "*" joker karakteri kullanabilirsiniz. Örneğin, /team/*/members temel yolu, yeni ekipleri desteklemek için yeni API proxy'leri oluşturmanıza gerek kalmadan istemcilerin https://[host]/team/blue/members ve https://[host]/team/green/members adreslerini çağırmasına olanak tanır. /**/'nın desteklenmediğini unutmayın.

Önemli: Apigee, temel yolun ilk öğesi olarak joker karakter "*" kullanımını DESTEKLEMEZ. Örneğin, /*/ araması desteklenmez.

JWT anahtarlarını döndürme

Bir JWT'yi ilk oluşturduktan bir süre sonra, Edge şifrelenmiş KVM'de depolanan ortak/gizli anahtar çiftini değiştirmeniz gerekebilir. Yeni bir anahtar çifti oluşturma işlemine anahtar rotasyonu denir.

Edge Microgateway, JWT'leri nasıl kullanır?

JSON Web Token (JWT), RFC7519'da açıklanan bir jeton standardıdır. JWT, bir dizi talebi imzalamanın bir yolunu sunar. Bu talepler, JWT'nin alıcısı tarafından güvenilir bir şekilde doğrulanabilir.

KSA'yı kullanarak JWT oluşturabilir ve API çağrılarının yetkilendirme üstbilgisinde API anahtarı yerine kullanabilirsiniz. Örneğin:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

KSA ile JWT oluşturma hakkında bilgi için Jeton oluşturma başlıklı makaleyi inceleyin.

Anahtar rotasyonu nedir?

Bir JWT'yi ilk oluşturduktan bir süre sonra, Edge şifrelenmiş KVM'de depolanan ortak/gizli anahtar çiftini değiştirmeniz gerekebilir. Yeni bir anahtar çifti oluşturma işlemine anahtar rotasyonu denir. Anahtarları döndürdüğünüzde 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 son oluşturulan) RSA özel anahtarı.

  • public_key: private_key ile imzalanan JWT'leri doğrulamak için kullanılan en son (en son oluşturulan) sertifika.

  • private_key_kid: En son (en son oluşturulan) özel anahtar kimliği. Bu anahtar kimliği, private_key değeriyle ilişkilendirilir 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şkilendirilir ve anahtar rotasyonunu desteklemek için kullanılır. Bu değer, özel anahtarın kimliğiyle aynıdır.

  • public_key1: En son (en son oluşturulan) ortak anahtar.

Anahtar rotasyonu yaptığınızda, haritadaki mevcut anahtar değerleri 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şkilendirilir 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 30 dakika) eski ortak anahtar kullanılır. Bu şekilde, API trafiğini hemen kesintiye uğratmadan anahtarları "döndürebilirsiniz".

Anahtar rotasyonu nasıl yapılır?

Bu bölümde, anahtar rotasyonu işleminin nasıl yapılacağı açıklanmaktadır.

  1. KVM'yi yükseltmek için edgemicro upgradekvm komutunu kullanın. Bu komutu çalıştırma hakkında ayrıntılı bilgi için KVM'yi yükseltme başlıklı makaleyi inceleyin. Bu adımı yalnızca bir kez uygulamanız gerekir.
  2. edgemicro-oauth proxy'sini yükseltmek için edgemicro upgradeauth komutunu kullanın. Bu komutu çalıştırma hakkında ayrıntılı bilgi için edgemicro-auth proxy'sini yükseltme başlıklı makaleyi inceleyin. Bu adımı yalnızca bir kez uygulamanız gerekir.
  3. ~/.edgemicro/org-env-config.yaml dosyanıza aşağıdaki satırı ekleyin. Bu satırda, mikro ağ geçidini kullanacak şekilde yapılandırdığınız kuruluş ve ortamı belirtmeniz gerekir:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. Anahtarları döndürmek için anahtar rotasyonu komutunu çalıştırın. Bu komutla ilgili ayrıntılar için Anahtarları döndürme 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ğerine sahip olduğunu unutmayın. Mikro ağ geçidi daha sonra yetkilendirme jetonlarını doğrulamak için bu anahtarları kullanır. Jeton doğrulaması başarısız olursa mikro ağ geçidi, anahtar kümesinde daha eski bir anahtar olup olmadığını kontrol eder ve bu anahtarı dener. Döndürülen anahtarların biçimi JSON Web Key (JWK) şeklindedir. Bu biçim hakkında bilgiyi RFC 7517'de bulabilirsiniz.

{
  "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"
    }
  ]
}

"Not before" gecikmesini yapılandırma

3.1.5 ve önceki sürümlerde, rotatekey komutuyla oluşturulan yeni özel anahtar hemen geçerlilik kazanıyordu ve oluşturulan yeni jetonlar yeni özel anahtarla imzalanıyordu. Ancak, yeni ortak anahtar, mikro ağ geçidi yapılandırması yenilendiğinde yalnızca 10 dakikada bir (varsayılan olarak) Edge Microgateway örneklerinde kullanılabilir hale getirildi. Jeton imzalama ile mikro ağ geçidi örneği yenileme arasındaki bu gecikme nedeniyle, tüm örnekler en son ortak anahtarı alana kadar en son anahtarla imzalanan jetonlar reddedilir.

Birden fazla mikro ağ geçidi örneğinin bulunduğu durumlarda, ortak anahtar gecikmesi bazen durum 403 ile aralıklı çalışma zamanı hatalarına neden oluyordu. Bunun nedeni, tüm örnekler yenilenene kadar jeton doğrulamasının bir örnekte başarılı olup 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 belirtmenize olanak tanır. Bu sayede, tüm mikro ağ geçidi örneklerinin yenilenmesi ve yeni genel anahtarı alması için zaman tanınır. Yeni işaret --nbf olup "öncesinde değil" anlamına gelir. 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

Gecikmenin, varsayılan olarak 10 dakika olan config_change_poll_internal yapılandırma ayarından daha uzun olması önerilir. Ayrıca edgemicro özelliklerine bakın.

İndirilen proxy'leri filtreleme

Edge Microgateway, varsayılan olarak Edge kuruluşunuzdaki "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.

  1. Edge Micro yapılandırma dosyanızı açın: ~/.edgemicro/org-env-config.yaml
  2. proxyPattern öğesini edge_config altına 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ün belirtme

Apigee Edge'de API proxy'leri içermeyen bir API ürünü oluşturabilirsiniz. Bu ürün yapılandırması, söz konusu ürünle ilişkili bir API anahtarının kuruluşunuzda dağıtılan herhangi bir proxy ile çalışmasına olanak tanır. Edge Microgateway, 2.5.4 sürümünden itibaren bu ürün yapılandırmasını desteklemektedir.

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 özellik, özel eklentilerde sorun giderme ve hata ayıklama için kullanışlıdır.

  1. Edge Microgateway'i hata ayıklama modunda yeniden başlatın. Bunu yapmak için DEBUG=* komutunun başına start 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

  2. 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.
  3. Artık Edge Microgateway kodunda adım adım ilerleyebilir, kesme noktaları ayarlayabilir, ifadeleri izleyebilir vb.

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ını kontrol etme

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 istekte bulunan istemcilerin kimliğini doğrulamak için basit bir mekanizma sağlar. Edge Microgateway kimlik doğrulama proxy'si içeren bir Apigee Edge ürününden Tüketici Anahtarı (İstemci Kimliği olarak da adlandırılır) değerini kopyalayarak API anahtarı edinebilirsiniz.

Anahtarların önbelleğe alınması

API anahtarları, taşıyıcı jetonlarla değiştirilir ve bu jetonlar önbelleğe alınır. Gelen Edge Microgateway isteklerinde Cache-Control: no-cache başlığını ayarlayarak önbelleğe almayı devre dışı bırakabilirsiniz.

Bir API anahtarını kullanma

API anahtarını bir API isteğinde sorgu parametresi olarak veya başlıkta iletebilirsiniz. Varsayılan olarak, hem başlık hem de sorgu parametresi adı x-api-key olur.

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ı başlığı hem de sorgu parametresi için x-api-key adı kullanılır. Bu varsayılan ayarı, Yapılandırma değişiklikleri yapma bölümünde açıklandığı gibi yapılandırma dosyasında 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 başlık adı apiKey olarak değiştirilir. x-api-key adı artık her iki durumda da çalışmayacak. Ayrıca 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.

Yukarı 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. Mikro ağ geçidi üzerinden güvenli API çağrıları yapmak için erişim jetonları 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.

Ayrıca edgemicro token KSA 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şunuzun ve ortamınızın adlarını, Apigee Edge'deki bir geliştirici uygulamasından alınan tüketici kimliği ve tüketici gizli anahtarı değerlerini ise 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 Temel Kimlik Doğrulama üstbilgisinde gönderme

İstemci kimlik bilgilerini Temel Kimlik Doğrulama başlığı olarak, grant_type değerini ise form parametresi olarak gönderin. Bu komut biçimi, RFC 6749: The OAuth 2.0 Authorization Framework (OAuth 2.0 Yetkilendirme Çerçevesi) adlı dokümanda da ele alınmaktadı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 çıktı

API, bir 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/token uç noktasına API çağrısı yapın. Bu API çağrısını password izin türüyle YAPMALISINIZ. Aşağıdaki adımlarda süreç açıklanmaktadır.

  1. /token API'si ile erişim ve yenileme jetonu alın. İzin türünün password olduğ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 şu şekilde görünür:

    {
        "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"
    }
  2. Artık aynı API'nin /refresh uç 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 şu şekilde görünür:

    {
        "token": "your-new-access-token"
        }

Sürekli izleme

Forever, işlem çöktüğünde veya hata oluştuğunda 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 adlı bir Forever hizmetini yapılandırır.

forever.json dosyasını Edge Microgateway'in kök yükleme dizininde bulabilirsiniz. Edge Microgateway nereye yüklenir? başlıklı makaleyi inceleyin. Yapılandırma seçenekleri hakkında ayrıntılı bilgi için forever-monitor belgelerine bakın.

edgemicro forever komutu, forever.json dosyasının konumunu (-f işareti) belirtmenize ve Forever izleme sürecini başlatıp 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 Sürekli izleme bölümüne bakın.

Yapılandırma dosyası bitiş noktası belirtme

Birden fazla Edge Microgateway örneği çalıştırıyorsanız yapılandırmalarını tek bir konumdan yönetmek isteyebilirsiniz. Bunu, Edge Micro'nun yapılandırma dosyasını indirebileceği bir HTTP uç noktası belirterek yapabilirsiniz. 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 adlandırma kuralı org-env-config.yaml şeklindedir.

TCP bağlantısı verilerinin arabelleğe alınmasını 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.

TCP bağlantıları, verileri göndermeden önce arabelleğe almak için varsayılan olarak 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 ayrıntı için Node.js dokümanlarını da inceleyin.

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.

Aşağıdaki özellikler, Apigee Edge'e bağlantı gerektirdiğinden bağımsız modda çalışmaz:

  • OAuth ve API anahtarı
  • Kota
  • Analytics

Öte yandan, özel eklentiler ve ani artış önleme özelliği, Apigee Edge'e bağlantı gerektirmediği için normal şekilde çalışır. Ayrıca, extauth adlı yeni bir eklenti, bağımsız moddayken JWT ile mikro ağ geçidine yapılan API çağrılarını 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:

  1. Aşağıdaki gibi 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
  2. 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
  3. Aşağıdaki ortam değişkenini "1" değeriyle dışa aktarın:
    export EDGEMICRO_LOCAL=1
  4. Yerel proxy'yi oluşturmak için değerler sağladığınız aşağıdaki start komutunu ç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 "org" adıdır.
    • $ENV, yapılandırma dosyasında kullandığınız "env" adıdır. adı.
    • $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'nin 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 temel yol 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 /
  5. Yapılandırmayı test edin.
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    extauth eklentisi foo-bar-config.yaml dosyasında olduğundan "missing_authorization" hatası alırsınız. Bu eklenti, API çağrısının Authorization (Yetkilendirme) üstbilgisinde bulunması gereken bir JWT'yi doğrular. Bir sonraki bölümde, API çağrılarının hatasız şekilde yapılmasını sağlayacak bir JWT elde edeceksiniz.

Ö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ı yaptığınızda dağıtılır. Apigee uç noktasından JWT'yi 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ı olarak kullanılmaktadır ve zorunlu değildir. İsterseniz başka bir JWT jetonu 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ı kullanılarak jetonun nasıl alınacağı açıklanmaktadır:

  1. edgemicro-auth proxy'sini Apigee Edge'deki kuruluşunuza/ortamınıza dağıtmak için Edge Microgateway'in standart kurulumunu ve yapılandırmasını yapmanız gerekir. Bu adımı daha önce yaptıysanız tekrar yapmanız gerekmez.
  2. Edge Microgateway'i Apigee Cloud'a dağıttıysanız bu uç noktadan JWT alabilmek için internete bağlı olmanız gerekir.
  3. Edge Microgateway'i durdurma:
    edgemicro stop
  4. 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ızdaki edgemicro-auth/jwkPublicKeys uç noktasına yönlendirin. Örneğin:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. 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 /
  6. Yetkilendirme uç noktasından JWT jetonu alın. edgemicro-auth/jwkPublicKeys uç 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.
  • i seçeneği, edgemicro-auth proxy'sini içeren bir ürünü olan geliştirici uygulamasının tüketici anahtarını belirtir.
  • s seçeneği, edgemicro-auth proxy'sini içeren bir ürüne sahip geliştirici uygulamasından alınan 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.

Ayrıca 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 yetkilendirme üstbilgisine eklenen jetonla aşağıdaki şekilde ç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 modunu kullanma

Yerel proxy modunda Edge Microgateway'in Apigee Edge'e dağıtılması için microgateway'e duyarlı bir proxy gerekmez. Bunun yerine, mikro ağ geçidini başlatırken yerel proxy adı, temel yol ve hedef URL sağlayarak "yerel proxy" yapılandırırsınız. Mikro ağ geçidine yapılan API çağrıları daha sonra 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ışları önleme ve kota zorlama, özel eklentiler vb. aynı şekilde çalışır.

Kullanım alanı ve örnek

Yerel proxy modu, yalnızca tek bir proxy'yi Edge Microgateway örneğiyle ilişkilendirmeniz gerektiğinde kullanışlıdır. Örneğin, Edge Microgateway'i Kubernetes'e sidecar proxy olarak yerleştirebilirsiniz. Bu durumda, bir mikro ağ geçidi ve bir hizmet tek bir kapsülde çalışır ve mikro ağ geçidi, eşlik eden hizmetine giden ve bu hizmetten gelen trafiği yönetir. Aşağıdaki şekilde, Edge Microgateway'in Kubernetes kümesinde yardımcı proxy olarak işlev gördüğü bu mimari gösterilmektedir. Her mikro ağ geçidi örneği, yalnızca eşlik eden hizmetindeki tek bir uç noktayla iletişim kurar:

Yardımcı olarak Edgemicro

Bu mimari stilinin avantajlarından biri, Edge Microgateway'in Kubernetes kümesi gibi bir kapsayıcı ortamına dağıtılan bağımsız 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:

  1. Yerel yapılandırma ortamınızı, tipik bir Edge Microgateway kurulumunda olduğu gibi ayarlamak için edgemicro init komutunu çalıştırın. Ayrıca Edge Microgateway'i yapılandırma başlıklı makaleyi de inceleyin.
  2. edgemicro configure komutunu, normal bir Edge Microgateway kurulum prosedüründe olduğu gibi ç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 mikro ağ geçidini başlatmak için ihtiyacınız olan bir anahtar ve gizli dizi döndürür. Yardıma ihtiyacınız varsa Edge Microgateway'i yapılandırma başlıklı makaleyi inceleyin.

  3. 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ı istediğiniz gibi yönetebilirsiniz):
    • Ürüne edgemicro-auth proxy'sini eklemeniz gerekir. Bu proxy, edgemicro configure komutunu çalıştırdığınızda otomatik olarak dağıtıldı.
    • Kaynak yolu sağlamanız gerekir. Apigee, bu yolu ürüne eklemenizi önerir: /**. Daha fazla bilgi için Kaynak yolunun davranışını yapılandırma başlıklı makaleyi inceleyin. Ayrıca Edge belgelerindeki API ürünleri oluşturma bölümüne de bakın.
  4. Apigee Edge'de bir geliştirici oluşturun veya isterseniz mevcut bir geliştiriciyi kullanabilirsiniz. Yardım için Edge yönetim kullanıcı arayüzünü kullanarak geliştirici ekleme başlıklı makaleyi inceleyin.

  5. 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.
  6. 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
  7. Aşağıdaki start komutunu çalıştırı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_path

    Burada:

    • your_org, Apigee kuruluşunuzdur.
    • your_environment, kuruluşunuzdaki bir ortamdır.
    • your_key, edgemicro configure komutunu çalıştırdığınızda döndürülen anahtardır.
    • your_secret, edgemicro configure komutunu ç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 URL'sidir (proxy'nin çağıracağı hizmet).
    • base_path, proxy'nin temel yoludur. Bu değer eğik çizgiyle başlamalıdır. Kök temel yol 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 yolu belirtirseniz proxy'yi aşağıdaki gibi çağırabilirsiniz:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

Bu ilk API çağrısı, geçerli bir API anahtarı sağlamadığınız için 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 şekilde 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, Edge Microgateway'in Apigee Edge'den yapılandırma verilerini almasına ve bunları yerel bir Redis veritabanına yazmasına olanak tanıyarak dayanıklılığını artıran isteğe bağlı bir özellik olan senkronize edicinin nasıl kullanılacağı açıklanmaktadır. Bir senkronize edici örneği çalışırken farklı düğümlerde çalışan diğer Edge Microgateway örnekleri, yapılandırmalarını doğrudan bu veritabanından alabilir.

Senkronize edici özelliği şu anda Redis 5.0.x ile çalışacak şekilde desteklenmektedir.

Senkronizasyon aracı nedir?

Senkronize edici, Edge Microgateway için bir esneklik düzeyi sağlar. Bu, Edge Microgateway'in her ö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ı kesintiye uğrarsa 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 başlatmak ve API proxy trafiğini işlemek için ihtiyaç duydukları yapılandırma verilerini almalarına yönelik alternatif bir mekanizma sağlar. Apigee Edge'e yapılan çağrılardan alınan yapılandırma verileri şunları içerir: jwk_public_keys çağrısı, jwt_public_key çağrısı, bootstrap çağrısı ve API ürünleri çağrısı. Senkronizasyon aracı, farklı düğümlerde çalışan tüm Edge Microgateway örneklerinin, Edge Microgateway ile Apigee Edge arasındaki internet bağlantısı kesilse bile düzgün şekilde başlatılmasını ve senkronize kalmasını sağlar.

Senkronize edici, Edge Microgateway'in özel olarak yapılandırılmış bir örneğidir. Tek amacı, Apigee Edge'i yoklamak (zamanlama yapılandırılabilir), yapılandırma verilerini almak ve bunları yerel bir Redis veritabanına yazmaktır. Senkronize edici örneği, API proxy trafiğini işleyemez. Farklı düğümlerde çalışan diğer Edge Microgateway örnekleri, yapılandırma verilerini Apigee Edge'den değil Redis veritabanından alacak şekilde yapılandırılabilir. Tüm mikro ağ geçidi örnekleri yapılandırma verilerini yerel veritabanından çektiğinden internet kesintisi olsa bile başlatılabilir ve API isteklerini işleyebilir.

Senkronize edici örneğini yapılandırma

Senkronize edici olarak kullanmak istediğiniz Edge Microgateway yüklemesi 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 yoklamaya 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 Edge Microgateway örneklerini çalıştıracak ek Edge Microgateway düğümleri yapılandırabilirsiniz. Ancak bu örnekleri, yapılandırma verilerini Apigee Edge'den değil 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. Ö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

Senkronize edicinin 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 senkronize edici olarak çalıştırın. Bu modda örnek, yapılandırma verilerini Apigee Edge'den çeker 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 yoklamak ve bunları 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ğruysa Edge Microgateway örneği, yapılandırma verilerini Apigee Edge'den değil Redis veritabanından alır. Redis veritabanı, senkronizasyon aracının yazmak üzere yapılandırıldığı veritabanı 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ışsa (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ç tutulan" URL'leri 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ıyla gelen API proxy çağrılarını işlemez. Ayrıca, yollarında /hello/xml bulunan API'ler için json2xml eklentisi atlanır.

Ortam değişkeni değerleriyle yapılandırma özelliklerini ayarlama

Yapılandırma dosyasındaki etiketleri kullanarak ortam değişkenlerini belirtebilirsiniz. Belirtilen ortam değişkeni etiketlerinin yerine gerçek ortam değişkeni değerleri getirilir. Değişiklikler yalnızca bellekte saklanır ve 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.

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, bir tam sayı değerini belirtmek için <n> etiketi kullanılmaktadır. Yalnızca pozitif tam sayılar desteklenir.

edgemicro:
  port: <E><n>EMG_PORT</n></E>

Bu örnekte, Boole değerini (yani doğru veya yanlış) belirtmek için <b> etiketi kullanılır.

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>