Nasazení aplikace v Javě pomocí Quarkus v Azure Container Apps
V tomto článku se dozvíte, jak rychle nasadit Red Hat Quarkus v Microsoft Azure Container Apps pomocí jednoduché aplikace CRUD. Aplikace je seznam úkolů s front-endem JavaScriptu a koncovým bodem REST. Azure Database for PostgreSQL poskytuje vrstvu trvalosti aplikace. V článku se dozvíte, jak otestovat aplikaci místně a nasadit ji do Container Apps.
Požadavky
- Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Služba Azure Cloud Shell má všechny tyto předpoklady předinstalované. Další informace najdete v rychlém startu pro Azure Cloud Shell.
- Pokud příkazy v této příručce spouštíte místně (místo použití Azure Cloud Shellu), proveďte následující kroky:
- Připravte místní počítač s nainstalovaným operačním systémem Unix (například Ubuntu, macOS nebo Subsystém Windows pro Linux).
- Nainstalujte implementaci Java SE verze 17 nebo novější (například build Microsoftu openJDK).
- Nainstalujte Maven 3.5.0 nebo novější.
- Nainstalujte Docker nebo Podman pro váš operační systém.
- Nainstalujte jq.
- Nainstalujte cURL.
- Nainstalujte quarkus CLI 3.4.1 nebo novější.
- Azure CLI pro prostředí podobná unixovým systémům. Tento článek vyžaduje pouze variantu Bash Azure CLI.
Nainstalujte Azure CLI a přihlaste se interaktivně pomocí příkazu az login , abyste se před použitím DefaultAzureCredential
kódu přihlásili k Azure.az login
- Tento článek vyžaduje aspoň verzi 2.31.0 Azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
Vytvoření projektu aplikace
Pomocí následujícího příkazu naklonujte ukázkový projekt Java pro tento článek. Ukázka je na GitHubu.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2023-09-13
cd aca-quarkus
Pokud se zobrazí zpráva o tom, že je v odpojeném stavu HEAD , je tato zpráva v bezpečí ignorovat. Vzhledem k tomu, že tento článek nevyžaduje potvrzení, je vhodné odpojit stav HEAD.
Místní testování aplikace Quarkus
Kroky v této části ukazují, jak aplikaci spustit místně.
Quarkus podporuje automatické zřizování nekonfigurovaných služeb ve vývojovém a testovacím režimu. Quarkus se na tuto funkci odkazuje jako na vývojové služby. Řekněme, že zahrnete funkci Quarkus, například připojení k databázové službě. Chcete aplikaci otestovat, ale ještě jste nenakonfigurovali připojení k reálné databázi. Quarkus automaticky spustí verzi zástupných procedur příslušné služby a připojí k ní vaši aplikaci. Další informace najdete v tématu Přehled služby Dev Services v dokumentaci k Quarkus.
Ujistěte se, že je vaše prostředí kontejneru, Docker nebo Podman spuštěné, a pomocí následujícího příkazu přejděte do vývojového režimu Quarkus:
quarkus dev
quarkus dev
Místo toho můžete s Mavenem dosáhnout totéž pomocí mvn quarkus:dev
.
Může se zobrazit dotaz, jestli chcete odesílat telemetrii využití vývojového režimu Quarkus. Pokud ano, odpovězte tak, jak chcete.
Režim vývoje Quarkus umožňuje živé opětovné načítání s kompilací na pozadí. Pokud upravíte jakýkoli aspekt zdrojového kódu aplikace a aktualizujete prohlížeč, uvidíte změny. Pokud dojde k problémům s kompilací nebo nasazením, zobrazí se chybová stránka s informacemi. Režim vývoje Quarkus naslouchá ladicímu programu na portu 5005. Pokud chcete počkat na připojení ladicího programu před spuštěním, předejte -Dsuspend
ho na příkazovém řádku. Pokud ladicí program vůbec nechcete, můžete použít -Ddebug=false
.
Výstup by měl vypadat jako v následujícím příkladu:
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
INFO [io.quarkus] (Quarkus Main Thread) quarkus-todo-demo-app-aca 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.2.0.Final) started in 14.826s. Listening on: http://localhost:8080
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-validator, jdbc-postgresql, narayana-jta, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
--
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
Stiskněte klávesu w na terminálu, kde běží vývojový režim Quarkus. Klávesa w otevře výchozí webový prohlížeč pro zobrazení Todo
aplikace. K grafickému uživatelskému rozhraní http://localhost:8080
aplikace můžete přistupovat také přímo.
Zkuste vybrat několik položek úkolů v seznamu úkolů. Uživatelské rozhraní označuje výběr pomocí přeškrtnutého stylu textu. Novou položku seznamu úkolů můžete přidat také zadáním příkazu Ověřit aplikace todo a stisknutím klávesy ENTER, jak je znázorněno na následujícím snímku obrazovky:
Přístup k rozhraní RESTful API (/api
) a získejte všechny položky úkolů, které se ukládají v místní databázi PostgreSQL:
curl --verbose http://localhost:8080/api | jq .
Výstup by měl vypadat jako v následujícím příkladu:
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /api HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 664
< Content-Type: application/json;charset=UTF-8
<
{ [664 bytes data]
100 664 100 664 0 0 13278 0 --:--:-- --:--:-- --:--:-- 15441
* Connection #0 to host localhost left intact
[
{
"id": 1,
"title": "Introduction to Quarkus Todo App",
"completed": false,
"order": 0,
"url": null
},
{
"id": 2,
"title": "Quarkus on Azure App Service",
"completed": false,
"order": 1,
"url": "https://learn.microsoft.com/en-us/azure/developer/java/eclipse-microprofile/deploy-microprofile-quarkus-java-app-with-maven-plugin"
},
{
"id": 3,
"title": "Quarkus on Azure Container Apps",
"completed": false,
"order": 2,
"url": "https://learn.microsoft.com/en-us/training/modules/deploy-java-quarkus-azure-container-app-postgres/"
},
{
"id": 4,
"title": "Quarkus on Azure Functions",
"completed": false,
"order": 3,
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-quarkus"
},
{
"id": 5,
"title": "Verify Todo apps",
"completed": false,
"order": 5,
"url": null
}
]
Stisknutím klávesy q ukončete vývojový režim Quarkus.
Vytvoření prostředků Azure pro spuštění aplikace Quarkus
Kroky v této části ukazují, jak vytvořit následující prostředky Azure pro spuštění ukázkové aplikace Quarkus:
- Microsoft Azure Database for PostgreSQL
- Microsoft Azure Container Registry
- Container Apps
Některé z těchto prostředků musí mít jedinečné názvy v rozsahu předplatného Azure. K zajištění této jedinečnosti můžete použít iniciály, posloupnost, datum, vzor přípony . Pokud chcete tento vzor použít, pojmenujte prostředky uvedením iniciály, určitého pořadového čísla, dnešního data a nějaké přípony specifické pro prostředek – například rg
"skupina prostředků". Pomocí následujících příkazů definujte některé proměnné prostředí, které se mají použít později:
export UNIQUE_VALUE=<your unique value, such as ejb091223>
export RESOURCE_GROUP_NAME=${UNIQUE_VALUE}rg
export LOCATION=<your desired Azure region for deploying your resources. For example, eastus>
export REGISTRY_NAME=${UNIQUE_VALUE}reg
export DB_SERVER_NAME=${UNIQUE_VALUE}db
export DB_PASSWORD=Secret123456
export ACA_ENV=${UNIQUE_VALUE}env
export ACA_NAME=${UNIQUE_VALUE}aca
Vytvoření Azure Database for PostgreSQL
Azure Database for PostgreSQL je spravovaná služba pro spouštění, správu a škálování vysoce dostupných databází PostgreSQL v cloudu Azure. Tato část vás nasměruje na samostatný rychlý start, který ukazuje, jak vytvořit jeden server Azure Database for PostgreSQL a jak se k němu připojit. Pokud ale budete postupovat podle kroků v rychlém startu, musíte použít nastavení v následující tabulce k přizpůsobení nasazení databáze pro ukázkovou aplikaci Quarkus. Proměnné prostředí nahraďte jejich skutečnými hodnotami při vyplňování polí na webu Azure Portal.
Nastavení | Hodnota | Popis |
---|---|---|
Skupina prostředků | ${RESOURCE_GROUP_NAME} |
Vyberte, že chcete vytvořit novou IP adresu. Nasazení vytvoří tuto novou skupinu prostředků. |
Název serveru | ${DB_SERVER_NAME} |
Tato hodnota je součástí názvu hostitele databázového serveru. |
Místo | ${LOCATION} |
V rozevíracím seznamu vyberte umístění. Poznamenejte si umístění. Musíte použít stejné umístění pro další prostředky Azure, které vytvoříte. |
Uživatelské jméno správce | quarkus | Vzorový kód předpokládá tuto hodnotu. |
Heslo | ${DB_PASSWORD} |
Heslo musí mít maximálně 8 znaků a maximálně 128 znaků. Heslo musí obsahovat znaky ze tří z těchto kategorií – velká písmena anglické abecedy, malá písmena anglické abecedy, číslice (0–9) a jiné než alfanumerických znaky (!, $, #, % apod.). Vaše heslo nemůže obsahovat celé přihlašovací jméno ani jeho část. Část přihlašovacího jména je definována jako tři nebo více po sobě jdoucích alfanumerických znaků. |
S ohledem na tyto náhrady hodnot postupujte podle kroků v rychlém startu: Vytvoření serveru Azure Database for PostgreSQL pomocí webu Azure Portal až do části Konfigurace pravidla brány firewall. Potom v části Konfigurace pravidla brány firewall nezapomeňte vybrat Ano pro povolení přístupu ke službám Azure a pak vyberte Uložit. Pokud to neuděláte, vaše aplikace Quarkus nemůže získat přístup k databázi a jednoduše se nikdy nespustí.
Po dokončení kroků v rychlém startu v části Konfigurace pravidla brány firewall, včetně kroku povolení přístupu ke službám Azure, se vraťte do tohoto článku.
Vytvoření databáze todo ve službě Azure Database for PostgreSQL
Server PostgreSQL, který jste vytvořili dříve, je prázdný. Nemá žádnou databázi, kterou můžete použít s aplikací Quarkus. Vytvořte novou databázi volanou todo
pomocí následujícího příkazu:
az postgres db create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name todo \
--server-name ${DB_SERVER_NAME}
Musíte použít todo
jako název databáze, protože vzorový kód předpokládá, že název databáze.
Pokud je příkaz úspěšný, výstup vypadá podobně jako v následujícím příkladu:
{
"charset": "UTF8",
"collation": "English_United States.1252",
"id": "/subscriptions/REDACTED/resourceGroups/ejb091223rg/providers/Microsoft.DBforPostgreSQL/servers/ejb091223db/databases/todo",
"name": "todo",
"resourceGroup": "ejb091223rg",
"type": "Microsoft.DBforPostgreSQL/servers/databases"
}
Vytvoření instance služby Microsoft Azure Container Registry
Vzhledem k tomu, že Quarkus je nativní cloudová technologie, má integrovanou podporu pro vytváření kontejnerů, které běží v Container Apps. Container Apps je zcela závislý na tom, že má registr kontejneru, ze kterého najde image kontejneru ke spuštění. Container Apps má integrovanou podporu služby Azure Container Registry.
K vytvoření instance Container Registry použijte příkaz az acr create. Následující příklad vytvoří n Instance Container Registry pojmenovaná s hodnotou proměnné prostředí ${REGISTRY_NAME}
:
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $REGISTRY_NAME \
--sku Basic \
--admin-enabled
Po krátké době byste měli vidět výstup JSON, který obsahuje následující řádky:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "<YOUR_RESOURCE_GROUP>",
Připojení do dockeru do instance Container Registry
Přihlaste se k instanci služby Container Registry. Přihlášení umožňuje nasdílení image. Pomocí následujících příkazů ověřte připojení:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
echo $LOGIN_SERVER
export USER_NAME=$(az acr credential show \
--name $REGISTRY_NAME \
--query 'username' \
--output tsv)
echo $USER_NAME
export PASSWORD=$(az acr credential show \
--name $REGISTRY_NAME \
--query 'passwords[0].value' \
--output tsv)
echo $PASSWORD
docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD
Pokud místo Dockeru používáte Podman, proveďte potřebné změny příkazu.
Pokud jste se úspěšně přihlásili k instanci Container Registry, měli byste se podívat Login Succeeded
na konci výstupu příkazu.
Vytvořit prostředí
Prostředí v Azure Container Apps vytvoří zabezpečenou hranici kolem skupiny kontejnerových aplikací. KontejnerOvé aplikace nasazené do stejného prostředí se nasazují ve stejné virtuální síti a zapisují protokoly do stejného pracovního prostoru služby Log Analytics. Pomocí příkazu az containerapp env create vytvořte prostředí, jak je znázorněno v následujícím příkladu:
az containerapp env create \
--resource-group $RESOURCE_GROUP_NAME \
--location $LOCATION \
--name $ACA_ENV
Pokud se zobrazí výzva k instalaci rozšíření, odpovězte na Y.
Přizpůsobení nativní konfigurace cloudu
Jako nativní cloudová technologie nabízí Quarkus možnost automaticky generovat image kontejnerů. Další informace najdete v tématu Image kontejneru. Vývojáři pak můžou image aplikace nasadit na cílovou kontejnerizovanou platformu, například Azure Container Apps.
Pokud chcete vygenerovat image kontejneru, přidejte container-image-jib
rozšíření do místního terminálu pomocí následujícího příkazu:
quarkus ext add container-image-jib
Quarkus upraví POM tak, aby se zajistilo, že rozšíření je součástí <dependencies>
. Pokud se zobrazí výzva k instalaci s názvem JBang
, odpovězte ano a povolte instalaci.
Výstup by měl vypadat jako v následujícím příkladu:
[SUCCESS] ✅ Extension io.quarkus:quarkus-container-image-jib has been installed
Pokud chcete ověřit přidání rozšíření, můžete spustit git diff
a prozkoumat výstup.
Jako nativní technologie cloudu podporuje Quarkus pojem konfiguračních profilů. Quarkus má následující tři předdefinované profily:
dev
- Aktivováno v režimu vývoje.test
- Aktivuje se při spouštění testů.prod
– Výchozí profil, pokud neběží ve vývojovém nebo testovacím režimu.
Quarkus podle potřeby podporuje libovolný počet pojmenovaných profilů.
Zbývající kroky v této části vás nasměruje na zrušení komentáře a přizpůsobení hodnot v souboru src/main/resources/application.properties . Ujistěte se, že všechny řádky začínající # %prod.
na začátku jsou nekommentovány odebráním úvodních #
řádků .
Předpona %prod.
označuje, že tyto vlastnosti jsou aktivní při spuštění v prod
profilu. Další informace o konfiguračních profilech najdete v dokumentaci k Quarkus.
Přizpůsobení konfigurace databáze
Přidejte následující konfigurační proměnné databáze. Nahraďte hodnoty <DB_SERVER_NAME_VALUE>
a <DB_PASSWORD_VALUE>
skutečnými hodnotami proměnných ${DB_SERVER_NAME}
prostředí.${DB_PASSWORD}
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://<DB_SERVER_NAME_VALUE>.postgres.database.azure.com:5432/todo
%prod.quarkus.datasource.jdbc.driver=org.postgresql.Driver
%prod.quarkus.datasource.username=quarkus@<DB_SERVER_NAME_VALUE>
%prod.quarkus.datasource.password=<DB_PASSWORD_VALUE>
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.sql-load-script=no-file
Obecně neočekáváte, že se data uložená v databázi zahodí a znovu zahrnou s ukázkovými daty v produkčním prostředí. Proto vidíte, že schéma je quarkus.hibernate-orm.database.generation
určeno tak create
, aby aplikace vytvářela schéma pouze v případě, že v počátečním spuštění neexistuje. Kromě toho databáze není předem vyplněna žádnými ukázkovými daty, protože hibernate-orm.sql-load-script
je určena jako no-file
. Toto nastavení se liší od toho, kdy jste aplikaci spustili místně ve vývojovém režimu. Výchozí hodnoty ve vývojovém režimu pro quarkus.hibernate-orm.database.generation
a jsou drop-and-create
a import.sql
hibernate-orm.sql-load-script
v uvedeném pořadí, což znamená, že aplikace vždy zahodí a znovu vytvoří schéma databáze a načte data definovaná v import.sql. Soubor import.sql je pohodlné zařízení z Quarkus. Pokud soubor src/main/resources/import.sql existuje v souboru Jar Quarkus a hodnota hibernate-orm.sql-load-script
vlastnosti je import.sql
, příkazy JAZYKa SQL DML v tomto souboru se pro aplikaci spustí při spuštění.
Přizpůsobení konfigurace image kontejneru
Jako nativní technologie cloudu podporuje Quarkus generování imagí kontejnerů OCI kompatibilních s Dockerem a Podmanem. Přidejte následující proměnné image kontejneru. Nahraďte hodnoty <LOGIN_SERVER_VALUE>
a <USER_NAME_VALUE>
hodnotami skutečných hodnot ${LOGIN_SERVER}
proměnných prostředí a ${USER_NAME}
proměnných prostředí.
# Container Image Build
%prod.quarkus.container-image.build=true
%prod.quarkus.container-image.registry=<LOGIN_SERVER_VALUE>
%prod.quarkus.container-image.group=<USER_NAME_VALUE>
%prod.quarkus.container-image.name=todo-quarkus-aca
%prod.quarkus.container-image.tag=1.0
Sestavení image kontejneru a jeho nasdílení do služby Container Registry
Teď pomocí následujícího příkazu sestavte samotnou aplikaci. Tento příkaz používá rozšíření Jib k sestavení image kontejneru.
quarkus build --no-tests
Výstup by měl končit .BUILD SUCCESS
Pomocí příkazového řádku nebo podman
příkazového docker
řádku můžete ověřit, jestli se image kontejneru vygeneruje. Výstup vypadá podobně jako v následujícím příkladu:
docker images | grep todo-quarkus-aca
<LOGIN_SERVER_VALUE>/<USER_NAME_VALUE>/todo-quarkus-aca 1.0 0804dfd834fd 2 minutes ago 402MB
Nasdílení imagí kontejneru do služby Container Registry pomocí následujícího příkazu:
export TODO_QUARKUS_TAG=$(docker images | grep todo-quarkus-aca | head -n1 | cut -d " " -f1):1.0
echo ${TODO_QUARKUS_TAG}
docker push ${TODO_QUARKUS_TAG}
Výstup by měl vypadat zhruba jako v tomto příkladu:
The push refers to repository [<LOGIN_SERVER_VALUE>/<USER_NAME_VALUE>/todo-quarkus-aca]
188a550fce3d: Pushed
4e3afea591e2: Pushed
1db0eba807a6: Pushed
c72d9ccda0b2: Pushed
d7819b8a2d18: Pushed
d0e5cba6b262: Pushed
e0bac91f0f10: Pushed
1.0: digest: sha256:f9ccb476e2388efa0dfdf817625a94f2247674148a69b7e4846793e63c8be994 size: 1789
Teď, když jste nasdíleli image aplikace do Container Registry, pomocí následujícího příkazu vytvořte instanci Container Apps, která spustí aplikaci po načtení image ze služby Container Registry:
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--image $TODO_QUARKUS_TAG \
--environment $ACA_ENV \
--registry-server $LOGIN_SERVER \
--registry-username $USER_NAME \
--registry-password $PASSWORD \
--target-port 8080 \
--ingress 'external'
Úspěšný výstup je objekt JSON včetně vlastnosti "type": "Microsoft.App/containerApps"
.
Pomocí následujícího příkazu získejte plně kvalifikovanou adresu URL pro přístup k aplikaci Todo:
export QUARKUS_URL=https://$(az containerapp show \
--resource-group $RESOURCE_GROUP_NAME \
--name $ACA_NAME \
--query properties.configuration.ingress.fqdn -o tsv)
echo $QUARKUS_URL
Otevřete nový webový prohlížeč s hodnotou ${QUARKUS_URL}
. Potom přidejte novou položku úkolu s textem Deployed the Todo app to Container Apps
. Tuto položku vyberte, pokud ji chcete označit jako dokončenou.
Přístup k rozhraní RESTful API (/api
) a získejte všechny položky úkolů uložené ve službě Azure Database for PostgreSQL, jak je znázorněno v následujícím příkladu:
curl --verbose -k ${QUARKUS_URL}/api | jq .
Výstup by měl vypadat jako v následujícím příkladu:
* Connected to <aca-name>.<random-id>.eastus.azurecontainerapps.io (20.231.235.79) port 443 (#0)
> GET /api HTTP/2
> Host: <aca-name>.<random-id>.eastus.azurecontainerapps.io
> user-agent: curl/7.88.1
> accept: */*
>
< HTTP/2 200
< content-length: 88
< content-type: application/json;charset=UTF-8
<
[
{
"id": 1,
"title": "Deployed the Todo app to Container Apps",
"completed": true,
"order": 1,
"url": null
}
]
Ověření aktualizace databáze pomocí Azure Cloud Shellu
Otevřete Azure Cloud Shell na webu Azure Portal tak , že vyberete ikonu Cloud Shellu ( ) vedle vyhledávacího pole.
Spusťte místně následující příkaz a vložte výsledek do Azure Cloud Shellu:
echo psql --host=${DB_SERVER_NAME}.postgres.database.azure.com --port=5432 --username=quarkus@${DB_SERVER_NAME} --dbname=todo
Po zobrazení výzvy k zadání hesla použijte hodnotu, kterou jste použili při vytváření databáze.
Pomocí následujícího dotazu získejte všechny položky úkolů:
select * from todo;
Výstup by měl vypadat podobně jako v následujícím příkladu a měl by obsahovat stejné položky v grafickém uživatelském rozhraní aplikace Todo zobrazeném dříve:
Zadáním \q ukončete psql
program a vraťte se do Cloud Shellu.
Vyčištění prostředků
Abyste se vyhnuli poplatkům za Azure, měli byste vyčistit nepotřebné prostředky. Pokud už cluster nepotřebujete, pomocí příkazu az group delete odeberte skupinu prostředků, službu kontejneru, registr kontejneru a všechny související prostředky.
git reset --hard
docker rmi ${TODO_QUARKUS_TAG}
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
Můžete také použít docker rmi
k odstranění postgres
imagí testcontainers
kontejnerů vygenerovaných vývojovými režimy Quarkus.
Další kroky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro