Zadania integracji Kubernetes

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Dodawanie niestandardowej wtyczki

Możesz dodać do mikrobramy nowe funkcje i możliwości, wpisując custom Wtyczki niestandardowe umożliwiają automatyczną interakcję z żądaniami i odpowiedzi, które przechodzą przez mikrobramy.

Ta sekcja wyjaśnia, jak spakować i wdrażać wtyczki w Edge Microgateway w instancji działającej w klastrze Kubernetes.

W dalszej części tej sekcji zakładamy, które potrafisz pisać i konfigurować, do standardowej konfiguracji Edge Microgateway. W przeciwnym razie przeczytaj artykuł Tworzenie wtyczek niestandardowych.

Pakowanie wtyczek

Aby utworzyć pakiet wtyczek niestandardowych, wykonaj te czynności:

  1. Utwórz i przetestuj wtyczkę, postępując zgodnie ze wskazówkami podanymi 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 których musisz przestrzegać, gdzie response-uppercase i request-headers to wartości nazwy folderów zawierających kod wtyczki niestandardowej (te nazwy są tylko przykładami, nazwy folderów mogą być inne):

    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 do Dockerfile ten kod i zapisz plik:

    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 funkcją push obrazu do rejestru Dockera. Możesz użyć dowolnego rejestru, jako 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 konfiguracji Edge Microgateway. Dodatkowe informacje na temat .

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

    Na przykład:

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

W poniższej przykładowej konfiguracji dodano niestandardową wtyczkę response-uppercase. Domyślnie wtyczka oauth już tam była.

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

Zaktualizuj klaster Kubernetes

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

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

Użyj polecenia edgemicroctl, aby wprowadzić zaktualizowaną konfigurację Edge Microgateway:

  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 podane w poleceniu edgemicro configure.
    • configuration_key – klucz zwrócony z polecenia edgemicro configure.
    • configuration_secret – obiekt tajny zwrócony z polecenia edgemicro configure.
    • config_file_path – ścieżka do pliku konfiguracji Edge Micro zwrócona z polecenia edgemicro configure.
    • container-registry – rejestr Dockera, do którego przesunięto obraz. Na przykład gcr.io lub docker.io.
    • your_project_name – nazwa projektu dla repozytorium Dockera, w którym przekazano obraz Dockera.
    • image_name – nazwa przekazanego przez Ciebie 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. Dla: na przykład „wielkie litery odpowiedzi” wtyczka, tekst odpowiedzi jest konwertowany na wielkimi literami, jak w poniższym przykładzie:

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

    Dane wyjściowe:

    HELLO WORLD
    
Ręczne wstrzykiwanie nowej konfiguracji

Prosta metoda to wstrzykiwanie ręczne, w którym wstrzykujesz nową konfigurację w wierszu 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 podane w poleceniu edgemicro configure.
    • your_key – klucz zwrócony z polecenia edgemicro configure.
    • your_secret – obiekt tajny zwrócony z polecenia edgemicro configure.
    • config_file_path – ścieżka do pliku konfiguracji Edge Micro zwrócona z polecenia edgemicro configure.
    • container-registry – rejestr Dockera, do którego przesunięto obraz. Na przykład gcr.io lub docker.io.
    • your_project_name – nazwa projektu dla repozytorium Dockera, w którym przekazano obraz Dockera.
    • image_name – nazwa przekazanego przez Ciebie obrazu Dockera.
    • service_deployment_file – ścieżka do pliku wdrożenia usługi dla danej usługi które będą obowiązywać przez 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 do czy wszystko działa zgodnie z oczekiwaniami. Na przykład w przypadku polecenia „wielkie litery w odpowiedzi” wtyczki, tekst odpowiedzi zostanie zamieniony na wielkie litery, jak w poniższym przykładzie:

    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 Edge Microgateway. Na przykład: warto dodać nową wtyczkę do Edge Microgateway lub zmienić parametr konfiguracji. Ten wyjaśnia, jak wprowadzać i stosować zmiany konfiguracji Edge Microgateway działającego w Kubernetes.

  1. Utwórz plik konfiguracji secret.yaml w następujący sposób:

    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 zakodowaną w base64 wartość właściwości 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 Twojej organizacji i środowisko:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Zakoduj w Base64 dwukrotnie zawartość pliku konfiguracyjnego:

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

    kubectl apply -f secret.yaml -n 

Te nowe zmiany nie są automatycznie pobierane przez istniejące pody mikrobram. jednak nowe pody wprowadzą zmiany. Możesz usunąć istniejący pod, aby wdrożenie tworzy nowy pod, który pobierze zmianę.

Przykładowa usługa

Przykład poniżej pokazuje, jak zaktualizować wdrożenie usługi za pomocą

  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ń poda 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 i wprowadzi zmiany w 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

Ta sekcja wyjaśnia, jak przy użyciu zasad skalowania Kubernetes na dużą skalę 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
    

    Dane wyjściowe wskazują, że 1 replika została wdrożona.

  2. Skaluj wdrożenie z 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żyć 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ą uruchomione.

Używanie przestrzeni nazw na potrzeby wielu konfiguracji Edge Microgateway

Możesz wdrożyć i skonfigurować wiele instancji usług Edge Microgateway w Klaster Kubernetes. Ten przypadek użycia pozwala skonfigurować każdą instancję microgateway z własnym zestawem wtyczek i parametrów. Na przykład:

  • Usługa Edge Microgateway A wymaga tylko wtyczki do zatrzymywania gwałtownego wzrostu.
  • Usługa Edge Microgateway B wymaga limitu i wtyczki Oauth, ale nie jest to konieczne w przypadku aresztowania gwałtownego.

Aby rozwiązać ten problem, użyj przestrzeni nazw Kubernetes. Możesz na przykład wdrożyć Edge Microgateway Service A do przestrzeni nazw foo, a usługa Edge Microgateway B do przestrzeń nazw bar.

W poniższym przykładzie Edge Microgateway skonfigurowana w organizacji OrgA jest wdrożona 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 poniższym przykładzie Edge Microgateway skonfigurowany w organizacji OrgB została wdrożona jako usługa w przestrzeni nazw bar przy użyciu 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