Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Wprowadzenie
Z tego tematu dowiesz się, jak uruchomić Edge Microgateway w klastrze Kubernetes jako proxy pomocnicze. Dostępne są 2 opcje wdrażania sidecar: ręczne i automatyczne wstrzyknięcie. W tym artykule omawiamy obie te opcje.
Więcej informacji znajdziesz w artykule Wprowadzenie do Edge Microgateway w Kubernetes.
Zanim zaczniesz
Wykonaj czynności opisane w sekcji Wymagania wstępne.
Wdrażanie testowej usługi
Wdrożyć prostą usługę „hello” i sprawdzać wdrożenie:
Wdrażanie przykładu:
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Sprawdź, czy usługa działa. Może minąć chwila, zanim pod osiągnie stan uruchomiony:
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 testowej usługi. Zainstalujesz go ponownie później, gdy włączysz wstrzyknięcie poboczne:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
Ręczne wstrzyknięcie sidecar
Z 2 dostępnych opcji wstrzyknięcia sidecar ręczne wstrzyknięcie sidecar jest prostszym i bardziej bezpośrednim podejściem, które można wykonać za pomocą jednego polecenia kubectl
.
Konfigurowanie Edge Microgateway
To polecenie konfiguruje Edge Microgateway dla organizacji Apigee i wdraża serwer proxy edgemicro-auth
.
Uruchom to polecenie:
edgemicro configure -o [org] -e [env] -u [username]
Gdzie:
org
: nazwa organizacji w Edge (musisz być administratorem organizacji).env
: środowisko w organizacji (np. środowisko 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!
Wstrzyknięcie Edge Microgateway jako sidecar
Aby ręcznie wstrzyknąć Edge Microgateway do kontenera usługi jako serwer proxy typu sidecar, 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 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
.service_deployment_file
– ścieżka do pliku wdrażania usługi, której pod otrzyma usługę towarzyszącą. 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
Możesz teraz przetestować wdrożenie sidecar mikrobramki Edge. Szczegółowe instrukcje znajdziesz w sekcji Testowanie serwera proxy.
Automatyczne wstrzykiwanie sidecar
W kolejnych krokach skonfigurujesz automatyczne wstrzyknięcie podrzędnego kontenera dla klastra Kubernetes. Ta konfiguracja umożliwia wstrzyknięcie mikrobramki Edge jako serwera pośredniczącego sidecar do Kubernetesa.
Instalowanie wtyczki sidecar
Zainstaluj ConfigMap, który umożliwia wstrzyknięcie podrzędnego komponentu do Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
Aby zainstalować usługę webhook, uruchom poniższy skrypt. Usługa webhook jest wymagana do automatycznego wstrzykiwania sidecar:
./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. Kubernetes api-server 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 pomocniczego modułu wstrzykującego w 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 sidecar injector w usłudze 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 pod do wstrzykiwania informacji pomocniczych działa w Twoim klastrze. Przestrzeń nazw
edgemicro-system
to miejsce, w którym są instalowane usługi systemowe, w tym kontroler Ingress, domyślny backend HTTP i moduł wstrzykujący: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
Konfigurowanie i wdrażanie Edge Microgateway
W następnym kroku uruchomisz interaktywny skrypt, aby utworzyć konfigurację Edge Microgateway powiązaną z przestrzenią nazw Kubernetes. Następnie wstrzyknij konfigurację do klastra Kubernetes.
Uruchom poniższy interaktywny skrypt i podaj wymagane parametry. Polecenie generuje profil konfiguracji, którego użyjesz w następnym kroku.
./install/kubernetes/webhook-edgemicro-patch.sh
Informacje o parametrach wejściowych znajdziesz w materiałach referencyjnych.
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 nazwę użytkownika Apigee (adres e-mail). Na przykład:
jdoe@google.com
.Apigee password [required]:
Wpisz hasło do Apigee.
Apigee organization [required]:
Wpisz nazwę organizacji Apigee.
Apigee environment [required]:
Wpisz nazwę środowiska swojej organizacji. Na przykład „test”.
Virtual Host [default]:
Naciśnij Enter.
Is this Private Cloud ("n","y") [N/y]:
Jeśli korzystasz z chmury publicznej, wpisz n.
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świetlanie stanu wstrzyknięcia webhooka. 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
Aby włączyć wstrzyknięcie webhooka dla webhooka, uruchom to polecenie:
kubectl label namespace default edgemicro-injection=enabled
Sprawdź ponownie stan wstrzyknięcia webhooka. Teraz jest ona 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
Wdróż testową usługę
Teraz ponownie wdrożyć testową usługę. Edge Microgateway zostanie automatycznie wstrzyknięty do pod usługi.
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
Sprawdź, czy Edge Microgateway został wstrzyknięty do pod 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.
Możesz teraz przetestować automatyczne wdrożenie komponentu pomocniczego Edge Microgateway. Szczegółowe instrukcje znajdziesz w sekcji Testowanie serwera proxy.
Testowanie serwera proxy
W przypadku wdrożenia dodatkowej usługi automatycznie tworzony jest serwer proxy interfejsu API dla Twojej usługi. Nie musisz tworzyć serwera proxy „Edge Microgateway-aware”.
Pobieranie adresu IP Ingress
Dzięki zewnętrznemu adresowi IP obiektu Ingress możesz wywołać usługę spoza klastra.
Uzyskaj zewnętrzny adres IP kontrolera Ingress:
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
dla 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ż użyć tego polecenia, aby ustawić je automatycznie:
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ążesz błąd braku autoryzacji, konfigurując produkt API i aplikację dewelopera w Edge, aby uzyskać prawidłowy klucz interfejsu API. Gdy dodasz klucz do nagłówka autoryzacji wywołania interfejsu API, wywołanie zakończy się powodzeniem i nie zobaczysz tego błędu.
Tworzenie komponentów w Apigee Edge
Następnie utwórz w Apigee Edge usługę API i aplikację dla programistów.
Tworzenie usługi API
- Zaloguj się w Apigee Edge.
- W menu nawigacyjnym po lewej stronie wybierz Opublikuj > Produkty interfejsu API.
- Kliknij + Usługa API. Pojawi się strona produktu.
Wypełnij stronę usługi w ten sposób: W przypadku pól, które nie są wymienione poniżej, możesz użyć wartości domyślnych. Nie zapisuj, dopóki nie otrzymasz instrukcji.
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 Serwery proxy interfejsu API kliknij + Serwer proxy interfejsu API i dodaj edgemicro-auth.
Zapisz usługę API.
Tworzenie aplikacji związanej z programistą
- W menu nawigacyjnym po lewej stronie kliknij Aplikacje.
- Kliknij + Aplikacja. Pojawi się strona Szczegóły aplikacji dewelopera.
Wypełnij stronę Aplikacja dla dewelopera w ten sposób: Nie zapisuj, dopóki nie otrzymasz instrukcji.
Nazwa hello-world-app
Wyświetlana nazwa Edge Micro hello app
Dla programistów Wybierz dewelopera w menu. W sekcji Dane logowania kliknij + Produkt i wybierz utworzony właśnie produkt
hello-world-product
.Kliknij Zapisz.
Wróciłeś/Wróciłaś na stronę z listą wszystkich aplikacji dewelopera.
Wybierz utworzoną aplikację
hello-world-app
.Obok Klucza klienta kliknij Pokaż.
Skopiuj wartość klucza klienta. Ta wartość to klucz interfejsu API, którego użyjesz do bezpiecznego wywoływania interfejsu API usługi
helloworld
.Poczekaj kilka minut. Zmiany wprowadzone w Apigee Edge mogą synchronizować się z instancją Edge Microgateway wdrożonej w klastrze przez kilka minut.
Wywoływanie interfejsu API
Po pobraniu zmian konfiguracji do mikrobramki możesz przeprowadzić te testy.
Wywoływanie interfejsu API bez klucza API. Pojawi się komunikat o błędzie, jak pokazano poniżej:
curl $GATEWAY_IP
Oczekiwany wynik:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
Aby wywołać interfejs API, potrzebujesz klucza API.
Uzyskaj klucz Consumer Key z utworzonej przez siebie aplikacji dewelopera. Ta wartość to klucz 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żona w podzbiorze. Wywołanie tej usługi zostało najpierw przekazane do Edge Microgateway, gdzie przeprowadzono uwierzytelnianie. Jeśli zobaczysz odpowiedź „Hello world”, oznacza to, że Edge Microgateway został skonfigurowany do działania jako serwer proxy w kontenerze usługi helloworld.
Co dalej?
Więcej informacji o dodawaniu wtyczek niestandardowych, skalowaniu wdrożenia, wprowadzaniu zmian w konfiguracji i innych zadaniach znajdziesz w sekcji Tasks (Zadania).