Wdrażanie Edge Microgateway jako pomocniczego serwera proxy

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Wprowadzenie

W tym artykule wyjaśniamy, jak uruchomić Edge Microgateway w klastrze Kubernetes jako pomocniczy serwer proxy. Dostępne są 2 opcje wdrażania pomocniczego: ręczne i automatyczne wstrzyknięcie kodu. W tym temacie opisano obie 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 usługi testowej

Wdróż proste polecenie „hello” i sprawdź wdrożenie:

  1. Wdróż przykład:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. Sprawdź, czy usługa jest uruchomiona. Zaczekaj chwilę, zanim pod uruchamia się do stanu 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, gdy włączysz wstrzykiwanie przez aplikację pomocniczą:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

Korzystanie z ręcznego wstrzykiwania danych pomocniczych

Spośród dwóch opcji wstrzykiwania danych z boku i można to zrobić za pomocą jednego polecenia kubectl.

Konfigurowanie 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 Twojej 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 pomoc 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 określona w poleceniu edgemicro configure.
  • your_env – środowisko podane w poleceniu edgemicro configure.
  • your_key – klucz zwrócony z polecenia edgemicro configure.
  • your_secret – obiekt tajny zwrócony z polecenia edgemicro configure.
  • config_file_path – ścieżka do pliku konfiguracji Edge Micro zwrócona z polecenia edgemicro configure.
  • service_deployment_file – ścieżka do pliku wdrożenia usługi, której pod uzyskać pomoc 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

  1. Sprawdź wdrożenia usług:

    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. Otwórz Przetestuj serwer proxy, aby wyświetlić szczegółowe instrukcje.

Korzystanie z automatycznego wstrzykiwania danych do aplikacji pomocniczej

W kolejnych krokach skonfigurujesz automatyczne wstrzykiwanie plików pomocniczych dla Klaster Kubernetes. Ta konfiguracja umożliwia wstrzykiwanie Edge Microgateway jako pliku pomocniczego do Kubernetes.

Inst. wtryskiwacza bocznego

  1. Instalowanie obiektu ConfigMap który umożliwia wstrzykiwanie kodu jako aplikacji pomocniczej w Edge Microgateway:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. Uruchom poniższy skrypt, aby zainstalować usługę webhooka. Usługa webhooka jest wymagana dla automatyczne wstrzykiwanie danych pomocniczych:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. Dodaj pakiet urzędów 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
    
  4. Zainstaluj webhooka webhooka iniektora pomocniczego 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 tymczasowego wstrzykiwania 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 wykonujący wstrzykiwanie aplikacji pomocniczych. 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 instruktor 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
    

Konfigurowanie i wstrzykiwanie Edge Microgateway

W następnym kroku uruchomisz interaktywny skrypt, aby utworzyć Edge Microgateway konfigurację powiązaną z przestrzenią nazw Kubernetes. Następnie wstrzykujesz kod do klastra Kubernetes.

  1. Uruchom następujący interaktywny skrypt i podaj wymagane parametry. 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 hasło Apigee.

    5. Apigee organization [required]:

      Wpisz nazwę organizacji Apigee.

    6. Apigee environment [required]:

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

    7. Virtual Host [default]:

      Naciśnij Enter.

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

      Jeśli korzystasz z Public Cloud, wpisz n.

    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 wstrzykiwa wygenerowany profil konfiguracji Edge Microgateway w Kubernetes:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. Wyświetl stan wstrzykiwania webhooka. Uwaga: ta funkcja nie jest obecnie 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ć wstrzykiwanie webhooka:

    kubectl label namespace default edgemicro-injection=enabled
  5. Ponownie wyświetl stan wstrzykiwania 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 wstrzyknięty automatycznie. do poda usługi.

kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default

Sprawdź, czy Edge Microgateway został wstrzyknięty do poda podczas testu usługa:

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 pomocniczego Edge Microgateway. Otwórz Przetestuj serwer proxy, aby wyświetlić szczegółowe instrukcje.

Testowanie serwera proxy

W przypadku wdrożenia pomocniczego automatycznie tworzony jest serwer proxy interfejsu API dla Twojej usługi. Ty nie muszą tworzyć instancji „Edge Microgateway-aware” serwera proxy.

Uzyskiwanie adresu IP obiektu Ingress

Za pomocą zewnętrznego adresu IP obiektu Ingress możesz wywołać 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. Ty możesz ręcznie ustawić zmienną:

    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:]")
  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ąż brakujący błąd autoryzacji, konfigurując usługę API i aplikację dla deweloperów na Edge, aby uzyskać prawidłowy klucz interfejsu API. Po dodaniu klucza do autoryzacji dla wywołania interfejsu API, wywołanie zakończy się sukcesem i nie zostanie wyświetlony ten komunikat o błędzie.

Tworzenie komponentów w Apigee Edge

Następnie utwórz w Apigee Edge usługę API i aplikację deweloperską.

Tworzenie usługi API

  1. Zaloguj się w Apigee Edge.
  2. Kliknij Opublikuj > Usługi API w bocznym menu nawigacyjnym.
  3. Kliknij + Usługa API. Pojawi się strona produktu.
  4. Wypełnij stronę produktu w następujący sposób. W przypadku pól, których nie wymieniono poniżej, mogą używać wartości domyślnych. Nie zapisuj karty, dopóki nie pojawi się taka prośba.

    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 Serwery proxy interfejsów API kliknij + Serwer proxy interfejsu API i dodaj edgemicro-auth.

  9. Zapisz usługę API.

Tworzenie aplikacji związanej z programistą

  1. Kliknij Aplikacje w bocznym menu nawigacyjnym.
  2. Kliknij + Aplikacja. Pojawi się strona Szczegóły aplikacji dewelopera.
  3. Wypełnij informacje na stronie dewelopera aplikacji w następujący sposób. Nie zapisuj, dopóki nie pojawi się polecenie to zrobić.

    Nazwa hello-world-app
    Wyświetlana nazwa Edge Micro hello app
    Deweloper Wybierz programistę z menu.
  4. W sekcji Dane logowania kliknij + Usługa i wybierz hello-world-product właśnie utworzony.

  5. Kliknij Zapisz.

  6. Jesteś z powrotem na stronie z listą wszystkich aplikacji dewelopera.

  7. Wybierz nowo utworzoną aplikację hello-world-app.

  8. Kliknij Pokaż obok Klucz klienta.

  9. Skopiuj wartość klucza klienta. Ta wartość jest parametrem Klucz interfejsu API, którego będziesz używać do bezpiecznych wywołań interfejsu API usługę helloworld.

  10. Odczekaj kilka minut. Zmiany wprowadzone w Apigee mogą pojawić się w ciągu kilku minut Krawędź do synchronizacji z instancją Edge Microgateway wdrożoną w klastra.

Wywoływanie interfejsu API

Po przeniesieniu zmian konfiguracji do mikrobramy możesz Wykonaj te testy.

  1. Wywoływanie interfejsu API bez klucza interfejsu API. Pojawi się następujący komunikat o błędzie poniżej:

    curl $GATEWAY_IP

    Oczekiwane dane wyjściowe:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    Aby wykonywać udane wywołania interfejsu API, potrzebujesz klucza interfejsu API.

  2. Uzyskaj klucz klienta z utworzonej aplikacji dewelopera. Ta wartość jest parametrem Klucz interfejsu API potrzebny 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
    

    „Hello world” odpowiedź jest zwracana przez wdrożoną usługę helloworld do poda. Wywołanie tej usługi najpierw przeszło przez Edge Microgateway, w którym przeprowadzono uwierzytelnianie. Jeśli zobaczysz komunikat „Hello world” oznacza to, że udało Ci się skonfigurować Edge Microgateway, jako pomocniczy serwer proxy w podzie usługi helloworld.

Co dalej?

Więcej informacji znajdziesz w sekcji Lista zadań dodawania niestandardowych wtyczek, skalowania wdrożenia, wprowadzania zmian w konfiguracji inne zadania, które warto wykonać.