Zadania integracji Kubernetes

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Dodawanie wtyczki niestandardowej

Aby dodać nowe funkcje do mikrobramy, możesz napisać niestandardowe wtyczki. Wtyczki niestandardowe umożliwiają programowe interakcje z żądaniami i odpowiedziami przepływającymi przez mikrobramę.

Z tej sekcji dowiesz się, jak spakować i wdrożyć wtyczki w instancji Edge Microgateway działającej w klastrze Kubernetes.

W dalszej części tej sekcji zakładamy, że wiesz, jak pisać i konfigurować wtyczki na potrzeby standardowej konfiguracji Edge Microgateway. Jeśli nie, zapoznaj się z artykułem Tworzenie wtyczek niestandardowych.

Pakowanie wtyczek

Aby spakować wtyczki niestandardowe, wykonaj te czynności:

  1. Napisz i przetestuj wtyczkę zgodnie z instrukcjami w artykule Pisanie prostej wtyczki.

  2. Umieść kod wtyczki w odpowiedniej strukturze katalogów. Katalogi wtyczek muszą mieć określoną strukturę. Poniższy przykład pokazuje strukturę, której musisz się trzymać. response-uppercase i request-headers to nazwy folderów zawierających kod wtyczki niestandardowej (są to tylko przykłady, nazwy folderów mogą się różnić):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd do folderu plugin.

  4. W folderze plugin spakuj cały folder plugins:

    zip -r plugins.zip plugins/

Tworzenie obrazu Dockera

  1. W tym samym katalogu, w którym znajduje się plik ZIP, utwórz nowy plik o nazwie Dockerfile.
  2. Dodaj ten kod do pliku Dockerfile i zapisz go:

    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. Utwórz nowy obraz Dockera Edge Microgateway z wtyczkami i wypchnij go do rejestru Dockera. Możesz użyć dowolnego rejestru, np. docker.io lub gcr.io:

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

    Na przykład:

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

Aktualizowanie konfiguracji Edge Microgateway

  1. Dodaj wtyczki do pliku konfiguracyjnego Edge Microgateway. Plik konfiguracyjny znajdziesz tutaj:

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

    Na przykład:

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

W tym przykładowym pliku konfiguracyjnym dodano wtyczkę niestandardową response-uppercase. Wtyczka oauth była już domyślnie dostępna.

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

Aktualizowanie klastra Kubernetes

Ostatnim krokiem jest zastosowanie zmiany konfiguracji w klastrze Kubernetes. Kubernetes pobierze nowy obraz z kodem wtyczki, który został wypchnięty do rejestru kontenerów, i użyje go w przypadku nowo utworzonych podów.

Jeśli Edge Microgateway został wdrożony jako usługa

Aby wstrzyknąć zaktualizowaną konfigurację Edge Microgateway, użyj polecenia edgemicroctl:

  1. Zaktualizuj wdrożenie Edge Microgateway za pomocą nowego obrazu. Na przykład:

    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)

    gdzie:

    • your_organization – organizacja Apigee określona w poleceniu edgemicro configure.
    • your_environment – środowisko określone w poleceniu edgemicro configure.
    • configuration_key – klucz zwrócony przez polecenie edgemicro configure.
    • configuration_secret – tajny klucz zwrócony przez polecenie edgemicro configure.
    • config_file_path – ścieżka do pliku konfiguracyjnego Edge Micro zwrócona przez polecenie edgemicro configure.
    • container-registry – rejestr Dockera, do którego został wypchnięty obraz. Na przykład gcr.io lub docker.io.
    • your_project_name – nazwa projektu w repozytorium Dockera, do którego został wypchnięty obraz Dockera.
    • image_name – nazwa wypchniętego obrazu Dockera.

    Przykład:

    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. Przetestuj wtyczkę. Wywołaj interfejs API, aby sprawdzić, czy uzyskujesz oczekiwane działanie. Na przykład w przypadku wtyczki „response uppercase” tekst odpowiedzi jest konwertowany na wielkie litery, jak pokazano poniżej:

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

    Dane wyjściowe:

    HELLO WORLD
    
Ręczne wstrzykiwanie nowej konfiguracji

