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:
Utwórz i przetestuj wtyczkę, postępując zgodnie ze wskazówkami podanymi 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 których musisz przestrzegać, gdzie
response-uppercase
irequest-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
cd
do folderuplugin
.W folderze
plugin
spakuj 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
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"]
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
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 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:
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 podane w poleceniuedgemicro configure
.configuration_key
– klucz zwrócony z poleceniaedgemicro configure
.configuration_secret
– obiekt tajny zwrócony z poleceniaedgemicro configure
.config_file_path
– ścieżka do pliku konfiguracji Edge Micro zwrócona z poleceniaedgemicro configure
.container-registry
– rejestr Dockera, do którego przesunięto obraz. Na przykładgcr.io
lubdocker.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)
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ń.
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 podane w poleceniuedgemicro configure
.your_key
– klucz zwrócony z poleceniaedgemicro configure
.your_secret
– obiekt tajny zwrócony z poleceniaedgemicro configure
.config_file_path
– ścieżka do pliku konfiguracji Edge Micro zwrócona z poleceniaedgemicro configure
.container-registry
– rejestr Dockera, do którego przesunięto obraz. Na przykładgcr.io
lubdocker.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)
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.
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
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'
Wprowadź zmiany w pliku konfiguracji Edge Microgateway Twojej organizacji i środowisko:
$HOME/.edgemicro/your_org-your_env-config.yaml
Zakoduj w Base64 dwukrotnie zawartość pliku konfiguracyjnego:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
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ą
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ń poda
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Przykładowe dane wyjściowe:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
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
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.
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
(Opcjonalnie) Jeśli chcesz użyć 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 1d
Stan 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 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