Samouczek: 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.
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ć aplikację Admin for Spring z programem Eureka Server for Spring, zobacz Integrate Admin for Spring with Eureka Server for Spring for Container Apps (Integracja administratora platformy Spring z serwerem Eureka dla platformy Spring w usłudze Container Apps ).
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.
- Interfejs wiersza polecenia platformy Azure.
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ładnik nie może skalować. Właściwości minReplicas skalowania i maxReplicas są ustawione na 1 wartość . |
Zasoby | Alokacja zasobów kontenera dla składników jest stała. Liczba rdzeni procesora CPU wynosi 0,5, a rozmiar pamięci to 1 Gi. |
Cennik | Rozliczenia składników są objęte cenami opartymi na użyciu. Zasoby używane przez składniki zarządzane są rozliczane według stawek aktywnych/bezczynnych. Możesz usunąć składniki, które nie są już używane do zatrzymywania rozliczeń. |
Wiązanie | Aplikacje kontenera łączą się ze składnikiem za pośrednictwem powiązania. 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 najpierw utworzyć wymagane zasoby.
Poniższe polecenia ułatwiają tworzenie grupy zasobów i środowiska aplikacji kontenera.
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. Zaloguj się na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
az login
Utwórz grupę zasobów.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
W przypadku użycia parametru odpowiedź filtruje w dół do prostego komunikatu o powodzeniu
--query
lub niepowodzeniu.Utwórz środowisko aplikacji kontenera.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Używanie składnika
Teraz, gdy masz istniejące środowisko, możesz utworzyć aplikację kontenera i powiązać ją z wystąpieniem składnika Java składnika Admin for Spring.
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
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
Wiązanie aplikacji kontenera ze składnikiem Admin for Spring Java
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 wiąże aplikację kontenera ze składnikiem Admin for Spring Java. Aplikacja kontenera może teraz odczytywać wartości konfiguracji ze zmiennych środowiskowych, przede wszystkim SPRING_BOOT_ADMIN_CLIENT_URL
właściwości 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 preferować adres 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, musisz mieć co najmniej Microsoft.App/managedEnvironments/write
rolę przypisaną do konta w zasobie środowiska zarządzanego. Możesz jawnie przypisać Owner
rolę lub Contributor
dla zasobu. Możesz również wykonać kroki tworzenia niestandardowej definicji roli i przypisywania jej do konta.
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 między
<>
nawiasami wartościami.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)
Przypisz rolę do swojego konta.
Przed uruchomieniem tego polecenia zastąp symbol zastępczy wskazany
<>
przez nawiasy — identyfikatorem użytkownika lub 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.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.
Czyszczenie zasobów
Zasoby utworzone w tym samouczku mają wpływ na rachunek za platformę Azure. Jeśli nie zamierzasz korzystać z tych usług w dłuższej perspektywie, uruchom następujące polecenie, aby usunąć wszystkie elementy utworzone w tym samouczku.
az group delete --resource-group $RESOURCE_GROUP
Dependency
Jeśli używasz składnika administracyjnego we własnej aplikacji kontenera, musisz dodać 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>
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 (Administrator spring boot).
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 zasoby statyczne i interfejs API serwera administracyjnego. Względem dyspozytora-Serwletu. | |
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 na endpointId . |
Wartością domyślną default-timeout jest wartość. |
spring.boot.admin.monitor.default-retries |
Domyślna liczba ponownych prób dla żądań zakończonych niepowodzeniem. Żądania modyfikujące dane (PUT , POST , , PATCH DELETE ) nigdy 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ą ponownych prób na endpointId . Żądania modyfikujące dane (PUT , POST , , PATCH DELETE ) nigdy nie są ponawiane. |
Wartością domyślną default-retries jest wartość. |
spring.boot.admin.metadata-keys-to-sanitize |
Wartości metadanych kluczy pasujących do tych wzorców wyrażeń regularnych używanych do oczyszczania 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 platformy Spring Boot 1.x sondy administratora platformy Spring Boot dla określonych punktów końcowych przy użyciu OPTIONS żądania. Jeśli ścieżka różni się od identyfikatora, możesz określić tę wartość na id:path 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 nie są przekazywane podczas przesył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 w celu pobrania nowych danych źródła danych. | 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 |
Włącza lub wyłącza wyskakujące powiadomienia. | false |
spring.boot.admin.ui.title |
Wartość tytułu okna przeglądarki. | "" |
spring.boot.admin.ui.brand |
Kod HTML renderowany w nagłówku nawigacji i domyślnie jest domyślnie oznaczony etykietą Administratora platformy Spring Boot. 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łączona do service-url odnalezionej usługi, gdy management-url wartość jest konwertowana przez DefaultServiceInstanceConverter element . |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Wartość dołączona do management-url odnalezionej usługi, gdy health-url wartość jest konwertowana przez DefaultServiceInstanceConverter element . |
"health" |
spring.boot.admin.discovery.ignored-services |
Usługi, które są ignorowane podczas korzystania z odnajdywania i nie są zarejestrowane 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 zarejestrowanego jako aplikacja. 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 przestrzeni
logging.*
nazw powinny być zabronione. Na przykład zapisywanie plików dziennika przy użyciu polecenialogging.file
powinno być zabronione.
Powiązana zawartość
Integrowanie zarządzanego administratora platformy Spring z serwerem Eureka dla platformy Spring