Giter Club home page Giter Club logo

azure / reliable-web-app-pattern-dotnet Goto Github PK

View Code? Open in Web Editor NEW
331.0 21.0 105.0 9.83 MB

The Reliable Web App Pattern is a set of objectives to help your web application converge on the cloud. This repo contains a reference implementation of a reliable web application for .NET.

Home Page: https://aka.ms/eap/rwa/dotnet/doc

License: MIT License

Shell 2.21% Bicep 45.66% PowerShell 14.27% C# 31.05% HTML 6.07% CSS 0.58% JavaScript 0.12% Dockerfile 0.04%
architecture azure dotnet microsoft reference-implementation bicep-templates azure-app-configuration azure-app-service azure-cache-redis azure-frontdoor

reliable-web-app-pattern-dotnet's Introduction

Reliable web app pattern for .NET

๐Ÿ“ฃ Got feedback? Fill out this survey to help us shape the future of Enterprise App Patterns and understand whether we're focusing on the business goals and features important to you. Microsoft Privacy Statement

The reference implementation provides a production-grade web application that uses best practices from our guidance and gives developers concrete examples to build their own Reliable Web Application in Azure. This repository specifically demonstrates a concert ticketing application for the fictional company Relecloud, embodying the reliable web app pattern with a focus on .NET technologies. It guides developers through a simulated migration from an on-premises ASP.NET application to Azure, detailing the architectural changes and enhancements that capitalize on the cloud's strengths during the initial adoption phase.

This project has a companion article in the Azure Architecture Center that describes design patterns and best practices and a six-part video series (YouTube) that details the reliable web app pattern for .NET web app. Here's an outline of the contents in this readme:

Architecture

Relecloud aligned to a hub and spoke network topology in the production deployment architecture to centralize common resources. This network topology provided cost savings, enhanced security, and facilitated network integration (platform and hybrid):

architecture diagram

This diagram describes the production deployment which is described in the prod-deployment.md file. The following steps below are for a development deployment which is a simplified version.

  • Cost efficiency: The hub acts as a central point for shared resources, promoting cost-effective resource reuse. For instance, Azure Bastion is a shared service in the hub, providing secure and cost-effective remote access without the need for separate deployments for each application.
  • Traffic control and security: Network traffic is managed and secured using Network Security Groups and Route tables in each subnet, creating secure boundaries for Azure resources. Private endpoints add an extra layer of security, and a jump box allows for deployment within these boundaries, maintaining local IP access to resources.
  • Network integration: The topology supports network integrations for data transfer across applications and hybrid scenarios. While the reference architecture doesn't include ExpressRoute or Azure VPN Gateway, these should be considered for applications requiring hybrid network connections.

Workflow

This description details the workflow for Relecloud's concert ticketing application. It highlights key components and functionality to help you emulate its design:

  • Global traffic routing: Azure Front Door acts as a global traffic manager, routing users to the primary region for optimal performance and failing over to a secondary region during outages for uninterrupted service.
  • Security inspection: Incoming traffic is inspected by Azure Web Application Firewall to protect against web vulnerabilities before reaching the web app.
  • Static and dynamic content delivery: Users receive static content, like the home page, immediately upon request. Dynamic content, such as 'Upcoming Concerts', is generated by making API calls to the backend, which fetches data from Azure SQL Database and returns it in a JSON format.
  • Session state management: User sessions, including shopping cart data, are managed by Azure Cache for Redis, ensuring persistence and consistency across scale-out events.
  • User authentication: Microsoft Entra ID handles user authentication, suitable for environments where accounts are centrally managed, enhancing security and control.
  • API interaction and token management: The front-end web app uses the MSAL library to obtain tokens for authenticated API calls, caching them in Azure Cache for Redis to optimize performance and manageability.
  • Payment and checkout flow: While this example doesn't process real payments, the web app captures payment information during checkout, demonstrating how a web app can handle sensitive data.
  • Purchase and ticket generation: The backend API processes purchase requests and generates tickets that are immediately accessible to users.
  • Networking and access control: Azure Private DNS, Network Security Groups, and Azure Firewall tightly control the flow of traffic within the app's network, maintaining security and isolation.
  • Monitoring and telemetry: Application Insights provides monitoring and telemetry capabilities, enabling performance tracking and proactive issue resolution.
  • Configuration and secrets management: Initial configuration and sensitive information are loaded from Azure App Configuration and Azure Key Vault into the app's memory upon startup, minimizing access to sensitive data thereafter.

Steps to deploy the reference implementation

The following detailed deployment steps assume you are using a Dev Container inside Visual Studio Code.

For your convenience, we use Dev Containers with a fully-featured development environment. If you prefer to use Visual Studio, we recommend installing the necessary dependencies and skip to the deployment instructions starting in Step 3.

1. Clone the repo

For Windows users, we recommend using Windows Subsystem for Linux (WSL) to improve Dev Container performance.

wsl

Clone the repository from GitHub into the WSL 2 filesystem using the following command:

git clone https://github.com/Azure/reliable-web-app-pattern-dotnet.git
cd reliable-web-app-pattern-dotnet

2. Open Dev Container in Visual Studio Code

If required, ensure Docker Desktop is started and enabled for your WSL terminal more details. Open the repository folder in Visual Studio Code. You can do this from the command prompt:

code .

Once Visual Studio Code is launched, you should see a popup allowing you to click on the button Reopen in Container.

Reopen in Container

If you don't see the popup, open the Visual Studio Code Command Palette to execute the command. There are three ways to open the command palette:

  • For Mac users, use the keyboard shortcut โ‡งโŒ˜P
  • For Windows and Linux users, use Ctrl+Shift+P
  • From the Visual Studio Code top menu, navigate to View -> Command Palette.

Once the command palette is open, search for Dev Containers: Rebuild and Reopen in Container.

WSL Ubuntu

3. Log in to Azure

Before deploying, you must be authenticated to Azure and have the appropriate subscription selected. Run the following command to authenticate:

If you are not using PowerShell 7+, run the following command (you can use $PSVersionTable.PSVersion to check your version):

pwsh
Import-Module Az.Resources
Connect-AzAccount

Set the subscription to the one you want to use (you can use Get-AzSubscription to list available subscriptions):

$AZURE_SUBSCRIPTION_ID="<your-subscription-id>"
Set-AzContext -SubscriptionId $AZURE_SUBSCRIPTION_ID

Use the next command to login with the Azure Dev CLI (AZD) tool:

azd auth login

4. Create a new environment

Next we provide the AZD tool with variables that it uses to create the deployment. The first thing we initialize is the AZD environment with a name.

The environment name should be less than 18 characters and must be comprised of lower-case, numeric, and dash characters (for example, dotnetwebapp). The environment name is used for resource group naming and specific resource naming.

By default, Azure resources are sized for a development deployment. If doing a production deployment, see the production deployment instructions for more detail.

azd env new <pick_a_name>

Select the subscription that will be used for the deployment:

azd env set AZURE_SUBSCRIPTION_ID $AZURE_SUBSCRIPTION_ID

Set the AZURE_LOCATION (Run (Get-AzLocation).Location to see a list of locations):

azd env set AZURE_LOCATION <pick_a_region>

5. Create the Azure resources and deploy the code

Run the following command to create the Azure resources and deploy the code (about 15-minutes to complete):

azd up

6. Open and use the application

Use the URL displayed in the console output to launch the web application that you have deployed:

screenshot of web app home page

You can learn more about the web app by reading the Pattern Simulations documentation.

7. Tear down the deployment

Run the following command to tear down the deployment:

azd down --purge --force

Additional links

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Data Collection

The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft's privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkId=521839. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices.

Telemetry Configuration

Telemetry collection is on by default.

To opt out, run the following command azd env set ENABLE_TELEMETRY to false in your AZD environment.

reliable-web-app-pattern-dotnet's People

Contributors

