Skip to content

Commit 21a6074

Browse files
authored
Add managed identity support for connecting to container registries (#745)
1 parent 5e9aa0e commit 21a6074

16 files changed

+425
-169
lines changed

package-lock.json

Lines changed: 161 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,8 @@
789789
"webpack-cli": "^4.6.0"
790790
},
791791
"dependencies": {
792-
"@azure/arm-appcontainers": "^2.0.0",
792+
"@azure/arm-appcontainers": "^2.1.0-beta.1",
793+
"@azure/arm-authorization": "^9.0.0",
793794
"@azure/arm-containerregistry": "^10.0.0",
794795
"@azure/arm-operationalinsights": "^8.0.0",
795796
"@azure/arm-resources": "^5.2.0",

src/commands/EXECUTE_PRIORITY.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ When creating or updating resources, execute steps should occupy certain priorit
2828

2929
#### Steps
3030
##### Managed Identity Registry Credential
31-
- Coming soon...
31+
- ManagedEnvironmentIdentityEnableStep: 450
32+
- AcrPullVerifyStep: 460
33+
- AcrPullEnableStep: 461
34+
- ManagedIdentityRegistryCredentialAddConfigurationStep: 470
3235

3336
##### Admin User Registry Credential
3437
- AcrEnableAdminUserStep: 450

src/commands/deployWorkspaceProject/getDeployWorkspaceProjectResults.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import { type RegistryCredentials } from "@azure/arm-appcontainers";
67
import { type RegistryPassword } from "@azure/arm-containerregistry";
78
import { type Workspace } from "@azure/arm-operationalinsights";
89
import { uiUtils } from "@microsoft/vscode-azext-azureutils";
910
import { createOperationalInsightsManagementClient } from "../../utils/azureClients";
1011
import type * as api from "../api/vscode-azurecontainerapps.api";
11-
import { listCredentialsFromRegistry } from "../image/imageSource/containerRegistry/acr/listCredentialsFromRegistry";
12+
import { listCredentialsFromAcr } from "../registryCredentials/dockerLogin/listCredentialsFromAcr";
1213
import { type DeployWorkspaceProjectContext } from "./DeployWorkspaceProjectContext";
1314

1415
export type DeployWorkspaceProjectResults = api.DeployWorkspaceProjectResults;
1516

1617
export async function getDeployWorkspaceProjectResults(context: DeployWorkspaceProjectContext): Promise<DeployWorkspaceProjectResults> {
17-
const registryCredentials: { username: string, password: RegistryPassword } | undefined = context.registry ?
18-
await listCredentialsFromRegistry(context, context.registry) : undefined;
18+
const registryCredentials: RegistryCredentials | undefined = context.containerApp?.configuration?.registries?.find(r => r.server === context.registry?.loginServer);
19+
20+
let listedCredentials: { username: string, password: RegistryPassword } | undefined;
21+
if (!registryCredentials?.identity) {
22+
listedCredentials = await listCredentialsFromAcr(context);
23+
}
1924

2025
context.logAnalyticsWorkspace ??= await tryGetLogAnalyticsWorkspace(context);
2126

@@ -26,8 +31,8 @@ export async function getDeployWorkspaceProjectResults(context: DeployWorkspaceP
2631
containerAppId: context.containerApp?.id,
2732
registryId: context.registry?.id,
2833
registryLoginServer: context.registry?.loginServer,
29-
registryUsername: registryCredentials?.username,
30-
registryPassword: registryCredentials?.password.value,
34+
registryUsername: listedCredentials?.username,
35+
registryPassword: listedCredentials?.password.value,
3136
imageName: context.imageName
3237
};
3338
}

src/commands/image/deployImageApi/deployImage.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import { showContainerAppNotification } from "../../createContainerApp/showConta
1414
import { ContainerAppUpdateStep } from "../imageSource/ContainerAppUpdateStep";
1515
import { ImageSourceListStep } from "../imageSource/ImageSourceListStep";
1616
import { type ContainerRegistryImageSourceContext } from "../imageSource/containerRegistry/ContainerRegistryImageSourceContext";
17-
import { RegistryEnableAdminUserStep } from "../imageSource/containerRegistry/acr/RegistryEnableAdminUserStep";
1817
import { type DeployImageApiContext } from "./deployImageApi";
1918

2019
export async function deployImage(context: IActionContext & Partial<ContainerRegistryImageSourceContext>, node: ContainerAppItem): Promise<void> {
@@ -33,7 +32,6 @@ export async function deployImage(context: IActionContext & Partial<ContainerReg
3332
wizardContext.telemetry.properties.revisionMode = containerApp.revisionsMode;
3433

3534
const promptSteps: AzureWizardPromptStep<DeployImageApiContext>[] = [
36-
new RegistryEnableAdminUserStep(),
3735
new ImageSourceListStep(),
3836
new ContainerAppOverwriteConfirmStep(),
3937
];

src/commands/image/imageSource/ContainerAppUpdateStep.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { type ImageSourceContext } from "./ImageSourceContext";
1313
import { getContainerNameForImage } from "./containerRegistry/getContainerNameForImage";
1414

1515
export class ContainerAppUpdateStep<T extends ImageSourceContext> extends AzureWizardExecuteStep<T> {
16-
public priority: number = 650;
16+
public priority: number = 680;
1717

1818
public async execute(context: T, progress: Progress<{ message?: string | undefined; increment?: number | undefined }>): Promise<void> {
1919
const containerApp: ContainerAppModel = nonNullProp(context, 'containerApp');

src/commands/image/imageSource/containerRegistry/acr/RegistryEnableAdminUserStep.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)