Wdrażanie Edge Microgateway jako pomocniczego serwera proxy

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Wprowadzenie

Z tego artykułu dowiesz się, jak uruchomić Edge Microgateway w klastrze Kubernetes jako pomocnicze proxy. Wdrażanie kontenera pomocniczego możesz przeprowadzić na 2 sposoby: ręcznie i automatycznie. W tym artykule opisujemy 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 usługi testowej

Wdróż prostą usługę „hello” i sprawdź wdrożenie:

  1. Wdróż próbkę:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. Sprawdź, czy usługa jest uruchomiona. Może minąć kilka chwil, zanim pod przejdzie w stan 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 go później, po włączeniu wstrzykiwania kontenera dodatkowego:

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

Ręczne wstrzykiwanie kontenera pomocniczego

Z 2 opcji wstrzykiwania kontenera dodatkowego ręczne wstrzykiwanie jest prostsze i bardziej bezpośrednie. Można je wykonać za pomocą jednego polecenia kubectl.

Konfigurowanie Edge Microgateway

To 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) zostaną zapisane 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!
    

Wstrzykiwanie Edge Microgateway jako kontenera pomocniczego

Aby ręcznie wstrzyknąć Edge Microgateway do poda usługi jako pomocnicze 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 określone w poleceniu edgemicro configure.
  • your_key – klucz zwrócony przez polecenie edgemicro configure.
  • your_secret – tajny klucz zwrócony przez polecenie edgemicro configure.
  • config_file_path – ścieżka do pliku konfiguracyjnego Edge Micro zwrócona przez polecenie edgemicro configure.
  • service_deployment_file – ścieżka do pliku wdrożenia usługi, której pod otrzyma dodatkową 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. Możesz teraz przetestować wdrożenie Edge Microgateway w kontenerze pomocniczym. Szczegółowe instrukcje znajdziesz w artykule Testowanie proxy.

Korzystanie z automatycznego wstrzykiwania kontenera pomocniczego

W kolejnych krokach skonfigurujesz automatyczne wstrzykiwanie kontenera dodatkowego w klastrze Kubernetes. Ta konfiguracja umożliwia wstrzykiwanie Edge Microgateway jako proxy typu sidecar do Kubernetes.

Instalowanie wstrzykiwacza kontenera pomocniczego

  1. Zainstaluj ConfigMap, który umożliwia wstrzykiwanie komponentu dodatkowego Edge Microgateway:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. Aby zainstalować usługę webhook, wykonaj ten skrypt. Usługa webhooka jest wymagana w przypadku automatycznego wstrzykiwania kontenera dodatkowego:

    .
    ./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ływania 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 webhook wstrzykiwania pomocniczego proxy 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 wstrzykiwania komponentu pomocniczego 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 wstrzykiwania kontenera dodatkowego. Przestrzeń nazwedgemicro-system to miejsce, w którym są instalowane usługi systemowe, w tym kontroler Ingress, domyślny backend HTTP i wstrzykiwacz sidecar:

    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ć konfigurację Edge Microgateway powiązaną z przestrzenią nazw Kubernetes. Następnie wstrzykniesz konfigurację do klastra Kubernetes.

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

    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 nazwę użytkownika Apigee (adres e-mail). Przykład: jdoe@google.com.

    4. Apigee password [required]:

      Wpisz hasło do Apigee.

    5. Apigee organization [required]:

      Wpisz nazwę organizacji Apigee.

    6. Apigee environment [required]:

      Wpisz nazwę środowiska dla swojej 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 chmury publicznej, 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 kubectl polecenie wstrzykuje wygenerowany profil konfiguracji Edge Microgateway do Kubernetes:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. Wyświetl stan wstrzykiwania 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. Aby włączyć wstrzykiwanie webhooka, uruchom to polecenie:

    kubectl label namespace default edgemicro-injection=enabled
  5. Ponownie sprawdź stan wstrzykiwania webhooka. Zwróć uwagę, że jest teraz 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óż usługę testową

