Использование профилей версий API с помощью Java в Azure Stack Hub
Пакет SDK для Resource Manager Azure Stack Hub для Java предоставляет средства для создания и администрирования инфраструктуры. Поставщики ресурсов в пакете SDK включают вычислительные ресурсы, сеть, хранилище, службы приложений и Key Vault Azure. Репозиторий гибридных примеров Java можно найти в GitHub. Эта статья поможет вам настроить среду, получить правильные учетные данные, захватить репозиторий и создать группу ресурсов в Azure Stack Hub.
Пакет SDK для Java позволяет создать полноценную гибридную облачную среду. Переключение зависимостей версий в POM.xml пакете SDK для Java позволяет разрабатывать гибридные облака, помогая переключаться между глобальными ресурсами Azure на ресурсы в Azure Stack Hub.
Чтобы использовать последнюю версию служб, используйте последний профиль в качестве зависимости.
Вы можете нацелить приложение на ресурс в Центре взлома Azure, заняв существующую зависимость com.azure.resourcemanager и изменив версию на x.y.zx.y.z-hybrid. Гибридные пакеты, обеспечивающие поддержку Azure Stack Hub, используют -hybrid суффикс в конце версии, например 1.0.0-hybrid. Это указывает на статическую коллекцию конечных точек, связанных с версией.
Чтобы получить последний профиль, воспользуйтесь существующей зависимостью com.azure.resourcemanager и измените версию на последнюю. Последние пакеты Java профилей обеспечивают согласованный интерфейс с Azure. Пакеты используют тот же идентификатор группы, что и Azure com.azure.resourcemanager. Идентификатор артефакта и пространства имен также совпадают с глобальными пространствами имен Azure. Это помогает перенести приложение Azure в Azure Stack Hub. Дополнительные сведения о конечных точках, используемых в Azure Stack Hub в качестве параметра гибридного профиля, см. в сводке профилей API.
Профиль указывается в pom.xml файле в проекте Maven в качестве зависимости. Профиль автоматически загружает модули, если выбрать нужный класс из раскрывающегося списка (как и в случае с .NET).
Настройка среды разработки
Чтобы подготовить среду для запуска пакета SDK, можно использовать интегрированную среду разработки, которую вы предпочитаете, например Eclipse или Visual Studio Code. Но вам потребуется установить Git, пакет SDK для Java и Apache Maven. Дополнительные сведения о предварительных требованиях для настройки среды разработки см. в статье "Использование пакета AZURE SDK для Java"
Установите Git. Официальные инструкции по установке Git можно найти в начало работы . Установка Git.
Установите пакет SDK для Java и установите
JAVA_HOMEпеременную среды в расположение двоичных файлов для пакета средств разработки Java. Инструкции по скачиваемому установочному носителю можно найти для OpenJDK. Установите версию 8 или более поздней версии пакета разработчика Java.Установите Apache Maven. Инструкции можно найти в Project Apache Maven. Установите Apache Maven 3.0 или более поздней версии.
Использование профилей версии API с помощью Java
Чтобы получить последние версии всех служб, укажите профиль Latest в качестве зависимости.
Чтобы использовать самый новый профиль, укажите зависимость com.microsoft.azure.
Чтобы использовать последние поддерживаемые службы, доступные в Azure Stack Hub, используйте профиль com.microsoft.azure.profile_2019_03_01_hybrid .
- Этот профиль значение нужно указать в качестве зависимости в файле Pom.xml, чтобы модули загружались автоматически при выборе нужного класса из раскрывающегося списка, как в .NET.
Зависимости оформляются так:
<dependency> <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId> <artifactId>azure</artifactId> <version>1.0.0-beta-1</version> </dependency>Чтобы использовать конкретные версии API для определенного типа ресурса от конкретного поставщика, выберите соответствующую версию API, определенную с помощью IntelliSense.
Можно объединить все параметры в одном приложении.
Установка пакета Azure SDK для Java
Чтобы установить пакет SDK для Java, выполните следующие шаги.
Выполните официальные инструкции по установке Git. См. статью Getting Started - Installing Git (Приступая к работе — установка Git)
Выполните инструкции по установке пакета SDK для Java и Maven. Следует использовать Java Developer Kit версии 8. Следует использовать Apache Maven версии 3.0 или более поздней. Для выполнения инструкций из этого краткого руководства сохраните в переменной среды
JAVA_HOMEрасположение установки JDK. Дополнительные сведения см. в статье Создание первой функции с помощью Java и Maven.Чтобы установить правильные пакеты зависимостей, откройте файл Pom.xml в приложении Java. Добавьте в него зависимость, как показано в следующем коде:
<dependency> <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId> <artifactId>azure</artifactId> <version>1.0.0-beta-1</version> </dependency>Набор устанавливаемых пакетов зависит от версии профиля, который вам нужен. Имена пакетов для версий профилей:
- com.microsoft.azure.profile_2019_03_01_hybrid
- com.microsoft.azure
- Актуальная
Профили
Для профилей, содержащих даты, для использования другого профиля или версии пакета SDK замените дату в com.microsoft.azure.profile<date>_hybrid. Например, для версии 2008 профиль имеет значение 2019_03_01, а строка становится com.microsoft.azure.profile_2019_03_01_hybrid. Обратите внимание, что иногда команда SDK изменяет имя пакетов, поэтому просто замена даты строки другой датой может не работать. Сведения о сопоставлении профилей и версий Azure Stack см. в следующей таблице.
| Версия Azure Stack | Профиль |
|---|---|
| 2108 | 2020_09_01 |
| 2102 | 2020_09_01 |
| 2008 | 2019_03_01 |
См. дополнительные сведения об Azure Stack Hub и профилях API.
Подписка
Если у вас еще нет подписки, создайте подписку и сохраните идентификатор подписки, который будет использоваться позже. Сведения о создании подписки см. в этом документе.
Субъект-служба
Субъект-служба и связанная с ней информация о среде должны быть созданы и сохранены где-то. Субъект-служба с owner ролью рекомендуется, но в зависимости от примера contributor может потребоваться роль. Сведения о необходимых значениях см. в репозитории примеров сведений. Эти значения можно прочитать в любом формате, поддерживаемом языком SDK, например из JSON-файла (который используются в наших примерах). В зависимости от выполняемого примера могут использоваться не все эти значения. Ознакомьтесь с примером репозитория для обновленного примера кода или дополнительных сведений.
Tenant ID
Чтобы найти каталог или идентификатор клиента для Azure Stack Hub, следуйте инструкциям в этой статье.
Регистрация поставщиков ресурсов
Зарегистрируйте необходимые поставщики ресурсов, следуя этому документу. Эти поставщики ресурсов потребуются в зависимости от примеров, которые требуется запустить. Например, если вы хотите запустить пример виртуальной машины, Microsoft.Compute требуется регистрация поставщика ресурсов.
Конечная точка диспетчера ресурсов Azure Stack
Azure Resource Manager (ARM) — это платформа управления, которая позволяет администраторам развертывать, администрировать и отслеживать ресурсы Azure. Azure Resource Manager может обрабатывать эти задачи в рамках одной операции как группы, а не по отдельности. Получить метаданные можно из конечной точки Resource Manager. Конечная точка возвращает JSON-файл со сведениями, необходимыми для запуска вашего кода.
- ResourceManagerEndpointUrl в пакете средств разработки Azure Stack (ASDK):
https://management.local.azurestack.external/ - ResourceManagerEndpointUrl в интегрированных системах:
https://management.region.<fqdn>/где<fqdn>это полное доменное имя. - Чтобы получить необходимые метаданные, используйте
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Доступные версии API см. в спецификациях REST API Azure. Например, в2020-09-01версии профиля можно изменитьapi-versionзначение2019-10-01для поставщикаmicrosoft.resourcesресурсов.
Пример JSON:
{
"galleryEndpoint": "https://portal.local.azurestack.external:30015/",
"graphEndpoint": "https://graph.windows.net/",
"portal Endpoint": "https://portal.local.azurestack.external/",
"authentication":
{
"loginEndpoint": "https://login.windows.net/",
"audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
}
}
Установка доверия для корневого сертификата ЦС Azure Stack Hub
Если вы используете Пакет средств разработки Azure Stack (ASDK), нужно настроить доверите корневому сертификату ЦС на удаленном компьютере. Для интегрированных систем Azure Stack Hub доверие корневому сертификату ЦС не требуется.
Windows
Экспортируйте самозаверяющий сертификат Azure Stack Hub на компьютер.
В командной строке перейдите в каталог
%JAVA_HOME%\bin.Выполните следующую команду:
.\keytool.exe -importcert -noprompt -file <location of the exported certificate here> -alias root -keystore %JAVA_HOME%\lib\security\cacerts -trustcacerts -storepass changeit
Существующие профили API
com.microsoft.azure.profile_2019_03_01_hybrid. Последний профиль, созданный для Azure Stack Hub. Используйте этот профиль, чтобы обеспечить наибольшую совместимость служб и Azure Stack Hub с версией 1904 или более поздней.
com.microsoft.azure.profile_2018_03_01_hybrid. Профиль, созданный для Azure Stack Hub. Используйте этот профиль, чтобы обеспечить совместимость служб и Azure Stack Hub для версии 1808 или более поздней.
com.microsoft.azure: профиль с новейшими версиями всех служб. Используйте последние версии всех служб.
См. дополнительные сведения об Azure Stack Hub и профилях API.
Использование профиля API пакета SDK Azure для Java
Следующий код выполняет проверку подлинности субъекта-службы в Azure Stack Hub. Для этого создается маркер с использованием идентификатора клиента и базы проверки подлинности для Azure Stack Hub:
AzureTokenCredentials credentials = new ApplicationTokenCredentials(client, tenant, key, AZURE_STACK)
.withDefaultSubscriptionID(subscriptionID);
Azure azureStack = Azure.configure()
.withLogLevel(com.microsoft.rest.LogLevel.BASIC)
.authenticate(credentials, credentials.defaultSubscriptionID());
Этот код дает возможность использовать зависимости профиля API для успешного развертывания приложения в Azure Stack Hub.
Определение функций параметров среды Azure Stack Hub
Чтобы зарегистрировать облако Azure Stack Hub с правильными конечными точками, используйте следующий код:
// Get Azure Stack Hub cloud endpoints
final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
AzureEnvironment AZURE_STACK = new AzureEnvironment(new HashMap<String, String>() {
{
put("managementEndpointUrl", settings.get("audience"));
put("resourceManagerEndpointUrl", armEndpoint);
put("galleryEndpointUrl", settings.get("galleryEndpoint"));
put("activeDirectoryEndpointUrl", settings.get("login_endpoint"));
put("activeDirectoryResourceID", settings.get("audience"));
put("activeDirectoryGraphResourceID", settings.get("graphEndpoint"));
put("storageEndpointSuffix", armEndpoint.substring(armEndpoint.indexOf('.')));
put("keyVaultDnsSuffix", ".vault" + armEndpoint.substring(armEndpoint.indexOf('.')));
}
});
Вызов getActiveDirectorySettings в коде выше извлекает конечные точки из конечных точек метаданных. Он использует переменные среды из выполняемого вызова.
public static HashMap<String, String> getActiveDirectorySettings(String armEndpoint) {
HashMap<String, String> adSettings = new HashMap<String, String>();
try {
// create HTTP Client
HttpClient httpClient = HttpClientBuilder.create().build();
// Create new getRequest with below mentioned URL
HttpGet getRequest = new HttpGet(String.format("%s/metadata/endpoints?api-version=1.0",
armEndpoint));
// Add additional header to getRequest which accepts application/xml data
getRequest.addHeader("accept", "application/xml");
// Execute request and catch response
HttpResponse response = httpClient.execute(getRequest);
// Check for HTTP response code: 200 = success
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
}
String responseStr = EntityUtils.toString(response.getEntity());
JSONObject responseJson = new JSONObject(responseStr);
adSettings.put("galleryEndpoint", responseJson.getString("galleryEndpoint"));
JSONObject authentication = (JSONObject) responseJson.get("authentication");
String audience = authentication.get("audiences").toString().split("\"")[1];
adSettings.put("login_endpoint", authentication.getString("loginEndpoint"));
adSettings.put("audience", audience);
adSettings.put("graphEndpoint", responseJson.getString("graphEndpoint"));
} catch (ClientProtocolException cpe) {
cpe.printStackTrace();
throw new RuntimeException(cpe);
} catch (IOException ioe) {
ioe.printStackTrace();
throw new RuntimeException(ioe);
}
return adSettings;
}
Пример проекта модульного теста
Клонируйте репозиторий, используя следующую команду:
git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybridСоздайте субъект-службу Azure и назначьте роль для доступа к подписке. См. дополнительные сведения о создании субъекта-службы с сертификатом с помощью Azure PowerShell.
Получите следующие обязательные переменные среды:
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_SUBSCRIPTION_IDARM_ENDPOINTRESOURCE_LOCATION
С помощью командной строки настройте следующие переменные среды, используя данные, полученные от созданного субъекта-службы.
export AZURE_TENANT_ID={your tenant ID}export AZURE_CLIENT_ID={your client ID}export AZURE_CLIENT_SECRET={your client secret}export AZURE_SUBSCRIPTION_ID={your subscription ID}export ARM_ENDPOINT={your Azure Stack Hub Resource Manager URL}export RESOURCE_LOCATION={location of Azure Stack Hub}
В Windows используйте set вместо export.
Используйте функцию
getActiveDirectorySettingsдля получения сведений о конечных точках метаданных Azure Resource Manager.// Get Azure Stack Hub cloud endpoints final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);В файл Pom.xml добавьте указанную ниже зависимость, чтобы использовать профиль 2019-03-01-hybrid для Azure Stack Hub. Зависимость позволяет установить связанные с этим профилем модули поставщиков ресурсов вычислений, сети, хранилища, Key Vault и Службы приложений.
<dependency> <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId> <artifactId>azure</artifactId> <version>1.0.0-beta-1</version> </dependency>В окне командной строки, которое вы ранее открыли для настройки переменных среды, введите следующую команду:
mvn clean compile exec:java
Примеры
Ознакомьтесь с примером репозитория для обновленного примера кода. Корневой каталог README.md описывает общие требования, а каждый вложенный каталог содержит отдельный пример с собственным README.md способом запуска этого примера.
Ознакомьтесь с примером, применимым к версии 2008 или профилю 2019-03-01 Azure Stack, а также ниже.
Дальнейшие действия
Дополнительные сведения о профилях API: