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:
Napisz i przetestuj wtyczkę zgodnie z instrukcjami w artykule Pisanie prostej wtyczki.
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-uppercaseirequest-headersto 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.jsoncddo folderuplugin.W folderze
pluginspakuj cały folderplugins:zip -r plugins.zip plugins/
Tworzenie obrazu Dockera
- W tym samym katalogu, w którym znajduje się plik ZIP, utwórz nowy plik o nazwie
Dockerfile. Dodaj ten kod do pliku
Dockerfilei 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"]Utwórz nowy obraz Dockera Edge Microgateway z wtyczkami i wypchnij go do rejestru Dockera. Możesz użyć dowolnego rejestru, np.
docker.iolubgcr.io:docker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsNa przykład:
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker push gcr.io/my-project/edgemicroplugins
Aktualizowanie konfiguracji Edge Microgateway
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:
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 poleceniuedgemicro configure.your_environment– środowisko określone w poleceniuedgemicro configure.configuration_key– klucz zwrócony przez polecenieedgemicro configure.configuration_secret– tajny klucz zwrócony przez polecenieedgemicro configure.config_file_path– ścieżka do pliku konfiguracyjnego Edge Micro zwrócona przez polecenieedgemicro configure.container-registry– rejestr Dockera, do którego został wypchnięty obraz. Na przykładgcr.iolubdocker.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)
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ń.
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 poleceniuedgemicro configure.your_env– środowisko określone w poleceniuedgemicro configure.your_key– klucz zwrócony przez polecenieedgemicro configure.your_secret– tajny klucz zwrócony przez polecenieedgemicro configure.config_file_path– ścieżka do pliku konfiguracyjnego Edge Micro zwrócona przez polecenieedgemicro configure.container-registry– rejestr Dockera, do którego został wypchnięty obraz. Na przykładgcr.iolubdocker.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)
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.
Utwórz plik konfiguracyjny
secret.yamljak 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_CONFIGOkreś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'Wprowadź zmiany w pliku konfiguracyjnym Edge Microgateway dla swojej organizacji i środowiska:
$HOME/.edgemicro/your_org-your_env-config.yaml
Dwukrotnie zakoduj zawartość pliku konfiguracyjnego w standardzie Base64:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
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
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 1dUsuń pod
edge-microgateway.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Przykładowe dane wyjściowe:
pod "edge-microgateway-57ccc7776b-g7nrg" deletedPonownie 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
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 1dDane wyjściowe wskazują, że wdrożona jest 1 replika.
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
(Opcjonalnie) Jeśli chcesz używać autoskalowania, użyj tego polecenia:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
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 1dStan został zmieniony tak, aby obejmował 2 repliki.
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 1dDane 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