Wdrażanie Edge Microgateway jako pomocniczego serwera proxy

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:

  1. Wdróż przykład:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. 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
    
  3. 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.

  1. 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 poleceniu edgemicro configure.
  • your_env – środowisko określone w poleceniu edgemicro configure.
  • your_key – klucz zwrócony z polecenia edgemicro configure.
  • your_secret – obiekt tajny zwrócony przez polecenie edgemicro configure.
  • config_file_path – ścieżka do pliku konfiguracji Edge Micro zwróconego przez polecenie edgemicro 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

  1. 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
    
  2. 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

  1. Zainstaluj ConfigMap, który umożliwia wstrzyknięcie pliku pomocniczego Edge Microgateway:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

  1. 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:

    1. Namespace to deploy application [default]:

      Naciśnij Enter.

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      Wpisz n.

    3. Apigee username [required]:

      Wpisz swoją nazwę użytkownika (adres e-mail) Apigee. Na przykład: jdoe@google.com.

    4. Apigee password [required]:

      Wpisz swoje hasło Apigee.

    5. Apigee organization [required]:

      Wpisz nazwę organizacji w Apigee.

    6. Apigee environment [required]:

      Wpisz nazwę środowiska dla organizacji. Na przykład „test”.

    7. Virtual Host [default]:

      Naciśnij Enter.

    8. Is this Private Cloud ("n","y") [N/y]:

      Wpisz n, jeśli korzystasz z chmury publicznej.

    9. Edgemicro Key. Press Enter to generate:

      Naciśnij Enter.

    10. Edgemicro Secret. Press Enter to generate:

      Naciśnij Enter.

    11. 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.
      *****************************************************************************************
      
    12. 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
      ********************************************************************************************************
      
  2. 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
  3. 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
    
  4. Uruchom to polecenie, aby włączyć wstrzyknięcie webhooka:

    kubectl label namespace default edgemicro-injection=enabled
  5. 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.

  1. 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
    
  2. 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:]")
  3. Sprawdź, czy zmienna została wyeksportowana. Na przykład:

    echo $GATEWAY_IP

    Przykładowe dane wyjściowe:

    35.238.249.62
    
  4. 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

  1. Zaloguj się w Apigee Edge.
  2. W bocznym menu nawigacyjnym wybierz Opublikuj > Usługi API.
  3. Kliknij + Usługa API. Pojawia się strona produktu.
  4. 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

  5. W sekcji Ścieżka kliknij + Zasób niestandardowy.

  6. Dodaj ścieżkę /.

  7. Ponownie kliknij + Zasób niestandardowy i dodaj ścieżkę /**.

  8. W sekcji API Proxies kliknij + API Proxy i dodaj edgemicro-auth.

  9. Zapisz usługę API.

Tworzenie aplikacji związanej z programistą

  1. Wybierz Aplikacje w bocznym menu nawigacyjnym.
  2. Kliknij + Aplikacja. Pojawi się strona Szczegóły aplikacji dewelopera.
  3. 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.
  4. W sekcji Dane logowania kliknij + usługa i wybierz utworzony przed chwilą hello-world-product.

  5. Kliknij Zapisz.

  6. Jesteś z powrotem na stronie z listą wszystkich aplikacji dla deweloperów.

  7. Wybierz utworzoną przed chwilą aplikację hello-world-app.

  8. Kliknij Pokaż obok Klucz klienta.

  9. 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.

  10. 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.

  1. 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.

  2. 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ć.