Zadania integracji Kubernetes

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

Dodawanie wtyczki niestandardowej

Możesz dodawać do mikrobramki nowe funkcje i możliwości, pisząc własne wtyczki. Wtyczki niestandardowe umożliwiają interakcję programową z żądaniami i odpowiedziami przesyłanymi przez mikrobramkę.

Z tej sekcji dowiesz się, jak pakować i wdrażać wtyczki do instancji Edge Microgateway działającej w klastrze Kubernetes.

W pozostałych częściach tej sekcji zakładamy, że wiesz, jak pisać i konfigurować wtyczki w przypadku standardowej konfiguracji Edge Microgateway. Jeśli nie, zapoznaj się z artykułem Tworzenie niestandardowych wtyczek.

Pakowanie wtyczek

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

  1. Napisz i przetestuj swój wtyczkę zgodnie z instrukcjami podanymi w artykule Tworzenie prostej wtyczki.

  2. Umieść kod wtyczki w odpowiedniej strukturze katalogów. Katalogi wtyczek muszą być zgodne z określoną strukturą. Przykład poniżej przedstawia strukturę, której musisz przestrzegać. response-uppercase i request-headers to nazwy folderów zawierających kod niestandardowego wtyczki (nazwy te są tylko przykładowe, Twoje 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 skompresuj 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 do pliku Dockerfile ten kod i go zapisz:

    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 prześlij go do rejestru Dockera. Możesz użyć dowolnego rejestru, na przykład 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 konfiguracji znajdziesz tutaj:

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

    Na przykład:

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

W poniższej przykładowej konfiguracji dodano niestandardowy wtyczkę response-uppercase. Wtyczka oauth była już domyślnie zainstalowana.

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

Aktualizowanie klastra Kubernetes

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

Jeśli wdrożono Edge Microgateway jako usługę

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

  1. Zaktualizuj wdrożenie mikrobramki Edge, używając 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 komendzie edgemicro configure.
    • your_environment – środowisko określone w instrukcji edgemicro configure.
    • configuration_key – klucz zwrócony przez polecenie edgemicro configure.
    • configuration_secret – wartość tajna zwrócona przez polecenie edgemicro configure.
    • config_file_path – ścieżka do pliku konfiguracji Edge Micro zwróconego przez polecenie edgemicro configure.
    • container-registry – rejestr Dockera, do którego został przesłany obraz. Na przykład gcr.io lub docker.io.
    • your_project_name – nazwa projektu w repozytorium Dockera, do którego został przesłany obraz Dockera.
    • image_name – nazwa przekazanego 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 działa on zgodnie z oczekiwaniami. Na przykład w przypadku wtyczki „response uppercase” tekst odpowiedzi jest zamieniany na wielkie litery, jak pokazano poniżej:

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

    Dane wyjściowe:

    HELLO WORLD
    
Ręczne wstrzyknięcie nowej konfiguracji

Ręczne wstrzyknięcie to proste podejście, w którym nową konfigurację wstrzykujesz 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 komendzie edgemicro configure.
    • your_env – środowisko określone w instrukcji edgemicro configure.
    • your_key – klucz zwrócony przez polecenie edgemicro configure.
    • your_secret – wartość tajna zwrócona przez polecenie edgemicro configure.
    • config_file_path – ścieżka do pliku konfiguracji Edge Micro zwróconego przez polecenie edgemicro configure.
    • container-registry – rejestr Dockera, do którego został przesłany obraz. Na przykład gcr.io lub docker.io.
    • your_project_name – nazwa projektu w repozytorium Dockera, do którego został przesłany obraz Dockera.
    • image_name – nazwa przekazanego obrazu Dockera.
    • service_deployment_file – ścieżka do pliku wdrożenia usługi, do której mają być 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 działa ona zgodnie z oczekiwaniami. Na przykład w przypadku wtyczki „odpowiedź wielkimi literami” tekst odpowiedzi jest konwertowany na zapisany wielkimi literami, 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ć konieczne zmodyfikowanie konfiguracji urządzenia Edge Microgateway. Możesz na przykład dodać nowy wtyczek do Edge Microgateway lub zmienić parametr konfiguracji. W tej sekcji opisaliśmy, jak wprowadzić i zastosować zmiany konfiguracji w Edge Microgateway działającym w Kubernetes.

  1. Utwórz plik konfiguracji secret.yaml, jak pokazano 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. Podaj 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 konfiguracji Edge Microgateway dla swojej organizacji i środowiska:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Zakoduj dwukrotnie zawartość pliku konfiguracyjnego w formacie 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 usługa.

    kubectl apply -f secret.yaml -n 

Te nowe zmiany nie są automatycznie uwzględniane przez istniejące moduły mikrobramki, ale zostaną uwzględnione przez nowe moduły. Możesz usunąć istniejący kontener, aby wdrożenie utworzyło nowy kontener, który uwzględni zmianę.

Przykład usługi

Ten 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. Pobierz ponownie bloki. Nowy pod uruchamia się i otrzymuje 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

W tej sekcji wyjaśniamy, jak stosować zasady skalowania Kubernetes do skalowania wdrożeń.

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
    

    Wynik wskazuje, że wdrożona jest jedna replika.

  2. Możesz skalować wdrożenie od 1 do dowolnej liczby replik. W tym przykładzie usługa edge-microgateway jest skalowana.

    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 potwierdzić, ż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, aby zawierać 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 uruchomionym.

Używanie przestrzeni nazw na potrzeby wielu konfiguracji mikrobramki Edge

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

  • Usługa A mikrobramki Edge wymaga tylko wtyczki do zapobiegania nagłym wzrostom.
  • Usługa Edge Microgateway B wymaga wtyczki dotyczącej limitu i OAuth, ale nie blokowania skoku.

Aby zrealizować ten przypadek użycia, 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 przy użyciu 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 zostaje wdrożony 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