Kubernetes entegrasyon görevleri

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

Özel eklenti ekleme

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

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

Bu bölümün geri kalanında, standart bir Edge Microgateway kurulumu için eklenti yazma ve yapılandırma hakkında bilgi sahibi olduğunuz varsayılmaktadır. Aksi takdirde Ö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 talimatları uygulayarak eklentinizi yazın ve test edin.

  2. Eklenti kodunuzu doğru dizin yapısına yerleştirin. Eklenti dizinleri belirli bir yapıya uymalıdır. Aşağıdaki örnekte, uymanız gereken yapı gösterilmektedir. Bu örnekte 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 klasörüne taşındı.plugin

  4. plugin klasöründe plugins klasörünün tamamını sıkıştırın:

    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. Aşağıdaki kodu Dockerfile dosyasına 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 dilediğiniz kayıt otoritesini 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 response-uppercase özel eklentisi 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, yeni görüntüyü Container Registry'ye gönderdiğiniz eklenti koduyla ç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 anahtar.
    • 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ü yüklediğiniz 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: Yayınladığı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. Beklediğiniz davranışı alıp almadığınızı görmek için API'yi çağırın. Örneğin, "yanıt büyük harf" eklentisi için yanıt metni aşağıdaki gibi tümüyle büyük harfe dönüştürülür:

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

    Çıkış:

    HELLO WORLD
    
Yeni yapılandırmayı manuel olarak ekleme

Manuel ekleme, yeni yapılandırmayı komut satırından 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 anahtar.
    • 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ü yüklediğiniz 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: Yayınladığı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ışı alıp almadığınızı görmek için hizmet API'sini çağırın. Örneğin, "yanıt büyük harf" eklentisi için yanıt metni aşağıda gösterildiği gibi tamamen büyük harfe dönüştürülür:

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

    Çıkış:

    HELLO WORLD
    

Edge Microgateway yapılandırma değişiklikleri 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'te 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 için base64 olarak kodlanmış değeri 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şunuzun ve ortamınızın Edge Microgateway yapılandırma dosyasında değişikliklerinizi yapın:

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

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Hizmetinizin çalıştığı ad alanındaki kubernetes'e değişiklikleri uygulayın.

    kubectl apply -f secret.yaml -n 

Bu yeni değişiklikler mevcut mikro ağ geçidi kapsülleri tarafından otomatik olarak alınmaz ancak yeni kapsüller değişiklikleri alır. Mevcut kapsülü silerek dağıtımın, değişikliği alan yeni bir kapsül oluşturmasını sağlayabilirsiniz.

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. Kapsülleri tekrar alın. Yeni bir kapsül başlatılır ve yapılandırma değişiklikleriniz bu kapsüle 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ışta bir kopyanın dağıtıldığı belirtilir.

  2. Dağıtım ölçeğini 1'den istediğiniz kadar kopyaya kadar artırabilirsiniz. Bu örnekte edge-microgateway hizmeti ölçeklendirilmiştir.

    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 etkin olduğunu 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 kopya içerecek şekilde değiştirildi.

  5. Kapsülleri 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ışta, her iki kopyanın da çalışan durumda olduğu gösterilir.

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

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

  • Edge Microgateway A Hizmeti yalnızca ani artış durdurma eklentisini gerektirir.
  • Edge Microgateway Service B, kota ve oauth eklentisini gerektirir ancak ani artış durdurma özelliğini gerektirmez.

Bu kullanım alanını ele almak için Kubernetes ad alanlarını kullanın. Örneğin, Edge Microgateway Hizmeti A'yı foo ad alanına, Edge Microgateway Hizmeti B'yi 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ının bir hizmeti olarak dağıtılmıştır:

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ılmış Edge Microgateway, -n seçeneği kullanılarak bar ad alanının bir hizmeti olarak dağıtılmıştı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