adrianhall avatar asanjabi avatar briandenicola avatar codemillmatt avatar coolcsh avatar dependabot[bot] avatar elbarnit avatar koudaiii avatar kschlobohm avatar kwkraus avatar markti avatar markweitzel avatar mcollier avatar microsoft-github-operations[bot] avatar microsoftopensource avatar nickdala avatar nishanil avatar rfrazier avatar rickpetersen avatar sagarvadodaria avatar stephen-sumner avatar timheuer avatar v-xuto avatar weihanli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reliable-web-app-pattern-dotnet's Issues

Fix script that creates app registrations

Issue

When we added a 2nd Key Vault instance to store the SQL account info it changed the way that the createAppRegistrations.sh script behaves. The script was developed to expect only 1 key vault name and is now confused when it sees 2 vaults.

Image

Implement multiregional Azure SQL

The multiregional deployment should demonstrate how data is kept in sync between regions.

Azure SQL Database is used to store information about concerts, customers, and the tickets that they've purchased. This service stores this data and the relationships between this data to help customers shop for concerts and see their tickets when they login.

Without synchronizing this data, customers will not be able to see the tickets that they purchased. And, when the code runs in two regions it will randomly seed the data in a different order, so the concert details will not appear the same after a failover.

To address this concern we recommend two Azure SQL Features:

Run `azd pipeline config` on new repo

Issue

We need to associate the new GH repo with an Azure subscription so that we can test the GH workflows that will deploy resources.

Todo

Run azd pipeline config

Fix SQL server connectivity issue with managed identity

Issue

When the bicep templates create the SQL resource it sets the managed identity as the SQL administrator. This is the only valid login for the box because a SQL administrator user is not created. The problem is that when the app runs users do not see data. The root cause of this is that the managed identity account is not actually a valid user until someone logs into the server to create a SQL user.

This expected workflow for managed identity accounts is described by docs.

Todo

We need to update the bicep templates to

  1. DONE Set a SQL administrator account as the login (this is a break glass account that should be stored in separate key vault)
  2. DONE Create a separate key vault to store the SQL pwd secret - because we don't want the web app to be able to see it
  3. DONE Modify existing SQL deployment to use SQL account (key vault reference)
  4. DONE Run a bicep deployment script to setup the SQL user for the managed identity
  5. DONE Grant the managed identity db_owner access
  6. DONE change SQL server to managed identity access only
  7. DONE for prod - block public access. for non-prod public access is enabled to support the dev inner-loop.

This grants more permission than the web app should have but avoids refactoring the database creation/seeding that will be handled by a separate work item.

Progress

Referenced the doc to understand how to pass Key Vault secret to another component of Bicep. The implication is that the Sql setup must be refactored to a module.

The principal that is executing the deployment does not grant the deployment access to read the secret.
Image

Also learned that Key Vault must be configured to allow access from ARM.
Image

The password must be more than letters and numbers.
Image

src

Need to understand how to run SQL from a bicep deployment. There seem to be 2 options.

  1. PowerShell
  2. CLI utility

Found known issue: Cannot reference resources across modules

produces errors like...
Image

Must use explicit params to bypass this issue.

Found that the SQL user account cannot be used to grant managed identity access.

Image

Others have encountered this error, and with the shared goal of devOps automation, and received the following advice from support.

https://stackoverflow.com/a/56150547

I opened a ticket with Azure support and they gave me this solution.

The sql statement needs to be:

 -- type X for AAD Group
create user [myAADGroupName] with sid = <sid>, type = X;

-- type E for AAD User or Service Principal/MSI
create user [myAADUserName] with sid = <sid>, type = E;
The sid needs to be generated from the AAD Principal ObjectID in most cases. However, for Service Principals/MSIs, it needs to come from the AppId. Here's a powershell script to generate the sid value:

param (
    [string]$objectIdOrAppId
)

[guid]$guid = [System.Guid]::Parse($objectIdOrAppId)

foreach ($byte in $guid.ToByteArray())
{
    $byteGuid += [System.String]::Format("{0:X2}", $byte)
}

