Skip to content

Commit

Permalink
docs: made guide more platform agnostic
Browse files Browse the repository at this point in the history
  • Loading branch information
ibersanoMS committed Sep 28, 2023
1 parent 49f589e commit c738bbc
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions Scenarios/Initial-Containers-Checklist/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# .NET Migration to Azure Kubernetes Service Guide
# Application Migration to Azure Kubernetes Service Guide
## Architectural and Non-Functional Requirements Checklist


Expand All @@ -8,7 +8,7 @@ Migrating a web application to Azure Kubernetes Service (AKS) involves careful p
| Topic | Guidance |
|--------------|-----------|
|Azure subscription that will host Azure Kubernetes service and other required resources.|[Subscriptions, licenses, accounts, and tenants for Microsoft's cloud offerings](https://learn.microsoft.com/en-us/microsoft-365/enterprise/subscriptions-licenses-accounts-and-tenants-for-microsoft-cloud-offerings?view=o365-worldwide)|
|The dependency graph of the application is known and documented, including databases and network storage, and all external services (such as other web applications) that the application relies on or that rely on this application, and can be assessed and migrated simultaneously, or components remain as-is without loss of connectivity or degradation of service.||
|The dependency graph of the application is known and documented, including databases and network storage, and all external services (such as other web applications) that the application relies on or that rely on this application, and can be assessed and migrated simultaneously, or components remain as-is without loss of connectivity or degradation of service.| Azure Application Insights supports [several scenarios](https://learn.microsoft.com/en-us/azure/azure-monitor/app/codeless-overview) and generates an Application Map that helps visualize how your application interacts with other resources. |
|Service Level Agreements (SLA) for Online Services|[Licensing Documents (microsoft.com)](https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1&year=2023)|
|Requirement of advanced configuration for the application workload to adhere to regulatory compliances.|[Azure compliance documentation](https://learn.microsoft.com/en-us/azure/compliance/)|
|Security|Container security protects the entire end-to-end pipeline from build to the application workloads running in Azure Kubernetes Service (AKS). </br> </br>Kubernetes includes security components, such as pod security standards and Secrets. Azure includes components like Active Directory, Microsoft Defender for Containers, Azure Policy, Azure Key Vault, network security groups, and orchestrated cluster upgrades.</br></br>See guidance provided here [Security concepts for applications and clusters in Azure Kubernetes Service](https://learn.microsoft.com/en-us/azure/aks/concepts-security)|
Expand All @@ -32,10 +32,9 @@ Migrating a web application to Azure Kubernetes Service (AKS) involves careful p
|--------------|------------|
|Persistent Storage| Pods are stateless and anything saved to the file system on the pod does not persist passed the lifecycle of the pod. Consider if your application requires access to files either stored on the filesystem or from a remote location. AKS supports various storage options such as Azure Disks, Azure Files, and persistent volumes (PVs). |
| Virtual Directory/Filesystem | It is a common practice to store web app content under site root or on the mounted virtual directories. Any files that require persistent changes will be reset during pod restarts and will not transfer across pods. It is recommended that any files that have changes that need to persist to store them in a persistent volume mounted to the node. External storage guarantees the maintenance of files and is accessible across all pods which supports consistency across all instances of the application. Find more info [here](https://learn.microsoft.com/azure/aks/concepts-storage#storage-classes) about the different types of storage you can mount to identify the option that best fits your applications data storage requirements. |
| Registry | Applications writing to the registry are supported in AKS, but since containers are stateless, you should be mindful of these actions because anything that needs to persist beyond the life of the pod will be reset when the pods are destroyed or restarted. |
| Native OS Operations | Any operations that require direct access to part of the OS such as applications writing to the registry are supported in AKS, but since containers are stateless, you should be mindful of these actions because anything that needs to persist beyond the life of the pod will be reset when the pods are destroyed or restarted. |
| Session Management and Caching | Since containers are stateless, it is recommended to transition state management models to use services such as Redis Cache to store the session information outside of the cluster to prevent deletion when pods are destroyed or restarted. This model also helps reduce memory consumption on the container. If your application manages state locally, consider moving to an external state management provider. |
| Domain Services |
AKS supports Windows Authentication and Group Managed Service Accounts (GMSA) through a [PowerShell module](https://learn.microsoft.com/virtualization/windowscontainers/manage-containers/gmsa-aks-ps-module). For more information on Windows specific domain information, checkout our [checklist for Windows workloads on AKS](https://github.com/Azure-Samples/LegacyDotNetAppMigrationWorkshop/blob/main/Containers-Migration-Checklist.md)|
| Domain Services | AKS supports Windows Authentication and Group Managed Service Accounts (GMSA) through a [PowerShell module](https://learn.microsoft.com/virtualization/windowscontainers/manage-containers/gmsa-aks-ps-module). For more information on Windows specific domain information, checkout our [checklist for Windows workloads on AKS](https://github.com/Azure-Samples/LegacyDotNetAppMigrationWorkshop/blob/main/Containers-Migration-Checklist.md)|
| Reliability | A reliable web application is one that is both resilient and available. Resiliency is the ability of the system to recover from failures and continue to function. The goal of resiliency is to return the application to a fully functioning state after a failure occurs. Availability is a measure of whether your users can access your web application when they need to. You should use the Retry and Circuit Breaker patterns as critical first steps toward improving application reliability. These design patterns introduce self-healing qualities and help your application maximize the reliability features of the cloud. Pay particular attention to your application’s startup code (for example, your project’s startup.cs, deferred initialization of services in your IoC container, etc.). While not required for a successful migration, you’ll gain full advantage of AKS’s horizontal pod autoscaler (HPA) features by ensuring that your application can start reliably.|
| Third Party Solutions| Identify whether your application is dependent on any third party libraries, apis, or packages that need to run within the container. Examine the licenses of third-party dependencies to ensure compliance with your organization's licensing policies and legal requirements. Some dependencies may have restrictive licenses that could impact your application's distribution. |

Expand Down

0 comments on commit c738bbc

Please sign in to comment.