Udostępnij za pośrednictwem


Nawiązywanie połączenia z zarządzanym administratorem aplikacji Spring w usłudze Azure Container Apps

Składnik zarządzany przez administratora platformy Spring oferuje interfejs administracyjny dla aplikacji internetowych Spring Boot, które uwidaczniają punkty końcowe siłownika. Jako składnik zarządzany w usłudze Azure Container Apps możesz łatwo powiązać aplikację kontenera z usługą Admin for Spring w celu zapewnienia bezproblemowej integracji i zarządzania.

W tym samouczku pokazano, jak utworzyć składnik Admin for Spring Java i powiązać go z aplikacją kontenera, aby móc łatwo monitorować aplikacje Spring i zarządzać nimi.

Zrzut ekranu przedstawiający omówienie pulpitu nawigacyjnego Administrator usługi Spring Insights.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Utwórz składnik Admin for Spring Java.
  • Powiąż aplikację kontenera ze składnikiem Admin for Spring Java.

Jeśli chcesz zintegrować Admin for Spring z serwerem Eureka Server for Spring, zobacz Integracja Admina dla Spring z serwerem Eureka dla Spring w Container Apps zamiast tego.

Ważne

W tym samouczku są używane usługi, które mogą mieć wpływ na rachunek za korzystanie z platformy Azure. Jeśli zdecydujesz się postępować zgodnie z instrukcjami, upewnij się, że usunięto zasoby opisane w tym artykule, aby uniknąć nieoczekiwanych rozliczeń.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Jeśli jeszcze go nie masz, możesz go utworzyć bezpłatnie.
  • Azure CLI.

Kwestie wymagające rozważenia

Po uruchomieniu składnika Admin for Spring w usłudze Container Apps należy pamiętać o następujących szczegółach:

Towar Wyjaśnienie
Scope Składniki działają w tym samym środowisku co połączona aplikacja kontenera.
Skalowanie Składniki nie mogą być skalowane. Właściwości skalowania minReplicas i maxReplicas są oba ustawione na 1 tę samą wartość.
Zasoby Alokacja zasobów kontenera dla składników jest stała. Liczba rdzeni procesora CPU wynosi 0,5, a rozmiar pamięci wynosi 1 GB.
Cennik Rozliczenia składników podlegają cenom opartym na zużyciu. Zasoby używane przez składniki zarządzane są rozliczane według aktywnych lub bezczynnych stawek, w zależności od użycia zasobów. Możesz usunąć składniki, które nie są już używane do zatrzymywania rozliczeń.
Wiązanie Aplikacje kontenerowe łączą się ze składnikiem poprzez wiązanie. Powiązania wprowadzają konfiguracje do zmiennych środowiskowych aplikacji kontenera. Po ustanowieniu powiązania aplikacja kontenera może odczytywać wartości konfiguracji ze zmiennych środowiskowych i łączyć się ze składnikiem.

Ustawienia

Przed rozpoczęciem pracy ze składnikiem Admin for Spring należy utworzyć wymagane zasoby.

Poniższe polecenia ułatwiają tworzenie grupy zasobów i środowiska aplikacji kontenera.

  1. Utwórz zmienne do obsługi konfiguracji aplikacji. Te wartości są udostępniane na potrzeby tej lekcji.

    export LOCATION=eastus
    export RESOURCE_GROUP=my-resource-group
    export ENVIRONMENT=my-environment
    export JAVA_COMPONENT_NAME=admin
    export APP_NAME=sample-admin-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
    
    Zmienna opis
    LOCATION Lokalizacja regionu świadczenia usługi Azure, w której tworzysz aplikację kontenera i składnik Java.
    ENVIRONMENT Nazwa środowiska aplikacji kontenera dla aplikacji demonstracyjnej.
    RESOURCE_GROUP Nazwa grupy zasobów platformy Azure dla aplikacji demonstracyjnej.
    JAVA_COMPONENT_NAME Nazwa składnika Java utworzonego dla aplikacji kontenera. W tym przypadku utworzysz składnik Admin for Spring Java.
    IMAGE Obraz kontenera używany w aplikacji kontenera.
  2. Zaloguj się do Azure przy użyciu Azure CLI.

    az login
    
  3. Utwórz grupę zasobów.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    W przypadku użycia parametru --query, odpowiedź jest filtrowana do prostego komunikatu o sukcesie lub porażce.

  4. Utwórz środowisko aplikacji kontenera.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Użyj składnika

