Azure Training Syallbus
Azure Training Syallbus
(7 months)
(Covering Devops, AI , ML , Docker and Kubernetes)
Every Saturday and Sunday
www.questpond.com
Azure Basics
Basic Azure Concepts Why Cloud and Pay as you go model? 4 hours
IAAS , PAAS and SAAS
Private , Public and Hybrid cloud
Capex and Opex ,Consumption based model
Opening up Azure Account
Geography, Region, Zones and Availability Zones
Availability set , VMset , Fault domain and update domains
Resource and Resource groups, Azure resource manager.
Creating First Azure virtual Machine and understanding all the above
concepts.
2 factor auth in VM
Understanding terms High Availability, Scalability, Elasticity, Agility,
Fault Tolerance, and Disaster Recovery
Azure Support plans
AZ 900 Questions
Function Apps
Logic apps
Web application and Function Apps 4 hours
Serverless Logic Apps
Web jobs
Security OpenId , OpenId connect 2 hours
OAuth , OAuth 2.0
Integrating security with Web application.
Storages Azure SQL Server 6 hours
DTU , EDTU Calculation
Blobs, Queues , tables and Files.
(Tied up with Azure)
Create an Azure table
C# Insert update , Query and delete
10 best practices.
To the point queries , Partion key , row key
Duplicate is ok
Compund keys
Hot partitions
EGT Avoid new Azure tables
Delete pattern
Large entities
Intra partition
Inter partition
Concurrency ETag why did not work.
Fire walls and Load Balancers Demo of Azure front door service 4 hours
Dynamic site acceleration
Azure CDN and Front door services
WAF (Web Application firewall)
Traffic Manager
Automation Power shell 2 hours
ARM templates
Azure Automate
Docker and Kubernetes Docker is a software which implements container 4 hours
Docker , enable docker for windows
DockerFile , DockerIgnore
Docker build
Docker Run
Hosting on ACR
Understanding K8 Architecture.
AKS
Azure Devops
Devops What is Devops ? 4 hours
CI CD CU
Azure piple line
YAML
Checked in , Build start , Release , updated in to Azure APP Service
Unit testing inside the pipe line
Basic YAML from Azure pipeline
Implementing security :- Devopsec.
Ansible
Terraform
Puppet
Azure Machine Learning, AI
Azure Data Factory What is Data factory? 4 hours
Building pipelines, Data flows
Data transformation and orchestration.
Azure AI ML Understanding Azure learning work space. 4 hours
Train, optimize, manage and consume models.
Azure cognitive services and machine learning designer.
Trackevent metrics
https://docs.microsoft.com/en-us/dotnet/api/overview/azure/data.tables-readme-pre
Odata Query
https://docs.microsoft.com/en-us/odata/concepts/queryoptions-overview
https://azure.microsoft.com/en-in/pricing/details/storage/tables/
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet
https://docs.microsoft.com/en-us/azure/storage/tables/table-storage-design-patterns
https://learnxinyminutes.com/docs/yaml/
https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/javascript?view=azure-
devops&tabs=code
Uri("https://storagequestpond.table.core.windows.net/Patients"),"Patients",
new TableSharedKeyCredential("storagequestpond",
"xYiBpJZ8gN9znVvSKND+O6PULjHDkoUbOe0nXoBiAdmpI+UiTNfKw9qxckTpRtugg8Zj8RgWL/hFEe+eIeWQJ
Q=="));
//tableClient.AddEntity(p);
}
Patient entity = tableClient.GetEntity<Patient>("OutPatient", "r1009");
entity.PatientName = "new name123";
//tableClient.DeleteEntity()
tableClient.UpdateEntity(entity, ETag.All, TableUpdateMode.Replace);
Console.WriteLine("Hello World!");
}
}
BlobContainerClient containerClient =
blobServiceClient.GetBlobContainerClient("blob123");
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet-legacy
with file splits
public static async void Upload()
{
string connectionstring =
"DefaultEndpointsProtocol=https;AccountName=questpondstorage;AccountKey=T4mvdmtd9RouZT
niKnuxoSzVShbzKx60Zn0yRZZ0gQHdSTZC83Ez32EP+V+/xoSo0LNeG3QmMrh/+z6IoQRhmQ==;EndpointSuf
fix=core.windows.net";
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(connectionstring);
// Step 2 :- get reference o the blob client
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
blobClient.DefaultRequestOptions = new BlobRequestOptions()
{
//}
blockBlob.StreamWriteSizeInBytes = 1024 * 1024;
// Step 5 :- Uploading a PDF 13 mb
await blockBlob.UploadFromFileAsync(@"e:\Untitled.mp4");
//blockBlob.StreamMinimumReadSizeInBytes = 1024 * 1024;
//using (var blobStream = await blockBlob.OpenReadAsync())
//{
// using (var fs = new FileStream(@"c:\mynew.pdf", FileMode.Create))
// {
// await blobStream.CopyToAsync(fs);
// }
//}
//await blobClient.DownloadToAsync(downloadFilePath);
}
Append blob
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(@"DefaultEndpointsProtocol=https;AccountName=shivblob;AccountKey
=nuGq71akmiGgxAwUpzuq4L+WocsioPcHPt1kGbVWekFf/9h+8ODxGAqnY387f7glNoftXd8oMgEHS6Z
23wXUSg==;EndpointSuffix=core.windows.net");
// Step 3 :- from the blob client you will get refernce to the container
//appendBlob.DownloadToFile()
if (!appendBlob.Exists())
appendBlob.CreateOrReplace();
appendBlob.AppendFromFile(@"d:\Hello1.txt");
appendBlob.AppendFromFile(@"d:\Hello2.txt");
Page blob
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(@"DefaultEndpointsProtocol=https;AccountName=shivblob;AccountKey
=nuGq71akmiGgxAwUpzuq4L+WocsioPcHPt1kGbVWekFf/9h+8ODxGAqnY387f7glNoftXd8oMgEHS6Z
23wXUSg==;EndpointSuffix=core.windows.net");
// Step 3 :- from the blob client you will get refernce to the container
CloudPageBlob pb = container.GetPageBlobReference("pageblob123");
if (!pb.Exists())
pb.Create(3 * 512);
blobStream.Read(data, 0, 512);
File.WriteAllBytes(@"d:\new2.txt", data);
//{
//}
//fs.Read(bytearry, 0, 512);
//pb.WritePages(m, 0);
//fs.Read(bytearry, 0, 512);
//pb.WritePages(m, 512);
https://docs.microsoft.com/en-us/azure/storage/queues/storage-dotnet-how-to-use-
queues?tabs=dotnet
string connectionString =
"DefaultEndpointsProtocol=https;AccountName=questpondstorage;AccountKey=k/Td/CrBYlXHQp
LKaRT+Ag1n7xukLn7gFEgsfkDzBaxP7o3TYi5LrhvLY9nhBU6gwA9QotdD3UlS7pK0aSQRDw==;EndpointSuf
fix=core.windows.net";
retrievedMessage = queueClient.ReceiveMessages();
foreach (var item in retrievedMessage)
{
Console.WriteLine(item.Body);
}
// Process (i.e. print) the message in less than 30 seconds
//Console.WriteLine($"Dequeued message: '{retrievedMessage[0].Body}'");
// Delete the message
queueClient.DeleteMessage(retrievedMessage[0].MessageId,
retrievedMessage[0].PopReceipt);
Console.WriteLine("Hello World!");
Azure files
https://docs.microsoft.com/en-us/dotnet/api/overview/azure/storage.files.shares-readme
Home work..
https://docs.microsoft.com/en-us/azure/logic-apps/quickstart-create-logic-apps-with-visual-studio
https://dtucalculator.azurewebsites.net/
https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-asp-webapp
https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-aspnet-core-
webapp
Angular API
https://docs.microsoft.com/en-us/rest/api/servicebus/get-azure-active-directory-token
https://docs.microsoft.com/en-us/graph/auth-v2-service#token-request
MVC Conttoller
Web API
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "https://localhost:44360/",
"ClientId": "1eb4d1a2-9673-49e2-8c2f-88fdf8cb3761",
"TenantId": "bf65742e-d37d-46f9-bc1d-24def2b7bc1d",
"CallbackPath": "/signin-oidc"
}
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
}).AddMicrosoftIdentityUI();
}
// This method gets called by the runtime. Use this method to configure the
HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for
production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
Docker help
.dockerignore
1. Important commands
To create image.
To create container
docker images
To stop a image
docker ps -a -q | % { docker rm $_ }
WORKDIR /MyCore123
COPY *.sln .
COPY MyCore123/*.csproj ./MyCore123/
WORKDIR /MyCore123/MyCore123
FROM microsoft/aspnet
Step 3 :- .dockerignore
# directories
**/bin/
**/obj/
coob-control
coob-let
https://www.knowledgehut.com/blog/devops/install-kubernetes-on-windows
. kubectl apply -f .\recommended.yaml
https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-
rc7/aio/deploy/recommended.yaml
kubectl proxy.
http://localhost:8001/api/v1/namespaces/kubernetes-
dashboard/services/https:kubernetes-dashboard:/proxy/
https://github.com/kubernetes/minikube/releases/latest/download/minikube-installer.exe
minikube start
kubectl get nodes
minikube dashboard
minikube dashboard –url
minikube status
kubectl get pods --all-namespaces
kubectl create deployment hello-minikube --
image=k8s.gcr.io/echoserver:1.4
https://alexanderzeitler.com/articles/running-asp-net-core-on-minikube/
kubectl api-versions
kubectl explain
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-netcore-k8s
spec:
replicas: 3
template:
metadata:
labels:
app: hello-netcore-k8s
spec:
containers:
- name: hello-netcore-k8s
image: hello-netcore-k8s
ports:
- containerPort: 80
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-docker-
cli?tabs=azure-cli
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal
https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-
windows?view=powershell-7.2
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-docker-
cli?tabs=azure-cli
Connect-AzAccount -DeviceCode
https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
docker tag mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine questpondacr.azurecr.io
docker run -it --rm -p 8080:80 questpondacr.azurecr.io/v1
https://docs.microsoft.com/pt-br/azure/container-registry/container-registry-auth-kubernetes
https://docs.microsoft.com/en-us/azure/aks/cluster-container-registry-integration?tabs=azure-cli
APIM
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-policies#-how-
to-configure-policies
https://docs.microsoft.com/en-us/azure/api-management/transform-api
Products
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-add-
products?tabs=azure-portal
https://docs.microsoft.com/en-in/azure/cdn/cdn-create-new-endpoint
https://docs.microsoft.com/en-us/azure/load-balancer/quickstart-load-balancer-standard-public-
portal
https://docs.microsoft.com/en-us/azure/traffic-manager/quickstart-create-traffic-manager-profile
https://loadium.io/
2. https://docs.microsoft.com/en-us/azure/firewall/tutorial-firewall-deploy-portal-
policy#configure-a-network-rule
Powershell
CMDlets :- Get-Process
Get-Service -Name x*
$MyVariable = 1, 2, 3
Open an elevated PowerShell prompt and in order to allow the execution of scripts signed by a
trusted publisher run
Set-ExecutionPolicy RemoteSigned
Connect-AzAccount
https://docs.microsoft.com/en-us/powershell/azure/azureps-vm-tutorial?view=azps-7.1.0
2. How to schedule the PS script in Azure to do a specific job everyday at a particular time.?
$psversiontable
Azure security
Azure telemetry
Azure Application Insights sends telemetry from your web application to the Azure portal, so that
you can analyze the performance and usage of your application.
Azure telemetry
Application insight
Event - typically used to capture user interaction with your service, to analyze usage patterns.
Dependency telemetry
https://squaredup.com/blog/kusto-101-a-jumpstart-guide-to-kql/
|TableName
AppServiceAppLogs
AppServiceAppLogs
| order by OperationName
AppServiceAppLogs
AppServiceAppLogs
AppServiceAppLogs