return "0x" + $byteGuid

Remove App Config Svc Purge

Pending the resolution of an open issue with AZD we should update the nightly build to remove the AppConfigSvcPurg step and shell script

Modify multiregional deployment

Align multiregional deployment with the features that the azd team are developing to support high availability deployments.

InvalidTemplateDeployment

Error: deployment failed: failed deploying: failed running az deployment sub create:

Deployment Error Details:
InvalidTemplateDeployment: The template deployment 'relecloudqa7' is not valid according to the validation procedure. The tracking id is '42fb931e-b7d4-4c78-adce-f834ba1c935a'. See inner errors for details.

Run azd provision --debug and found that the inner error is

Inner Errors:
{"message": "Object reference not set to an instance of an object."}

This issue is impacting the nightly deployment - #43

Setup network isolation for Azure Storage

Issue

The security pillar of the Well-architected framework encourages a defense in depth approach which means securing resources in multiple ways. One of the best protections for an Azure resource is limiting network access to resources with Private Endpoints. We should consider changing the way that the Web API app and Azure Functions connect to storage. They could use Azure Private Endpoints to limit network access to approved resources.

Ensure all deployed resources are tagged

Issue

The sample should demonstrate the operational excellence we recommend by tagging each of the deployed resources.

Todo

Review the bicep templates and ensure that each resource is tagged.

Link App Service and App Insights

Issue

App Services are using Application Insights but the Azure Portal doesn't recognize the connection and still suggests enabling App Insights.

image

Todo

Use bicep to setup relationship between App Insights and App Service.

  • pending - looks like this sample creates the link by describing the relationship as a site extension

Modularize the bicep templates

Issue

All of the bicep resources are located in the resources.bicep file. It is becoming cumbersome to maintain and to understand conceptually. It should align with our operational excellence principles by splitting the deployment into discrete modules with names that align to their purpose.

Todo

Separate the deployment into multiple bicep templates to improve maintainability.

Progress

While working on the sql setup issue the team identified that key vault references (where the sql admin password is stored) must be passed via modules. src

web app must be restarted to detect configuration changes

Issue

It would be a better demonstration of operational excellence if the web app could detect or "pick up" changes from App Configuration Service or Key Vault without an App Pool restart.

Todo

  • Research whether this is a code change or a feature change.
  • Modify the code
  • Modify the guide to describe this feature and to explain what's happening when simulating faults

Search always returns the same list of results, no matter what I search for.

Inside the ReleCloud App, the search feature always appears to return the same results, no matter what search terms I put in. For example, if I search for, "Foo Fighters," I get a great big list of concerts - not just the "Foo Fighters" concert. Also, if I enter a band that doesn't exist in the list like "Dead Milkmen" it still returns the same list of concerts.

Fix web app connections to Azure Cache for Redis

Issue

When the Web API app is deployed with private endpoints enabled it uses Azure Private DNS (only) to retrieve IP addresses. Even though Redis is allowing connections the web api has trouble connecting because it cannot resolve the IP address.

Todo

Add the IP address entry to the Azure DNS

Provide guidance on how to fit the solution into a typical enterprise's Azure Deployment

Typical enterprise customers build virtual data center in the cloud. These data centers are comprised of hub-and-spoke networks that facilitate security and control over the virtual data center. Enterprise applications, such as the one described here, must exist within the context of this virtual data center. Please provide guidance on how this application pattern can fit into the virtual data center.

Enable TDE on Azure SQL Database

Issue

Data in Azure should be stored with encryption at rest. In Azure SQL Server Database this is handled with Transparent Data Encryption (TDE). We should enable this on the database to align with Azure best practices.

Todo

Enable TDE as part of the deployment in bicep.

Progress

Found this is now on by default for all environments. No additional research or configuration needed.

"By default, TDE is enabled for all newly deployed Azure SQL Databases"

Transparent data encryption - Azure SQL Database

Add code samples to MD file

The initial code samples were images. Now that we are in markdown, we should use the code block style:

