Wdrażanie Edge Microgateway jako pomocniczego serwera proxy

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:

  1. Wdrażanie przykładu:

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

  1. 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 komendzie edgemicro configure.
  • your_env – środowisko określone w instrukcji edgemicro configure.
  • your_key – klucz zwrócony przez polecenie edgemicro configure.
  • your_secret – wartość tajna zwrócona 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 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

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

  1. 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
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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.

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

    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). Na 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 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 polecenie kubectl wstrzykuje wygenerowany profil konfiguracji Edge Microgateway do Kubernetes:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. 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
    
  4. Aby włączyć wstrzyknięcie webhooka dla webhooka, uruchom to polecenie:

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

  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 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:]")
  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ąż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

  1. Zaloguj się w Apigee Edge.
  2. W menu nawigacyjnym po lewej stronie wybierz Opublikuj > Produkty interfejsu API.
  3. Kliknij + Usługa API. Pojawi się strona produktu.
  4. 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

  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 interfejsu API kliknij + Serwer 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 kliknij Aplikacje.
  2. Kliknij + Aplikacja. Pojawi się strona Szczegóły aplikacji dewelopera.
  3. 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.
  4. W sekcji Dane logowania kliknij + Produkt i wybierz utworzony właśnie produkt hello-world-product.

  5. Kliknij Zapisz.

  6. Wróciłeś/Wróciłaś na stronę z listą wszystkich aplikacji dewelopera.

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

  8. Obok Klucza klienta kliknij Pokaż.

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

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

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

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