Teraz ponownie wdróż usługę testową. Edge Microgateway zostanie automatycznie wstrzyknięty do poda usługi.

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

Sprawdź, czy Edge Microgateway został wstrzyknięty 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 zakończyć polecenie.

Możesz teraz przetestować automatyczne wdrożenie Edge Microgateway w kontenerze pomocniczym. Szczegółowe instrukcje znajdziesz w artykule Testowanie proxy.

Testowanie serwera proxy

W przypadku wdrożenia typu sidecar proxy interfejsu API dla Twojej usługi jest tworzone automatycznie. Nie musisz tworzyć serwera proxy „obsługującego Edge Microgateway”.

Pobieranie adresu IP obiektu Ingress

Dzięki zewnętrznemu adresowi IP obiektu Ingress możesz wywoływać usługę spoza klastra.

  1. 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
    
  2. Skopiuj wartość EXTERNAL-IP dla 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ż użyć tego polecenia, aby ustawić go za Ciebie:

    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. Wywołaj usługę:

    curl $GATEWAY_IP

    Dane wyjściowe:

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

    Następnie rozwiążesz problem z brakiem autoryzacji, konfigurując usługę 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 usługę API i aplikację dewelopera w Apigee Edge.

Tworzenie usługi API

  1. Zaloguj się w Apigee Edge.
  2. W menu nawigacyjnym po lewej stronie wybierz Opublikuj > Produkty interfejsu API.
  3. Kliknij + Produkt API. Wyświetli się strona produktu.
  4. Wypełnij stronę produktu 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 zmian, dopóki nie pojawi się odpowiednia 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 (Proxy interfejsów API) kliknij + API Proxy (+ Proxy interfejsu API) i dodaj edgemicro-auth.

  9. Zapisz usługę API.

Tworzenie aplikacji związanej z programistą

  1. W menu nawigacyjnym po lewej stronie wybierz Aplikacje.
  2. Kliknij + Aplikacja. Wyświetli się strona z informacjami o aplikacji dewelopera.
  3. Wypełnij stronę aplikacji dewelopera w ten sposób: Nie zapisuj, dopóki nie pojawi się odpowiednia instrukcja.

    Nazwa hello-world-app
    Wyświetlana nazwa Edge Micro hello app
    Dla programistów Wybierz dewelopera z menu.
  4. W sekcji Dane logowania kliknij + Usługa i wybierz utworzoną usługęhello-world-product.

  5. Kliknij Zapisz.

  6. Wrócisz na stronę z listą wszystkich aplikacji dewelopera.

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

  8. Obok pozycji Klucz klienta kliknij Pokaż.

  9. Skopiuj wartość klucza klienta. Ta wartość to klucz interfejsu API, którego będziesz używać do bezpiecznego wywoływania interfejsu API usługi helloworld.

  10. Poczekaj kilka minut. Synchronizacja zmian wprowadzonych w Apigee Edge z instancją Edge Microgateway wdrożoną w klastrze zajmuje kilka minut.

Wywoływanie interfejsu API

Po wprowadzeniu zmian w konfiguracji w mikrobramie możesz przeprowadzić te testy:

  1. wywoływać interfejs API bez klucza interfejsu API. Pojawi się komunikat o błędzie, jak pokazano poniżej:

    curl $GATEWAY_IP

    Oczekiwane dane wyjściowe:

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

    Aby wywoływać interfejs API, potrzebujesz klucza interfejsu API.

  2. Pobierz klucz klienta z utworzonej aplikacji dewelopera. Ta wartość to klucz 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
    

    Odpowiedź „Hello world” jest zwracana przez usługę helloworld wdrożoną w pode. Wywołanie tej usługi najpierw przeszło przez Edge Microgateway, gdzie przeprowadzono uwierzytelnianie. Jeśli zobaczysz odpowiedź „Hello world”, oznacza to, że udało Ci się skonfigurować Edge Microgateway tak, aby działał jako pomocnicze proxy w podzie 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 Zadania.