//sample code here

Project Guide - Security - Describe authorization

The project guide contains a security section which describes the use of identity-based authentication. It mentions that Managed Identity will be used to secure access to services like Key Vault and App Configuration. It would be useful to include a description of how this is done; role assignments applied on the target services. It would also be useful to mention that a service may run with a system provided managed identity, or a user-specified managed identity with links to background on managed identity. (Some may prefer to control their application identities)

Cannot purchase tickets

Inside the ReleCloud app, choose a concert and attempt to purchase tickets. Once you complete the purchase workflow, you are re-directed to the Your Tickets screen and it says, "You haven't purchased any tickets yet, why don't you browse around the upcoming concerts?"

Project Guide - lead with a description of the solution

The Project Guide begins with an architeture diagram and then immediately launches into a discussion of reliability. Please set the stage first by describing the solution and its projects; otherwise, it is unclear where this reliability code goes.

Improve solution SLA

Issue

A single region deployment was found to have a composite SLA of 99.56%. We need to create an option for customers to be able to deploy at least three 9's of availability.

Todo

Investigate using azd to deploy a multiregion deployment with Front door to reach a higher SLA as described by docs.

Describe Azure Cost and Prerequisites in Readme.md

Include a description of estimated cost and Azure prerequisites in the project readme.md. This information is available in the project guide, however, it would help to set expectations (reduce fear) by letting the reader know that they need to provide an Azure Subscription, have sufficient privileges to create resources, and sufficient funds before executing the deployment script.

Failed to deploy SQL Server

Issue

The nightly build pipeline failed to deploy SQL server.

{
    "status": "Failed",
    "error": {
        "code": "OperationTimedOut",
        "message": "The operation timed out and automatically rolled back. Please retry the operation."
    }
}

Status: Conflict
Duration: 49 minutes 56 seconds
serviceRequestId: 17fac9f4-21b7-481b-b940-f2139058a986
Tracking ID: fde7b995-efcf-4503-be1b-6a3d77dca48c
Deployment Correlation ID: c04742b6-1c00-4926-9f2a-636af68c9034

Move the queue-based load-leveling assets to phase 2

After planning discussion, decided to reduce the concept load of phase 1 by extracting the queue-based load-leveling assets into phase 2 and leaving the image computation monolithic for now. It aides in the following ways:

  1. Reduces concept count for phase 1 in guidance and code
  2. Sets us up for demonstrating the value of observability in phase 2, when we identify a hot spot in the app that needs to be extracted into a separate background process.
  3. Sets us up for monolithic decomposition in phase 2, which will be more of a focus in phase 2.

Redis deployment issues

Recommended Workaround

If you experience this issue the recommendation is to delete the Azure Cache for Redis resource from your subscription and then to re-run the azd provision command.

You can also restart your deployment process by changing the value of $myEnvironmentName to a new unique string so that a new resource group will be created.


Issue

This item is created to capture, and evaluate, the issues we're experiencing when deploying Azure Cache for Redis. At this point there have been a handful of errors deploying this resource that we have dismissed as one-off or temporary issues. Capturing them here in one location will allow us to understand the frequency, and severity, of these issues.

  1. 8/8/2022 - relecloudqa-rg (Ken Schlobohm Subscription - eastus): Was unable to provision the Azure Cache for Redis. Gave up on the deployment operation after more than an hour of waiting for this issue to resolve to an error or success.
    Image

Underlying status/error was

{
    "status": "Failed",
    "error": {
        "code": "InternalServerError",
        "message": "Something went wrong.\r\nRequestID=55555555-eeee-4444-9999-000000000000"
    }
}

Resolution
Had to make a new resource group to bypass the issue

Improve SQL security

# Step 7: Set managed identity only access
Enable-AzSqlServerActiveDirectoryOnlyAuthentication -ServerName $ServerName -ResourceGroupName $ResourceGroupName
#if ($IsProd) {
    # Step 8: Block public access
    Set-AzSqlServer -ServerName $ServerName -PublicNetworkAccess 'disabled' -ResourceGroupName $ResourceGroupName