Teraz, gdy masz istniejące środowisko, możesz utworzyć aplikację kontenera i powiązać ją z wystąpieniem komponentu Java w komponencie Admin dla Spring.

  1. Utwórz składnik Admin for Spring Java.

    az containerapp env java-component admin-for-spring create \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 1 \
        --max-replicas 1
    
  2. Zaktualizuj składnik Admin for Spring Java.

    az containerapp env java-component admin-for-spring update \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --min-replicas 2 \
        --max-replicas 2
    

Połącz swoją aplikację kontenera z komponentem Admin for Spring Java

  1. Utwórz aplikację kontenera i powiąż ją ze składnikiem Admin for Spring.

    az containerapp create \
        --name $APP_NAME \
        --resource-group $RESOURCE_GROUP \
        --environment $ENVIRONMENT \
        --image $IMAGE \
        --min-replicas 1 \
        --max-replicas 1 \
        --ingress external \
        --target-port 8080 \
        --bind $JAVA_COMPONENT_NAME
    

Operacja powiązania łączy aplikację kontenera ze składnikiem Admin for Spring Java. Aplikacja kontenerowa może teraz odczytywać wartości konfiguracji ze zmiennych środowiskowych, w szczególności właściwość SPRING_BOOT_ADMIN_CLIENT_URL, i łączyć się ze składnikiem Admin for Spring.

Powiązanie wprowadza również następującą właściwość:

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

Ta właściwość wskazuje, że klient składnika Admin for Spring powinien używać adresu IP wystąpienia aplikacji kontenera podczas nawiązywania połączenia z administratorem serwera Spring.

Opcjonalnie: Usuń powiązanie aplikacji kontenera ze składnika Admin for Spring Java

Aby usunąć powiązanie z aplikacji kontenera, użyj --unbind opcji .

az containerapp update \
    --name $APP_NAME \
    --unbind $JAVA_COMPONENT_NAME \
    --resource-group $RESOURCE_GROUP

Wyświetl pulpit nawigacyjny

Ważne

Aby wyświetlić pulpit nawigacyjny, Twoje konto musi mieć przypisaną co najmniej Microsoft.App/managedEnvironments/write rolę w zasobie środowiska zarządzanego. Możesz jawnie przypisać zasobowi rolę Owner lub Contributor. Możesz również wykonać kroki tworzenia niestandardowej definicji roli i przypisywania jej do konta.

Uwaga

Pulpit nawigacyjny nie jest dostępny na platformie Azure obsługiwanej przez firmę 21Vianet.

  1. Utwórz definicję roli niestandardowej.

    az role definition create --role-definition '{
        "Name": "<ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Pamiętaj, aby zastąpić symbole zastępcze w nawiasach <> swoimi wartościami.

  2. Przypisz rolę niestandardową do konta w zasobie środowiska zarządzanego.

    Pobierz identyfikator zasobu środowiska zarządzanego:

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. Przypisz rolę do swojego konta.

    Przed uruchomieniem tego polecenia zastąp symbol zastępczy — jak wskazano w nawiasach <> — swoim identyfikatorem użytkownika, identyfikatorem jednostki usługi lub nazwą roli.

    az role assignment create \
        --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
        --role "<ROLE_NAME>" \
        --scope $ENVIRONMENT_ID
    

    Uwaga

    Wartość <USER_OR_SERVICE_PRINCIPAL_ID> powinna być tożsamością używaną do uzyskiwania dostępu do witryny Azure Portal. Wartość <ROLE_NAME> to nazwa przypisana w kroku 1.

  4. Pobierz adres URL pulpitu nawigacyjnego administratora platformy Spring.

    az containerapp env java-component admin-for-spring show \
        --environment $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --name $JAVA_COMPONENT_NAME \
        --query properties.ingress.fqdn \
        --output tsv
    

    To polecenie zwraca adres URL, którego można użyć do uzyskiwania dostępu do pulpitu nawigacyjnego administratora platformy Spring. Pulpit nawigacyjny umożliwia również wyświetlanie aplikacji kontenera, jak pokazano na poniższym zrzucie ekranu.

    Zrzut ekranu przedstawiający omówienie pulpitu nawigacyjnego administratora platformy Spring.

Czyszczenie zasobów

Zasoby utworzone w tym samouczku mają wpływ na rachunek za korzystanie z platformy Azure. Jeśli nie planujesz długoterminowego korzystania z tych usług, uruchom następujące polecenie, aby usunąć wszystko, co zostało utworzone w tym samouczku.

az group delete --resource-group $RESOURCE_GROUP

Zależność

Jeśli używasz składnika administracyjnego we własnej aplikacji kontenera, dodaj następującą zależność w pliku pom.xml . Zastąp numer wersji najnowszą wersją dostępną w repozytorium Maven.

<dependency>
    <groupId>de.codecentric</groupId>
    <version>3.3.2</version>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

Uwaga

Nie musisz dodawać zależności klienta początkowego dla Spring Boot Admin, jeśli włączysz agenta Java w aplikacji kontenerowej, poprzez uruchomienie następującego polecenia w Azure CLI:

az containerapp update --enable-java-agent \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME

Konfigurowalne właściwości

Począwszy od platformy Spring Boot 2, punkty końcowe inne niż health i info nie są domyślnie udostępniane. Można je uwidocznić, dodając następującą konfigurację w pliku application.properties .

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

Lista dozwolonych konfiguracji dla administratora platformy Spring

Poniższa lista zawiera szczegółowe informacje o właściwościach składnika administracyjnego, które można skonfigurować dla aplikacji. Aby uzyskać więcej informacji, zobacz Spring Boot Admin.

