Barındırılan Hedefler referansı

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ortam değişkeni sınırları

Barındırılan Hedefler, Barındırılan Hedefler çalışma zamanı ortamında ayarlayabileceğiniz ortam değişkenlerinin boyutunu ve sayısını sınırlar.

  • 1000: Tek bir ortam değişkeninin maksimum uzunluğu.
  • 100: Ayarlayabileceğiniz maksimum ortam değişkeni sayısı.

Ortam değişkenlerini ayarlama hakkında bilgi için Manifest dosyası bölümüne bakın.

Uygulama çalışma zamanında ayarlanan ortam değişkenleri

Barındırılan Hedefler uygulamasını dağıttığınızda, aşağıdaki ortam değişkenleri ayarlanır ve çalışma zamanında uygulamanız tarafından kullanılabilir:

  • APIGEE_ENVIRONMENT - Barındırılan Hedef proxy'nin dağıtıldığı ortam.
  • APIGEE_ORGANIZATION - Barındırılan Hedef proxy'nin dağıtıldığı kuruluş.
  • PORT: Barındırılan Hedef uygulamasının dinlemesi gereken bağlantı noktası.

Sistem kaynağı tahsisi

Her bir Barındırılan Hedefler örneği aşağıdaki kaynakları alır:

  • 256 MB bellek
  • 1,2 GHz CPU

Ölçeklendirme

Bu bölümde, Barındırılan Hedefler uygulamalarının, sahip olduğunuz Edge hesabının türüne bağlı olarak nasıl ölçeklendiği açıklanmaktadır.
  • Apigee Edge'in deneme sürümü, proxy başına bir adet Barındırılan Hedefler örneğiyle sınırlıdır.
  • Ücretli Apigee Edge hesapları; istek oranı, yanıt gecikmeleri ve proxy başına diğer uygulama metriklerine göre otomatik ölçeklendirme alabilir.
  • Barındırılan Hedefler, Apigee Edge'in hem ücretli hem de deneme sürümlerine dağıtılan uygulamalar etkinlik olmadığında sıfıra ölçeklenir. Bu durumda kısa bir süre boyunca daha yavaş yanıt süreleri görebilirsiniz. Bilinen sorunlar'a da göz atın.

Manifest dosyası

Edge, barındırılan uygulamayı derleme ve dağıtmayla ilgili çalışma zamanı bilgilerini toplamak için resources/host dizininde app.yaml adlı bir manifest dosyası arar. Bu dosya, Barındırılan Hedefler uygulamasını oluşturmak ve dağıtmak için gereken bilgileri içerir.

Manfiest dosyası söz dizimi

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

Manifest dosyası öğeleri