Wstrzykiwanie ręczne to proste podejście, w którym wstrzykujesz nową konfigurację z wiersza poleceń.

  1. Uruchom to polecenie:

    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)

    gdzie:

    • your_org – organizacja Apigee określona w poleceniu edgemicro configure.
    • your_env – środowisko określone w poleceniu edgemicro configure.
    • your_key – klucz zwrócony przez polecenie edgemicro configure.
    • your_secret – tajny klucz zwrócony przez polecenie edgemicro configure.
    • config_file_path – ścieżka do pliku konfiguracyjnego Edge Micro zwrócona przez polecenie edgemicro configure.
    • container-registry – rejestr Dockera, do którego został wypchnięty obraz. Na przykład gcr.io lub docker.io.
    • your_project_name – nazwa projektu w repozytorium Dockera, do którego został wypchnięty obraz Dockera.
    • image_name – nazwa wypchniętego obrazu Dockera.
    • service_deployment_file – ścieżka do pliku wdrożenia usługi, w której będą stosowane wtyczki. Na przykład: samples/helloworld/helloworld.yaml.

    Na przykład:

    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. Przetestuj wtyczkę. Wywołaj interfejs API usługi, aby sprawdzić, czy uzyskujesz oczekiwane działanie. Na przykład w przypadku wtyczki „response uppercase” tekst odpowiedzi jest konwertowany na wielkie litery, jak pokazano poniżej:

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

    Dane wyjściowe:

    HELLO WORLD
    

Wprowadzanie zmian w konfiguracji Edge Microgateway

W niektórych przypadkach może być konieczna modyfikacja konfiguracji Edge Microgateway. Możesz na przykład dodać nową wtyczkę do Edge Microgateway lub zmienić parametr konfiguracji. Z tej sekcji dowiesz się, jak wprowadzać i stosować zmiany konfiguracji w Edge Microgateway działającym w Kubernetes.

  1. Utwórz plik konfiguracyjny secret.yaml jak poniżej:

    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. Określ wartość zakodowaną w standardzie Base64 dla EDGEMICRO_ORG, EDGEMICRO_ENV, EDGEMICRO_KEY, EDGEMICRO_SECRET:

    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. Wprowadź zmiany w pliku konfiguracyjnym Edge Microgateway dla swojej organizacji i środowiska:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Dwukrotnie zakoduj zawartość pliku konfiguracyjnego w standardzie Base64:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Zastosuj zmiany w Kubernetes w przestrzeni nazw, w której działa Twoja usługa.

    kubectl apply -f secret.yaml -n 

Te nowe zmiany nie są automatycznie wykrywane przez istniejące pody mikrobramy, ale nowe pody będą je uwzględniać. Możesz usunąć istniejący pod, aby wdrożenie utworzyło nowy pod, który uwzględni zmianę.

Przykład usługi

Poniższy przykład pokazuje, jak zaktualizować wdrożenie usługi za pomocą nowego

  1. Pobierz pody.

    kubectl get pods

    Przykładowe dane wyjściowe:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. Usuń pod edge-microgateway.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    Przykładowe dane wyjściowe:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. Ponownie pobierz pody. Uruchomi się nowy pod, który uwzględni zmiany konfiguracji.

    kubectl get pods

    Przykładowe dane wyjściowe:

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

Skalowanie wdrożenia

Z tej sekcji dowiesz się, jak skalować wdrożenia za pomocą zasad skalowania Kubernetes.

Skalowanie wdrożenia usługi

  1. Sprawdź wdrożenia:

    kubectl get deployments

    Przykładowe dane wyjściowe:

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

    Dane wyjściowe wskazują, że wdrożona jest 1 replika.

  2. Skaluj wdrożenie z 1 do dowolnej liczby replik. W tym przykładzie skalowana jest usługa edge-microgateway.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (Opcjonalnie) Jeśli chcesz używać autoskalowania, użyj tego polecenia:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. Sprawdź wdrożenia, aby upewnić się, że skalowanie jest włączone:

    kubectl get deployments

    Przykładowe dane wyjściowe:

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

    Stan został zmieniony tak, aby obejmował 2 repliki.

  5. Sprawdź pody:

    kubectl get pods

    Przykładowe dane wyjściowe:

    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
    

    Dane wyjściowe wskazują, że obie repliki są w stanie uruchomienia.

Używanie przestrzeni nazw do obsługi wielu konfiguracji Edge Microgateway

W klastrze Kubernetes możesz wdrożyć i skonfigurować wiele instancji usług Edge Microgateway. Ten przypadek użycia umożliwia skonfigurowanie każdej instancji mikrobramy za pomocą własnego zestawu wtyczek i parametrów. Na przykład:

  • Usługa Edge Microgateway A wymaga tylko wtyczki spike arrest.
  • Usługa Edge Microgateway B wymaga wtyczek quota i oauth, ale nie spike arrest.

Aby rozwiązać ten problem, użyj przestrzeni nazw Kubernetes. Możesz na przykład wdrożyć usługę Edge Microgateway A w przestrzeni nazw foo, a usługę Edge Microgateway B w przestrzeni nazw bar.

W tym przykładzie Edge Microgateway skonfigurowany w organizacji OrgA jest wdrażany jako usługa w przestrzeni nazw foo za pomocą opcji -n:

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

Podobnie w tym przykładzie Edge Microgateway skonfigurowany w organizacji OrgB jest wdrażany jako usługa w przestrzeni nazw bar za pomocą opcji -n:

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