#}

Issue

The intent is to have SQL server only allow Azure AD connections and, for production only, disable public network access.

These features were previously part of the bicep template and had to be removed as part of the SQL server user setup work item.

A deployment script is used to setup managed identity and it needs the ability to connect as SQL admin from Azure (0.0.0.0).

To address this issue we need another deploymentScript to run after SQL setup has been completed to enable these security features. The challenge will be providing enough credentials to the deploymentScript to be able to perform the changes.

Relecloud Web App doesn't show upcoming concerts

Examining App Insights details for request failures on the "Upcoming Concerts" page shows that the web app cannot talk to Redis this impacts the ability to store session, MSAL tokens, and cache data from SQL Database.

Modify bicep templates to deploy multiple environments

Goal

  • A "prod" ready environment uses "prod" SKUs

Services

  • DONE - Key vault
  • DONE - App Configuration Service
  • DONE - App Service (Front end and API)
    • Scale up
      • Non-prod sku - "B1"
      • Prod SKU "P1V2"
    • Scale out
      • Scale out by 1 instance, max of 10 instances, when CPU is greater than 85% for 10min
      • Scale in by 1 instance, min of 1 instance, when CPU is less than 60% for 10min
  • DONE - Azure Cache for Redis
    • Non-prod sku - Basic C0
    • Prod sku - Standard C1
  • DONE - SQL Database
    • Non-prod sku Standard 10 DTU with 250gB max storage
    • Prod sku Premium 125 DTU with read-replica support, 250gB max storage, geo-redundant backup, and backups
  • DONE - Azure Storage
    • Non-prod sku - Storage v2 Standard_LRS
    • Prod - Standard_ZRS - we don't need low latency blobs to improve solution quality and we can't make a transaction if one of the zones is offline with geo redundant storage (we could only read) so geo redundant doesn't offer an advantage over zone redundant. src

Investigate nightly build workflow

Issue

The Nightly build should tear down correctly.

Image

The store was deleted but not purged.

Listing purged app svc shows nothing pending

Image

Todo

Manually trigger the nightly build pipeline twice and validate that it will succeed both times.

Progress

This is due to expected behavior described by the doc

If none of the deploymentScripts resource properties (including the inline script) are changed, the script doesn't execute when you redeploy the Bicep file

The deploymentScript should use the forceUpdateTag to indicate that the script should be re-run everytime a deployment is triggered.

Further research shows that the deploymentScript was unable to delete the resource. Moving this script into the pipeline may have changed the identity that was running this command because that proves successful.

Image

Add support for local dev experience

  • Setup secrets.json with URI reference to app configuration URL?
  • Can't connect to the SQL Database because the provisioned deployment prevents external access

Production database should include backup strategy

Issue

The production environment should include support for backups to help businesses address concerns of data loss, or corruption.

Todo

Create, or validate, that the production environment includes support for SQL server backups.

Progress

  • When we setup multiple environment support we automatically added database backup support.

Prod sku Premium 125 DTU with read-replica support, 250gB max storage, geo-redundant backup, and backups
Azure SQL Database creates full backups every week, differential backups every 12-24 hours, and transaction log backups every 10 minutes. src

Validate application style

The following topics need to be addressed in the documentation/writeup:

  • Discussion point: SPA vs. MVC style application. How do we
    position/explain this decision

createAppRegistrations.sh should write existing app registration info to kv and appconfig

Issue

The createAppRegistrations.sh script will create app registrations and place the configuration data that it creates into Key Vault and Azure App Config Svc. Running the script is an essential part of the setup process.

Currently, if the app registrations already exist the script will detect the condition and then exit without setting Key Vault and App Config Svc values.

Todo

The script should read from the existing App Registrations and write the necessary config data to App Config Svc and Key Vault. Users should not have to delete these app registrations to continue testing their deployments.

Workaround

The issue can be worked around by deleting the existing app registrations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.