Nazwa właściwości opis Domyślna wartość
spring.boot.admin.server.enabled Włącza serwer administracyjny spring boot. true
spring.boot.admin.context-path Prefiks ścieżki, w którym są obsługiwane statyczne zasoby i interfejs API serwera administracyjnego. Względem Dispatcher-Servlet.
spring.boot.admin.monitor.status-interval Przedział czasu w milisekundach w celu sprawdzenia stanu wystąpień. 10,000ms
spring.boot.admin.monitor.status-lifetime Okres istnienia stanu w milisekundach. Stan nie jest aktualizowany tak długo, jak ostatni stan nie wygasł. 10 000 ms
spring.boot.admin.monitor.info-interval Przedział czasu w milisekundach w celu sprawdzenia informacji o wystąpieniach. 1m
spring.boot.admin.monitor.info-lifetime Okres istnienia informacji w minutach. Informacje nie są aktualizowane tak długo, jak ostatnie informacje nie wygasły. 1m
spring.boot.admin.monitor.default-timeout Domyślny limit czasu podczas tworzenia żądań. Poszczególne wartości dla określonych punktów końcowych można zastąpić przy użyciu polecenia spring.boot.admin.monitor.timeout.*. 10,000
spring.boot.admin.monitor.timeout.* Pary klucz-wartość z limitem czasu dla każdej pary endpointId. Wartość domyślna to default-timeout.
spring.boot.admin.monitor.default-retries Domyślna liczba ponownych prób dla żądań zakończonych niepowodzeniem. Żądania modyfikujące dane (PUT, POST, , PATCHDELETE) nie są ponawiane. Poszczególne wartości dla określonych punktów końcowych można zastąpić przy użyciu polecenia spring.boot.admin.monitor.retries.*. 0
spring.boot.admin.monitor.retries.* Pary klucz-wartość z liczbą prób ponawiania na endpointId. Żądania modyfikujące dane (PUT, POST, , PATCHDELETE) nie są ponawiane. Wartość domyślna to default-retries.
spring.boot.admin.metadata-keys-to-sanitize Wartości metadanych dla kluczy, które pasują do tych wzorców wyrażeń regularnych, są używane do sanityzacji we wszystkich danych wyjściowych JSON. Począwszy od platformy Spring Boot 3, wszystkie wartości siłowników są domyślnie maskowane. Aby uzyskać więcej informacji na temat konfigurowania procesu niesanityzacji, zobacz Oczyszczanie poufnych wartości. ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$"
spring.boot.admin.probed-endpoints W przypadku aplikacji klienckich Spring Boot 1.x, Spring Boot Admin bada określone punkty końcowe przy użyciu żądania OPTIONS. Jeśli ścieżka różni się od identyfikatora, możesz określić tę wartość jako id:path — na przykład health:ping. "health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents"
spring.boot.admin.instance-proxy.ignored-headers Nagłówki, które nie mają być przekazywane podczas wysyłania żądań do klientów. "Cookie", "Set-Cookie", "Authorization"
spring.boot.admin.ui.title Wyświetlany tytuł strony. "Spring Boot Admin"
spring.boot.admin.ui.poll-timer.cache Czas trwania sondowania w milisekundach w celu pobrania nowych danych pamięci podręcznej. 2500
spring.boot.admin.ui.poll-timer.datasource Czas trwania sondowania w milisekundach do pobrania nowych danych źródłowych. 2500
spring.boot.admin.ui.poll-timer.gc Czas trwania sondowania w milisekundach w celu pobrania nowych danych gc. 2500
spring.boot.admin.ui.poll-timer.process Czas trwania sondowania w milisekundach w celu pobrania nowych danych procesu. 2500
spring.boot.admin.ui.poll-timer.memory Czas trwania sondowania w milisekundach w celu pobrania nowych danych pamięci. 2500
spring.boot.admin.ui.poll-timer.threads Czas trwania sondowania w milisekundach w celu pobrania nowych danych wątków. 2500
spring.boot.admin.ui.poll-timer.logfile Czas trwania sondowania w milisekundach w celu pobrania nowych danych pliku dziennika. 1000
spring.boot.admin.ui.enable-toasts Umożliwia włączanie lub wyłączanie powiadomień typu toast. false
spring.boot.admin.ui.title Wartość tytułu okna przeglądarki. ""
spring.boot.admin.ui.brand Kod HTML jest przetwarzany w nagłówku nawigacji i domyślnie oznaczony etykietą Spring Boot Admin. Domyślnie po jego nazwie następuje logo administratora platformy Spring Boot. ""
management.scheme Wartość, która jest zastępowana w adresie URL usługi używanym do uzyskiwania dostępu do punktów końcowych siłownika.
management.address Wartość, która jest zastępowana w adresie URL usługi używanym do uzyskiwania dostępu do punktów końcowych siłownika.
management.port Wartość, która jest zastępowana w adresie URL usługi używanym do uzyskiwania dostępu do punktów końcowych siłownika.
management.context-path Wartość dołączona do adresu URL usługi używanego do uzyskiwania dostępu do punktów końcowych siłownika. ${spring.boot.admin.discovery.converter.management-context-path}
health.path Wartość dołączona do adresu URL usługi używanego do sprawdzania kondycji. Ignorowane przez element EurekaServiceInstanceConverter. ${spring.boot.admin.discovery.converter.health-endpoint}
spring.boot.admin.discovery.enabled DiscoveryClient Włącza obsługę serwera administracyjnego. true
spring.boot.admin.discovery.converter.management-context-path Wartość dołączana do service-url odkrytej usługi, gdy wartość management-url jest konwertowana przez DefaultServiceInstanceConverter. /actuator
spring.boot.admin.discovery.converter.health-endpoint-path Wartość, która jest dołączona do management-url odnalezionej usługi, gdy wartość health-url jest konwertowana przez DefaultServiceInstanceConverter element. "health"
spring.boot.admin.discovery.ignored-services Usługi ignorowane podczas korzystania z mechanizmu odnajdywania i niezarejestrowane jako aplikacja. Obsługuje proste wzorce, takie jak "foo*", "*bar"i "foo*bar*".
spring.boot.admin.discovery.services Usługi uwzględnione w przypadku korzystania z odnajdywania i zarejestrowania jako aplikacji. Obsługuje proste wzorce, takie jak "foo*", "*bar"i "foo*bar*". "*"
spring.boot.admin.discovery.ignored-instances-metadata Usługi ignorowane, jeśli zawierają co najmniej jeden element metadanych, który pasuje do wzorców na tej liście. Obsługuje wzorce, takie jak "discoverable=false".
spring.boot.admin.discovery.instances-metadata Usługi uwzględnione, jeśli zawierają co najmniej jeden element metadanych, który pasuje do wzorców na liście. Obsługuje wzorce, takie jak "discoverable=true".

Typowe konfiguracje

  • Rejestrowanie powiązanych konfiguracji:
    • logging.level.*
    • logging.group.*
    • Wszelkie inne konfiguracje w logging.* przestrzeni nazw. Na przykład nie należy używać logging.file do zapisywania plików dziennika.

Ograniczenia

  • Pulpit nawigacyjny administratora platformy Spring Boot nie jest dostępny na platformie Azure obsługiwanej przez firmę 21Vianet.

Integrowanie zarządzanego administratora platformy Spring z serwerem Eureka dla platformy Spring