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:
Napisz i przetestuj swój wtyczkę zgodnie z instrukcjami podanymi w artykule Tworzenie prostej wtyczki.
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
irequest-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
cd
do folderuplugin
.W folderze
plugin
skompresuj 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 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"]
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
lubgcr.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
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
:
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 komendzieedgemicro configure
.your_environment
– środowisko określone w instrukcjiedgemicro configure
.configuration_key
– klucz zwrócony przez polecenieedgemicro configure
.configuration_secret
– wartość tajna zwrócona przez polecenieedgemicro configure
.config_file_path
– ścieżka do pliku konfiguracji Edge Micro zwróconego przez polecenieedgemicro configure
.container-registry
– rejestr Dockera, do którego został przesłany obraz. Na przykładgcr.io
lubdocker.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)
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ń.
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 komendzieedgemicro configure
.your_env
– środowisko określone w instrukcjiedgemicro configure
.your_key
– klucz zwrócony przez polecenieedgemicro configure
.your_secret
– wartość tajna zwrócona przez polecenieedgemicro configure
.config_file_path
– ścieżka do pliku konfiguracji Edge Micro zwróconego przez polecenieedgemicro configure
.container-registry
– rejestr Dockera, do którego został przesłany obraz. Na przykładgcr.io
lubdocker.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)
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.
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
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'
Wprowadź zmiany w pliku konfiguracji Edge Microgateway dla swojej organizacji i środowiska:
$HOME/.edgemicro/your_org-your_env-config.yaml
Zakoduj dwukrotnie zawartość pliku konfiguracyjnego w formacie 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 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
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
Usuń pod
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Przykładowe dane wyjściowe:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
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
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.
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
(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 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.
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