Konfigurowanie obciążenia aplikacji systemu Linux
W trakcie tej lekcji wykonasz następujące czynności:
- Konfigurowanie obciążenia aplikacji systemu Linux w celu nawiązania połączenia z usługą Azure Database for PostgreSQL przy użyciu przypisanej przez system tożsamości zarządzanej.
- Połącz się z maszyną wirtualną platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
- Zainstaluj niezbędne narzędzia.
- Nawiąż połączenie z serwerem PostgreSQL przy użyciu polecenia
psql. - Sklonuj repozytorium zawierające przykładową aplikację.
- Uruchom aplikację i upewnij się, że może nawiązać połączenie z serwerem PostgreSQL przy użyciu tożsamości zarządzanej.
Pobieranie aktualnie zalogowanego użytkownika i identyfikatora maszyny wirtualnej
USER_ID=$(az ad signed-in-user show --query id --output tsv)
VM_ID=$(az vm show --resource-group 240900-linux-postgres --name vm-1 --query id --output tsv)
Przypisywanie roli logowania administratora maszyny wirtualnej do użytkownika dla maszyny wirtualnej
Więcej informacji na temat ról uprzywilejowanych dla maszyn wirtualnych platformy Azure można przeczytać we wbudowanych rolach platformy Azure dla uprzywilejowanych.
az role assignment create \
--assignee $USER_ID \
--scope $VM_ID \
--role "Virtual Machine Administrator Login"
Nawiązywanie połączenia z maszyną wirtualną platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure
az ssh vm --resource-group 240900-linux-postgres --name vm-1
Instalowanie narzędzia psql i języka Go na maszynie wirtualnej
Zaktualizuj listę pakietów:
sudo apt-get update
Zainstaluj klienta PostgreSQL i język Go (Golang) na maszynie wirtualnej:
sudo apt-get install -y postgresql-client golang-go
Potwierdzanie wersji narzędzia psql
psql --version
Instalowanie interfejsu wiersza polecenia platformy Azure na maszynie wirtualnej
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu przypisanej przez system tożsamości zarządzanej
az login --identity
Wyświetlane są następujące dane wyjściowe:
$ az login --identity
[
{
"environmentName": "AzureCloud",
"homeTenantId": "b4c72be8-cae1-4584-be77-62b1e94ad0dc",
"id": "57039e18-c12e-4c87-a3e8-bf497991699d",
"isDefault": true,
"managedByTenants": [],
"name": "CloudNative",
"state": "Enabled",
"tenantId": "b4c72be8-cae1-4584-be77-62b1e94ad0dc",
"user": {
"assignedIdentityInfo": "MSI",
"name": "systemAssignedIdentity",
"type": "servicePrincipal"
}
}
]
Nawiązywanie połączenia z serwerem PostgreSQL przy użyciu powłoki Bash i narzędzia psql
Uruchom następujące polecenia na maszynie zdalnej:
MANAGED_IDENTITY_NAME=240900-linux-postgres-identity
export AZURE_CLIENT_ID=$(az identity show --resource-group 240900-linux-postgres --name $MANAGED_IDENTITY_NAME --query "clientId" -o tsv)
PG_NAME=$(az postgres flexible-server list --resource-group 240900-linux-postgres --query "[0].name" -o tsv)
# Set psql environment variables
export PGHOST="${PG_NAME}.privatelink.postgres.database.azure.com"
export PGPASSWORD=$(curl -s "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fossrdbms-aad.database.windows.net&client_id=${AZURE_CLIENT_ID}" -H Metadata:true | jq -r .access_token)
export PGUSER=$MANAGED_IDENTITY_NAME
export PGDATABASE=postgres
# Log in by using psql
psql
Po nawiązaniu połączenia zostanie wyświetlone następujące dane wyjściowe.
\q Wprowadź polecenie, aby zakończyć pracę.
$ psql
psql (16.4 (Ubuntu 16.4-0ubuntu0.24.04.2))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
postgres=> \q
$
Klonowanie przykładowej aplikacji
Sklonuj przykładową aplikację Tailwind Traders (Go). Uruchom następujące polecenia na maszynie zdalnej:
git clone https://github.com/Azure-Samples/tailwind-traders-go.git
Przejdź do katalogu aplikacji:
cd tailwind-traders-go/app/
Uruchom aplikację:
go run main.go
Dane wyjściowe powinny być podobne do następujących:
$ go run main.go
go: downloading github.com/magefile/mage v1.15.0
go: downloading github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0
go: downloading github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0
go: downloading github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0
go: downloading github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2
go: downloading golang.org/x/crypto v0.26.0
go: downloading golang.org/x/net v0.28.0
go: downloading github.com/google/uuid v1.6.0
go: downloading github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
go: downloading github.com/kylelemons/godebug v1.1.0
go: downloading github.com/golang-jwt/jwt/v5 v5.2.1
go: downloading golang.org/x/text v0.17.0
Targets:
app:connectionString outputs a connection string for the database from env vars
app:ping pings the database
app:serve runs a web server for our application
app:tables lists the tables in the database
app:token gets a token using `azidentity.NewDefaultAzureCredential`
Nawiązywanie połączenia z serwerem PostgreSQL przy użyciu aplikacji Tailwind Traders (Go) :token target
MANAGED_IDENTITY_NAME=240900-linux-postgres-identity
export AZURE_CLIENT_ID=$(az identity show --resource-group 240900-linux-postgres --name $MANAGED_IDENTITY_NAME --query "clientId" -o tsv)
PG_NAME=$(az postgres flexible-server list --resource-group 240900-linux-postgres --query "[0].name" -o tsv)
# psql
export PGHOST="${PG_NAME}.privatelink.postgres.database.azure.com"
export PGPASSWORD=$(go run main.go app:token)
export PGUSER=$MANAGED_IDENTITY_NAME
export PGDATABASE=postgres
# Log in by using psql
psql
Zamknij program psql i odłącz się od maszyny zdalnej
Zamknij :psql
\q
Odłącz się od maszyny zdalnej:
exit
Zasoby
- Logowanie się do maszyny wirtualnej z systemem Linux na platformie Azure przy użyciu identyfikatora Entra firmy Microsoft i protokołu OpenSSH
- Nawiązywanie połączenia z serwerem usługi Azure Database for PostgreSQL przy użyciu tożsamości zarządzanej
- Tworzenie maszyny wirtualnej z systemem Linux przy użyciu interfejsu wiersza polecenia platformy Azure na platformie Azure
- Wbudowane role platformy Azure dla uprzywilejowanych