Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Wstęp
W tym temacie wyjaśniamy, jak uruchomić Edge Microgateway w klastrze Kubernetes jako pomocny serwer proxy. Dostępne są 2 opcje wdrażania: ręczne i automatyczne. W tym temacie opisujemy obie opcje.
Więcej informacji znajdziesz w artykule Wprowadzenie do Edge Microgateway w Kubernetes.
Zanim zaczniesz
Wykonaj czynności opisane w artykule Wymagania wstępne.
Wdrażanie usługi testowej
Wdróż prostą usługę „hello” i zweryfikuj wdrożenie:
Wdróż przykład:
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Sprawdź, czy usługa jest uruchomiona. Być może trzeba będzie poczekać, aż pod uruchomi się w stanie uruchomienia:
kubectl get pods --namespace=default
Przykładowe dane wyjściowe:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17m
Usuń wdrożenie usługi testowej. Zainstalujesz ją ponownie później, po włączeniu funkcji wstrzykiwania plików pomocniczych:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
Ręczne wstrzykiwanie mieszaniny bakteryjnej
Z 2 opcji wstrzykiwania pomocniczego można wykonać tylko samodzielne wstrzykiwanie plików pomocniczych. Można je wykonać za pomocą jednego polecenia kubectl
.
Skonfiguruj Edge Microgateway
Poniższe polecenie konfiguruje Edge Microgateway dla Twojej organizacji Apigee i wdraża serwer proxy edgemicro-auth
.
Uruchom to polecenie:
edgemicro configure -o [org] -e [env] -u [username]
Gdzie:
org
: nazwa organizacji Edge (musisz być administratorem organizacji).env
: środowisko w Twojej organizacji (np. testowe lub produkcyjne).username
: adres e-mail powiązany z Twoim kontem Apigee.
Przykład
edgemicro configure -o myorg -e test -u jdoe@example.com
Dane wyjściowe (przykład poniżej) są zapisywane w pliku:
$HOME/.edgemicro/org_name-env_name-config.yaml
.current nodejs version is v6.9.1 current edgemicro version is 2.5.25 password: file doesn't exist, setting up Give me a minute or two... this can take a while... App edgemicro-auth deployed. checking org for existing KVM KVM already exists in your org configuring host edgemicroservices.apigee.net for region us-west1 saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml vault info: -----BEGIN CERTIFICATE----- MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8 1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH 6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn 8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4 w+e3Z3F7IKI= -----END CERTIFICATE----- The following credentials are required to start edge micro key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4 secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef edgemicro configuration complete!
Wstrzyknij Edge Microgateway jako plik pomocniczy
Aby ręcznie wstrzyknąć Edge Microgateway do poda usługi jako pomocniczy serwer proxy, wykonaj to polecenie:
kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)
gdzie:
your_org
– organizacja Apigee podana w poleceniuedgemicro configure
.your_env
– środowisko określone w poleceniuedgemicro configure
.your_key
– klucz zwrócony z poleceniaedgemicro configure
.your_secret
– obiekt tajny zwrócony przez polecenieedgemicro configure
.config_file_path
– ścieżka do pliku konfiguracji Edge Micro zwróconego przez polecenieedgemicro configure
.service_deployment_file
– ścieżka do pliku wdrożenia usługi, której pod pobierze towarzyszącą usługę pomocniczą. 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 -svc=samples/helloworld/helloworld.yaml)
Testowanie konfiguracji
Sprawdź wdrożenia usługi:
kubectl get services -n default
Przykładowe dane wyjściowe:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE helloworld NodePort 10.15.254.163 <none> 8081:32401/TCP 56s kubernetes ClusterIP 10.15.240.1 <none> 443/TCP 41m
Teraz możesz przetestować wdrożenie pomocnicze Edge Microgateway. Szczegółowe instrukcje znajdziesz w artykule Testowanie serwera proxy.
Korzystanie z automatycznego wstrzykiwania pomocniczego
W kolejnych krokach skonfigurujesz automatyczne wstrzykiwanie plików pomocniczych w klastrze Kubernetes. Ta konfiguracja umożliwia wstrzykiwanie Edge Microgateway w Kubernetes jako pomocniczy serwer proxy.
Montaż wtryskiwacza bocznego
Zainstaluj ConfigMap, który umożliwia wstrzyknięcie pliku pomocniczego Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
Aby zainstalować usługę webhooka, uruchom ten skrypt. Usługa webhooka jest wymagana do automatycznego wstrzykiwania plików pomocniczych:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
Dodaj pakiet urzędu certyfikacji do pliku instalacyjnego webhooka. Serwer API Kubernetes używa tego pliku do wywołania webhooka:
cat install/kubernetes/edgemicro-sidecar-injector.yaml | \ ./install/kubernetes/webhook-patch-ca-bundle.sh > \ install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Zainstaluj webhooka wstrzykiwacza pomocniczego interfejsu Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
Przykładowe dane wyjściowe:
service "edgemicro-sidecar-injector" created serviceaccount "edgemicro-sidecar-injector-service-account" created deployment "edgemicro-sidecar-injector" created mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
Sprawdź, czy webhook wstrzykiwacza pomocniczego interfejsu Edge Microgateway jest uruchomiony:
kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
Przykładowe dane wyjściowe:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edgemicro-sidecar-injector 1 1 1 1 12m
Sprawdź, czy w klastrze działa pod do wstrzykiwania pomocniczego. Przestrzeń nazw
edgemicro-system
to miejsce, w którym są zainstalowane usługi systemowe, w tym kontroler ruchu przychodzącego, domyślny backend HTTP i iektor pomocniczy:kubectl get pods -n edgemicro-system
Przykładowe dane wyjściowe:
NAME READY STATUS RESTARTS AGE default-http-backend-55c6c69b88-gfnfd 1/1 Running 0 1h edgemicro-ingress-controller-64444469bf-jhn8b 1/1 Running 3 1h edgemicro-sidecar-injector-7d95698fbf-cq84q 1/1 Running 0 3m
Skonfiguruj i wstrzyknij Edge Microgateway
W następnym kroku uruchomisz interaktywny skrypt, aby utworzyć konfigurację Edge Microgateway powiązaną z przestrzenią nazw Kubernetes. Następnie wstrzykniesz konfigurację do klastra Kubernetes.
Uruchom następujący interaktywny skrypt i podaj żądane parametry. Polecenie to wygeneruje profil konfiguracji, którego użyjesz w następnym kroku.
./install/kubernetes/webhook-edgemicro-patch.sh
Informacje o parametrach wejściowych znajdziesz w dokumentacji.
Przykładowe dane wejściowe:
Namespace to deploy application [default]:
Naciśnij Enter.
Authenticate with OAuth Token ("n","Y") [N/y]
Wpisz n.
Apigee username [required]:
Wpisz swoją nazwę użytkownika (adres e-mail) Apigee. Na przykład:
jdoe@google.com
.Apigee password [required]:
Wpisz swoje hasło Apigee.
Apigee organization [required]:
Wpisz nazwę organizacji w Apigee.
Apigee environment [required]:
Wpisz nazwę środowiska dla organizacji. Na przykład „test”.
Virtual Host [default]:
Naciśnij Enter.
Is this Private Cloud ("n","y") [N/y]:
Wpisz n, jeśli korzystasz z chmury publicznej.
Edgemicro Key. Press Enter to generate:
Naciśnij Enter.
Edgemicro Secret. Press Enter to generate:
Naciśnij Enter.
Edgemicro org-env-config.yaml. Press Enter to generate:
Naciśnij Enter.
Przykładowe dane wyjściowe:
current nodejs version is v6.9.1 current edgemicro version is 2.5.25 config initialized to /Users/jdoe/.edgemicro/default.yaml Configure for Cloud ****************************************************************************************** Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory. Please make changes as desired. *****************************************************************************************
Do you agree to proceed("n","y") [N/y]:
Wpisz y.
Przykładowe dane wyjściowe:
Configuring Microgateway with key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84 secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0 config:~/.edgemicro/jdoe-test-config.yaml ******************************************************************************************************** kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml ********************************************************************************************************
Wykonaj polecenie podane w ostatnim wierszu danych wyjściowych. To polecenie
kubectl
wstrzykuje wygenerowany profil konfiguracji Edge Microgateway do Kubernetes:kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
Wyświetl stan wstrzyknięcia webhooka. Pamiętaj, że obecnie nie jest ona włączona:
kubectl get namespace -L edgemicro-injection
Przykładowe dane wyjściowe:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Uruchom to polecenie, aby włączyć wstrzyknięcie webhooka:
kubectl label namespace default edgemicro-injection=enabled
Wyświetl ponownie stan wstrzyknięcia webhooka. Pamiętaj, że teraz jest włączona:
kubectl get namespace -L edgemicro-injection
Przykładowe dane wyjściowe:
NAME STATUS AGE EDGEMICRO-INJECTION default Active 1d enabled edgemicro-system Active 1d kube-public Active 1d kube-system Active 1d
Wdrażanie usługi testowej
Teraz wdróż ponownie usługę testową. Edge Microgateway zostanie automatycznie wstrzyknięta do poda usługi.
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Sprawdź, czy Edge Microgateway została wstrzyknięta do poda wraz z usługą testową:
kubectl get pods --namespace=default --watch
Przykładowe dane wyjściowe:
NAME READY STATUS RESTARTS AGE
helloworld-6987878fc4-pkw8h 0/2 PodInitializing 0 12s
helloworld-6987878fc4-pkw8h 2/2 Running 0 26s
Gdy stan zmieni się na Running
, naciśnij ctrl-c
, aby zamknąć polecenie.
Teraz możesz przetestować automatyczne wdrażanie pomocnicze Edge Microgateway. Szczegółowe instrukcje znajdziesz w artykule Testowanie serwera proxy.
Testowanie serwera proxy
W przypadku wdrożenia pomocniczego serwer proxy interfejsu API dla usługi jest tworzony automatycznie. Nie musisz tworzyć serwera proxy „Edge Microgateway-aware”.
Uzyskiwanie adresu IP ruchu przychodzącego
Za pomocą zewnętrznego adresu IP zasobu Ingress możesz wywoływać usługę spoza klastra.
Uzyskaj zewnętrzny adres IP kontrolera ruchu przychodzącego:
kubectl get ing -o wide
Przykładowe dane wyjściowe:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1m
Skopiuj wartość
EXTERNAL-IP
obiektu Ingress i wyeksportuj ją do zmiennej. Zmienną możesz ustawić ręcznie:export GATEWAY_IP=external_ip
Na przykład:
export GATEWAY_IP=35.238.249.62
Możesz też ustawić go za pomocą tego polecenia:
export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
Sprawdź, czy zmienna została wyeksportowana. Na przykład:
echo $GATEWAY_IP
Przykładowe dane wyjściowe:
35.238.249.62
Zadzwoń do usługi:
curl $GATEWAY_IP
Dane wyjściowe:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Następnie rozwiąż problem braku autoryzacji, konfigurując usługę API i aplikację programisty w Edge, aby uzyskać prawidłowy klucz interfejsu API. Jeśli dodasz klucz do nagłówka autoryzacji w wywołaniu interfejsu API, wywołanie zakończy się powodzeniem i nie pojawi się ten komunikat o błędzie.
Tworzenie komponentów w Apigee Edge
Następnie utwórz produkt API i aplikację dewelopera w Apigee Edge.
Tworzenie usługi API
- Zaloguj się w Apigee Edge.
- W bocznym menu nawigacyjnym wybierz Opublikuj > Usługi API.
- Kliknij + Usługa API. Pojawia się strona produktu.
Wypełnij stronę Produkt w następujący sposób. W przypadku pól, których nie wymieniono poniżej, możesz użyć wartości domyślnych. Nie zapisuj operacji, dopóki nie pojawi się taka instrukcja.
Nazwa hello-world-product
Wyświetlana nazwa Edge Micro hello product
Środowisko test
W sekcji Ścieżka kliknij + Zasób niestandardowy.
Dodaj ścieżkę
/
.Ponownie kliknij + Zasób niestandardowy i dodaj ścieżkę
/**
.W sekcji API Proxies kliknij + API Proxy i dodaj edgemicro-auth.
Zapisz usługę API.
Tworzenie aplikacji związanej z programistą
- Wybierz Aplikacje w bocznym menu nawigacyjnym.
- Kliknij + Aplikacja. Pojawi się strona Szczegóły aplikacji dewelopera.
Wypełnij stronę aplikacji dewelopera w ten sposób. Zapisuj, dopóki nie pojawi się taka instrukcja.
Nazwa hello-world-app
Wyświetlana nazwa Edge Micro hello app
Deweloper Z menu wybierz dewelopera. W sekcji Dane logowania kliknij + usługa i wybierz utworzony przed chwilą
hello-world-product
.Kliknij Zapisz.
Jesteś z powrotem na stronie z listą wszystkich aplikacji dla deweloperów.
Wybierz utworzoną przed chwilą aplikację
hello-world-app
.Kliknij Pokaż obok Klucz klienta.
Skopiuj wartość z klucza klienta. Ta wartość to klucz interfejsu API, którego będziesz używać do wykonywania bezpiecznych wywołań interfejsu API w usłudze
helloworld
.Odczekaj kilka minut. Synchronizacja zmian wprowadzonych w Apigee Edge z instancją Edge Microgateway wdrożona w klastrze może potrwać kilka minut.
Wywoływanie interfejsu API
Po pobraniu zmian konfiguracji do mikrobramy możesz wykonać poniższe testy.
Wywołaj interfejs API bez klucza interfejsu API. Pojawi się komunikat o błędzie:
curl $GATEWAY_IP
Oczekiwane dane wyjściowe:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Aby móc wykonywać udane wywołania interfejsu API, potrzebujesz klucza interfejsu API.
Pobierz klucz klienta z utworzonej przez siebie aplikacji dla programistów. Ta wartość to klucz interfejsu API, którego potrzebujesz do wywołania testowego serwera proxy:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP
Na przykład:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
Dane wyjściowe:
Hello world
Odpowiedź „Hello world” jest zwracana przez usługę helloworld wdrożoną w podzie. Wywołanie tej usługi najpierw przechodziło przez Edge Microgateway, gdzie przeprowadzono uwierzytelnianie. Jeśli zobaczysz odpowiedź „Hello world”, oznacza to, że Edge Microgateway została skonfigurowana tak, aby działała jako pomocniczy serwer proxy w podzie usługi helloworld.
Co dalej?
W sekcji Zadania znajdziesz informacje na temat dodawania niestandardowych wtyczek, skalowania wdrażania, wprowadzania zmian w konfiguracji i innych zadań, które możesz wykonać.