Kubernetes entegrasyon görevleri

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

Özel eklenti ekleme

Özel eklentiler yazarak mikro ağ geçidine yeni özellikler ve işlevler ekleyebilirsiniz. Özel eklentiler, mikro ağ geçidinden geçen istekler ve yanıtlarla programatik olarak etkileşim kurmanıza olanak tanır.

Bu bölümde, eklentilerin Kubernetes kümenizde çalışan bir Edge Microgateway örneğine nasıl paketlenip dağıtılacağı açıklanmaktadır.

Bu bölümün geri kalanında, standart bir Edge Microgateway kurulumu için eklentiler yazma ve yapılandırma konusunda bilgi sahibi olduğunuz varsayılır. Değilse Özel eklentiler geliştirme başlıklı makaleyi inceleyin.

Eklentilerinizi paketleme

Özel eklentileri paketlemek için aşağıdaki adımları uygulayın:

  1. Basit bir eklenti yazma bölümündeki talimatlara göre eklentinizi yazın ve test edin.

  2. Eklenti kodunuzu uygun dizin yapısına yerleştirin. Eklenti dizinleri belirli bir yapıya uymalıdır. Aşağıdaki örnekte, izlemeniz gereken yapı gösterilmektedir. Burada response-uppercase ve request-headers, özel eklenti kodu içeren klasörlerin adlarıdır (bu adlar yalnızca örnektir, klasör adlarınız farklı olabilir):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd, plugin klasörüne taşındı.

  4. plugin klasöründe, plugins klasörünün tamamını zipleyin:

    zip -r plugins.zip plugins/

Docker görüntüsü oluşturma

  1. Zip dosyasının bulunduğu dizinde Dockerfile adlı yeni bir dosya oluşturun.
  2. Dockerfile dosyasına aşağıdaki kodu ekleyin ve dosyayı kaydedin:

    FROM gcr.io/apigee-microgateway/edgemicro:latest
    RUN apt-get install unzip
    COPY plugins.zip /opt/apigee/
    RUN chown apigee:apigee /opt/apigee/plugins.zip
    RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee"
    EXPOSE 8000
    EXPOSE 8443
    ENTRYPOINT ["entrypoint"]
    
  3. Eklentilerinizle yeni bir Edge Microgateway Docker görüntüsü oluşturun ve görüntüyü Docker kayıt defterinize gönderin. docker.io veya gcr.io gibi istediğiniz kayıt defterini kullanabilirsiniz:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
    docker push container-registry/your-project/edgemicroplugins

    Örneğin:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
    docker push   gcr.io/my-project/edgemicroplugins

Edge Microgateway yapılandırmasını güncelleme

  1. Eklentileri Edge Microgateway yapılandırma dosyanıza ekleyin. Yapılandırma dosyasını şu konumda bulabilirsiniz:

    $HOME/.edgemicro/org-env-config.yaml
    

    Örneğin:

    $HOME/.edgemicro/myorg-test-config.yaml

Aşağıdaki örnek yapılandırmada, özel eklenti response-uppercase eklenmiştir. oauth eklentisi varsayılan olarak zaten mevcuttu.

  edgemicro:
    ...
    plugins:
      sequence:
        - oauth
        - response-uppercase

Kubernetes kümenizi güncelleme

Son adım, yapılandırma değişikliğini Kubernetes kümenize uygulamaktır. Kubernetes, Container Registry'ye aktardığınız eklenti kodunu içeren yeni görüntüyü çeker ve yeni oluşturulan kapsüller için kullanır.

Edge Microgateway'i hizmet olarak dağıttıysanız

Güncellenen Edge Microgateway yapılandırmasını eklemek için edgemicroctl komutunu kullanın:

  1. Edge Microgateway dağıtımını yeni görüntüyle güncelleyin. Örneğin:

    kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)

    Bu örnekte:

    • your_organization: edgemicro configure komutunda belirttiğiniz Apigee kuruluşu.
    • your_environment - edgemicro configure komutunda belirttiğiniz ortam.
    • configuration_key: edgemicro configure komutundan döndürülen anahtar.
    • configuration_secret: edgemicro configure komutundan döndürülen gizli.
    • config_file_path - edgemicro configure komutundan döndürülen Edge Micro yapılandırma dosyasının yolu.
    • container-registry - Görüntüyü aktardığınız Docker kayıt defteri. Örneğin, gcr.io veya docker.io
    • your_project_name - Docker görüntüsünü gönderdiğiniz Docker deposunun proje adı.
    • image_name: Aktardığınız Docker görüntüsünün adı.

    Örnek:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
  2. Eklentiyi test edin. Beklenen davranışı elde edip etmediğinizi görmek için API'yi çağırın. Örneğin, "response uppercase" eklentisinde yanıt metni, aşağıda gösterildiği gibi tamamen büyük harflere dönüştürülür:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    Çıkış:

    HELLO WORLD
    
Yeni yapılandırmayı manuel olarak yerleştirme

Manuel ekleme, komut satırından yeni yapılandırmayı eklediğiniz basit bir yaklaşımdır.

  1. Aşağıdaki komutu çalıştırın:

    kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)

    Bu örnekte:

    • your_org: edgemicro configure komutunda belirttiğiniz Apigee kuruluşu.
    • your_env - edgemicro configure komutunda belirttiğiniz ortam.
    • your_key: edgemicro configure komutundan döndürülen anahtar.
    • your_secret: edgemicro configure komutundan döndürülen gizli.
    • config_file_path - edgemicro configure komutundan döndürülen Edge Micro yapılandırma dosyasının yolu.
    • container-registry - Görüntüyü aktardığınız Docker kayıt defteri. Örneğin, gcr.io veya docker.io
    • your_project_name - Docker görüntüsünü gönderdiğiniz Docker deposunun proje adı.
    • image_name: Aktardığınız Docker görüntüsünün adı.
    • service_deployment_file - Eklentilerin uygulanacağı hizmetin dağıtım dosyasının yolu. Örneğin: samples/helloworld/helloworld.yaml.

    Örneğin:

    kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
  2. Eklentiyi test edin. Beklenen davranışı elde edip etmediğinizi görmek için hizmet API'sini çağırın. Örneğin, "response uppercase" eklentisinde yanıt metni, aşağıda gösterildiği gibi tamamen büyük harflere dönüştürülür:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    Çıkış:

    HELLO WORLD
    

Edge Microgateway yapılandırmasında değişiklik yapma

Bazı durumlarda, Edge Microgateway yapılandırmanızı değiştirmeniz gerekebilir. Örneğin, Edge Microgateway'e yeni bir eklenti eklemek veya bir yapılandırma parametresini değiştirmek isteyebilirsiniz. Bu bölümde, Kubernetes'te çalışan Edge Microgateway'de yapılandırma değişikliklerinin nasıl yapılacağı ve uygulanacağı açıklanmaktadır.

  1. Aşağıda gösterildiği gibi bir yapılandırma dosyası secret.yaml oluşturun:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mgwsecret
    type: Opaque
    data:
      mgorg: EDGEMICRO_ORG
      mgenv: EDGEMICRO_ENV
      mgkey: EDGEMICRO_KEY
      mgsecret: EDGEMICRO_SECRET
      mgconfig: EDGEMICRO_CONFIG
    
  2. EDGEMICRO_ORG, EDGEMICRO_ENV, EDGEMICRO_KEY, EDGEMICRO_SECRET değerinin Base64 olarak kodlanmış halini belirtin:

    echo -n "your-org" | base64 | tr -d '\n'
    echo -n "your-org-env" | base64 | tr -d '\n'
    echo -n "your-mg-key" | base64 | tr -d '\n'
    echo -n "your-mg-secret" | base64 | tr -d '\n'
  3. Kuruluşunuz ve ortamınız için Edge Microgateway yapılandırma dosyasında değişiklik yapın:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Yapılandırma dosyasının içeriğini iki kez Base64 kodlayın:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Değişiklikleri, hizmetinizin çalıştığı ad alanında Kubernetes'e uygulayın.

    kubectl apply -f secret.yaml -n 

Bu yeni değişiklikler mevcut mikro ağ geçidi pod'ları tarafından otomatik olarak alınmaz ancak yeni pod'lar değişiklikleri alır. Mevcut pod'u silebilirsiniz. Böylece dağıtım, değişikliği alan yeni bir pod oluşturur.

Hizmet örneği

Aşağıdaki örnekte, bir hizmet dağıtımının yeni bir

  1. Kapsülleri alın.

    kubectl get pods

    Örnek çıkış:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. edge-microgateway kapsülünü silin.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    Örnek çıkış:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. Pod'ları tekrar alın. Yeni bir pod başlatılır ve yapılandırma değişiklikleriniz uygulanır.

    kubectl get pods

    Örnek çıkış:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-7f6tc   1/1       Running   0          5s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

Dağıtımınızı ölçeklendirme

Bu bölümde, dağıtımlarınızı ölçeklendirmek için Kubernetes ölçeklendirme ilkelerini nasıl kullanabileceğiniz açıklanmaktadır.

Hizmet dağıtımını ölçeklendirme

  1. Dağıtımları kontrol edin:

    kubectl get deployments

    Örnek çıkış:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    Çıkış, bir replikanın dağıtıldığını gösterir.

  2. Dağıtımı 1'den istediğiniz kadar kopyaya ölçeklendirin. Bu örnekte, edge-microgateway hizmeti ölçeklendirilir.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (İsteğe bağlı) Otomatik ölçeklendirmeyi kullanmak istiyorsanız şu komutu kullanın:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. Ölçeklendirmenin etkinleştirildiğini doğrulamak için dağıtımları kontrol edin:

    kubectl get deployments

    Örnek çıkış:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    Durum, iki çoğaltmayı içerecek şekilde değiştirildi.

  5. Pod'ları kontrol edin:

    kubectl get pods

    Örnek çıkış:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          18h
    edge-microgateway-57ccc7776b-rvfz4   1/1       Running   0          41s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

    Çıkış, her iki replikanın da çalışır durumda olduğunu gösterir.

Birden çok Edge Microgateway yapılandırması için ad alanlarını kullanma

Edge Microgateway hizmetlerinin birden fazla örneğini Kubernetes kümenize dağıtabilir ve yapılandırabilirsiniz. Bu kullanım alanı, her bir mikro ağ geçidi örneğini kendi eklenti ve parametre grubuyla yapılandırmanıza olanak tanır. Örneğin:

  • Edge Microgateway Service A yalnızca ani artışları önleme eklentisini gerektirir.
  • Edge Microgateway Service B, kota ve OAuth eklentisini gerektirir ancak ani artış engelleme eklentisini gerektirmez.

Bu kullanım alanını ele almak için Kubernetes ad alanlarını kullanın. Örneğin, Edge Microgateway A hizmetini foo ad alanına, Edge Microgateway B hizmetini ise bar ad alanına dağıtabilirsiniz.

Aşağıdaki örnekte, OrgA kuruluşunda yapılandırılan Edge Microgateway, -n seçeneği kullanılarak foo ad alanına hizmet olarak dağıtılıyor:

kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo

Benzer şekilde, aşağıdaki örnekte OrgB kuruluşunda yapılandırılan Edge Microgateway, -n seçeneği kullanılarak bar ad alanına hizmet olarak dağıtılır:

kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar