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.

  • 1.000: 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ı başlıklı makaleyi inceleyin.

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ızda 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 uygulamanı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ı 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 Hosted Targets örneğiyle sınırlıdır.
  • Ücretli Apigee Edge hesapları, istek oranına, yanıt gecikmelerine ve proxy başına diğer uygulama metriklerine göre otomatik ölçeklendirme alır.
  • Hem ücretli hem de deneme sürümlerine dağıtılan Hosted Targets uygulamaları, etkinlik olmadığı dönemlerde sıfıra ölçeklenir. Bu durumda, kısa bir süre boyunca yanıt sürelerinin yavaşladığını fark edebilirsiniz. Ayrıca Bilinen sorunlar

Manifest dosyası

Edge, barındırılan uygulamayı oluşturup dağıtmak için çalışma zamanı bilgilerini toplamak üzere resources/hosted 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.

Manifest 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

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

  • runtime: (Zorunlu) Dağıttığınız uygulamanın türünü belirtir. node değerini belirtmeniz gerekir.
  • 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 Node için resmi Docker deposuna bakın.
  • command: (İsteğe bağlı) Uygulamanızı başlatmak için kullanılan varsayılan komut dışında çalıştırılacak bir komut belirtmenize olanak tanır. Varsayılan: Node.js=npm
  • args: (İsteğe bağlı) Uygulamaya aktarılacak 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 başlangıç'tır. Örneğin, Node.js uygulamasına varsayılan olarak npm start komutu iletilir.
  • env: (İsteğe bağlı) Hosted Targets çalışma zamanı ortamında ayarlanacak ortam değişkenleri (ad/değer çiftleri) dizisi. Bu değişkenler, dağıtılan barındırılan hedef uygulamanızda kullanılabilir.
    • name: Değişken adı.
    • value | valueRef: İki seçeneğiniz vardır. Değişmez değer ayarlayabilir veya anahtar/değer eşlemesinde saklanan bir değere başvurabilirsiniz. Anahtar/Değer Eşlemesi, Edge ortamınızda zaten mevcut olmalıdır. Anahtar/değer eşlemeleriyle çalışma başlıklı makaleyi inceleyin.
      • value özelliğini kullanıyorsanız bir değişken name ve bir değişmez value belirtmeniz gerekir. Örneğin:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • valueRef kullanıyorsanız, daha önce Edge'de oluşturduğunuz bir 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ı dağıtmak için manifest dosyası gerekir. Bu dosya, apiproxy/resources/hosted dizininde bulunmalı ve dosya adı app.yaml olmalıdır.

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

    Harf içeren bir ortam değişkenini belirten örnek:

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

    Başlatma 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şleme (KVM) referansı 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 hedef uygulamalar

    Apigee, GitHub'da Node.js ile yazılmış Hosted Targets uygulamaları içeren örnek proxy'ler sunar. Bu depoyu klonlayabilir ve README talimatlarını uygulayarak proxy'lerden herhangi birini dağıtabilirsiniz.

    Ön koşullar

    Örnekleri dağıtmak için sisteminizde iki aracın yüklü olması gerekir:

    • apigeetool: Edge proxy'lerini dağıtmak için kullanılan bir komut satırı aracıdır.
    • get_token: apigeetool tarafından gerekli olan yetkilendirme jetonunu almak için kullanılan bir komut satırı aracı.

    Örnekleri yerel olarak test etmek istiyorsanız Node.js'yi de yüklemeniz 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 ile <your install dir>/api-platform-samples/doc-samples/hosted-targets dizinine gidin.
    4. Depo indirildikten sonra örnek dizinlerden herhangi birine cd komutunu uygulayabilir ve Edge'e örnek bir proxy dağıtmak için README talimatlarını uygulayabilirsiniz. Dağıtma komutu aşağıda gösterilmiştir. Belirtilen parametreleri Apigee hesabınızın parametreleriyle 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 bir uygulamayı yürütme

    Örnekler 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 çıkış:

    {"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 işleminin 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 çıkış:

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

    Bilinen sorunlar

    • Ağ Gecikmeleri: Node.js uygulaması artık MP'nin JVM'sinde çalışmadığından MP ile dağıtım arasında bir ağ atlaması vardır. Elbette bu hizmetin bir maliyeti var ancak ilk karşılaştırmalar, maliyetin makul bir tutar 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 kadar ölçeklenebileceği anlamına gelir. Bu durumda, altyapı istekleri işlemek için örnekleri başlattığından bir sonraki API isteği, normal API isteklerinden biraz daha uzun sürer.
    • Dağıtım hatası: Hosted Targets proxy'si dağıtırken dağıtım hatası alırsanız proxy'yi yeniden dağıtmayı deneyin. Bazı durumlarda dağıtımın zaman aşımına uğraması söz konusu olabilir. Bu durumda, yeniden dağıtım yaptığınızda sorun kendiliğinden çözülür.