app.yaml manifest dosyası şu öğeleri içerir:

  • runtime - (Zorunlu) Dağıttığınız uygulamanın türünü belirtir. node belirtmelisiniz.
  • runtimeVersion - (İsteğe bağlı) Uygulamanızın kullandığı çalışma zamanı sürümü. Varsayılan: Node.js LTS (v10.x). Diğer seçenekler için Düğüm için Docker resmi deposuna bakın.
  • command - (İsteğe bağlı) Uygulamanızı başlatmak için kullanılan varsayılan komut dışında bir komut çalıştırmanızı sağlar. Varsayılan: Node.js=npm
  • args - (İsteğe bağlı) Uygulamaya geçirilecek komut satırı bağımsız değişkenleri dizisi (standart YAML dizisi söz diziminde belirtilir). Bunlar genellikle varsayılan komuta eklenir. Varsayılan değer, start'dır. Örneğin, Node.js uygulamasına varsayılan olarak npm start komutu iletilir.
  • env - (İsteğe bağlı) Barındırılan Hedefler çalışma zamanı ortamında ayarlanacak bir ortam değişkenleri (ad/değer çiftleri) dizisi. Bu değişkenler, dağıtılmış Barındırılan Hedefler uygulamanızda kullanılabilir.
    • ad: Değişken adı.
    • değer | valueRef: İki seçeneğiniz vardır. Değişmez bir değer ayarlayabilir veya Anahtar/Değer Eşlemesi'nde depolanan bir değere başvurabilirsiniz. Anahtar/Değer Eşlemesi, Edge ortamınızda zaten mevcut olmalıdır. Bkz. Anahtar/Değer Eşlemesi ile çalışma
      • value kullanıyorsanız bir name değişkeni ve bir değişmez değer value belirtmeniz gerekir. Örneğin:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • valueRef kullanıyorsanız daha önce Edge'de oluşturduğunuz Anahtar Değer Eşlemesi'nin (KVM) adını ve bir anahtarı sağlamanız gerekir. Örneğin:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    Örnek manifest dosyaları

    Bu bölümde, Node.js uygulamaları için örnek manifest dosyaları yer almaktadır. Barındırılan Hedefler uygulamasının dağıtımını yapmak için bir manifest dosyası gerekir. Bu dosya, apiproxy/resources/hosted dizininde yer almalıdır. Dosya adı ise app.yaml olmalıdır.

    Aşağıda, Node.js uygulamaları için örnek app.yaml (manifest) dosyaları verilmiştir.

    Aynen bir ortam değişkenini belirten örnek:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    Başlat komutu, komut satırı bağımsız değişkenleri ve ortam değişkeni içeren örnek.

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    Anahtar/Değer Eşlemesi (KVM) referansını belirten örnek:

    KVM erişimi hakkında daha fazla bilgi için Manifest dosyası bölümüne bakın.

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    GitHub'da örnek Barındırılan Hedefler uygulamaları

    Apigee, Node.js'de yazılmış Barındırılan Hedefler uygulamalarıyla GitHub'da örnek proxy'ler sağlar. Bu depoyu klonlayıp herhangi bir proxy'yi dağıtmak için BENİOKU talimatlarını uygulayabilirsiniz.

    Ön koşullar

    Örnekleri dağıtmak için sisteminizde iki araç yüklü olmalıdır:

    • Apigeetool -- Edge proxy'lerini dağıtmak için bir komut satırı aracı.
    • get_token - Apigeetool tarafından zorunlu tutulan bir yetkilendirme jetonu almak için kullanılan komut satırı aracı.

    Örnekleri yerel olarak test etmek istiyorsanız ayrıca Node.js'yi yüklemiş olmanız gerekir.

    Örnek depoyu edinme

    1. Tarayıcıda https://github.com/apigee/api-platform-samples adresine gidin.
    2. Klonla veya indir'i tıklayın ve tercih ettiğiniz yöntemi kullanarak depoyu yerel sisteminize çekin.
    3. cd öğesini <your install dir>/api-platform-samples/doc-samples/hosted-targets konumuna getirin
    4. Depo indirildikten sonra örnek dizinlerin herhangi birine cd gönderebilir ve Edge'e örnek bir proxy dağıtmak için BENİOKU talimatlarını uygulayabilirsiniz. Dağıtma komutu aşağıda gösterilmektedir. Belirtilen parametreleri Apigee hesabınızdaki parametrelerle değiştirmeniz yeterlidir:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    Örnek: Örnek uygulama yürütme

    Örnek deposunu klonlama

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    Uygulamayı yerel olarak test etme

    Bu yerel testi yapmak için Node.js'nin yüklü olması gerekir.

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    Örnek çıktı:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    Proxy'yi dağıtma

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    Dağıtımı test etme

    Dağıtımın tamamlanması birkaç dakika sürebilir. Dağıtım hatası alırsanız dağıtım komutunu tekrar çalıştırın.

    curl http://myorg-test.apigee.net/node-hosted-hello

    Örnek çıktı:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    Bilinen Sorunlar

    • Ağ Gecikmeleri - Artık Node.js uygulaması MP'nin JVM'sinde çalışmadığından MP ve dağıtım arasında bir ağ atlaması bulunmaktadır. Elbette bunun bir maliyeti var ancak başlangıç karşılaştırmaları bunun makul bir süre içinde olduğunu gösteriyor
    • Yavaş API Yanıtları: Uygulamalarınızı çalıştıran altyapı, ihtiyaca göre otomatik olarak ölçeklendirilir. Bu, uygulamanızın aslında sıfır örneğe ölçeklendirilebileceği anlamına gelir. Bu durumda, altyapı istekleri işlemek için örnekleri ayarladığından bir sonraki API isteği, tipik API isteklerinden biraz daha uzun sürer.
    • Dağıtım hatası - Barındırılan Hedefler proxy'sini dağıtırken dağıtım hatası alırsanız proxy'yi yeniden dağıtmayı deneyin. Bazı durumlarda dağıtım zaman aşımına uğrayabilir. Yeniden dağıtım yaparsanız sorun kendiliğinden çözülür.