Microsoft Azure - News & Updates - May 2018




Microsoft Azure news, updates and announcements (258 entries) for May 2018:

Application Development:

31 - Receiving and handling HTTP requests anywhere with the Azure Relay
31 - Azure API Management release notes – May 31, 2018
31 - Potential change to API Management IP addresses
31 - Azure Security Center can identify attacks targeting Azure App Service applications
31 - One Week Left to Take State of DevOps Survey
31 - Potential change to API Management IP addresses
31 - The Ship List: Visual Studio App Center May Update
30 - New Updates for Azure Development in Visual Studio
30 - Visualize release progress—VSTS Sprint 135 Update
29 - Announcing the May 2018 Git Security Vulnerability
29 - Service Fabric 6.1 Refresh Release (CU2)
25 - Top stories from the VSTS community – 2018.05.25
25 - What’s new in VSTS Sprint 134 Update
23 - Do more with Chef and Microsoft Azure
23 - Use packages reliably with upstreams for VSTS feeds
22 - Azure API Management PowerShell Cmdlets update
22 - Container Tooling for Service Fabric now available in Visual Studio 2017
22 - General availability: Log alerts for Application Insights
22 - New Service Fabric client library for .NET
22 - Webhooks and Email Notifications in Visual Studio App Center Build
21 - Announcing the deprecation of the WIT and Test Client OM at Jan 1, 2020
21 - Now available - Azure Container Instances on Windows and Linux
21 - Now available - Azure Container Registry
21 - In preview - Azure Media Services and Video Indexer
21 - Now available - Visual Studio App Center | App Center and GitHub integration
21 - In preview - Visual Studio Team Services | Azure DevOps Projects
21 - Now available - Visual Studio Team Services | Release Management release gates
18 - Public preview: Query across applications in log alerts
18 - Azure App Service on Azure Stack Update Two Released
18 - Top stories from the VSTS community – 2018.05.18
18 - Importing virtual machines across Azure DevTest Labs
17 - In preview - New Async Java SDK for Azure Cosmos DB in preview
16 - How does Azure DevTest Labs handle user’s personal data?
16 - Security changes coming to Azure Web Apps, affecting Azure Bot Service
16 - Service Fabric with OMS Log Analytics
16 - HTTP/2 configuration available in the Azure portal
15 - Azure DevTest Labs: Resize a lab virtual machine
15 - Integrating Xamarin.com into Microsoft Sites
13 - April 2018 App Service update
12 - Azure Service Fabric - 6.2 Release Update
11 - PHP Minor Version Update for June 2018
11 - June 2018 version updates to PHP
11 - Azure API Management Release notes – May 11, 2018
11 - DevOps with VSTS: Build 2018 Recap
11 - Top stories from the VSTS community – 2018.05.11
10 - Shift Left with SonarCloud Pull Request Integration
10 - Please Help Make the Science of DevOps Even Better!
10 - Enhancements in Application Insights Profiler and Snapshot Debugger
09 - Announcing new Async Java SDK for Azure #CosmosDB
09 - All Things Xamarin at Build 2018
08 - Red Hat and Microsoft co-develop the first Red Hat OpenShift jointly managed service on a public cloud
08 - Web Apps making changes to FTP deployments
08 - New hands-on labs: Create containerized apps with Kubernetes in Azure
08 - OpenShift on Azure: The easiest, fully managed OpenShift in the cloud
07 - Now available - Announcing Azure Cosmos DB bulk library in .NET and Java
07 - Announcing Cognitive Search: Azure Search + cognitive capabilities
07 - In preview - Multi-container support from Azure App Service
07 - Multi-container Linux Web App
07 - App Service Authentication/Authorization Coming to Linux Apps
07 - New SSH Experience and Remote Debugging for Linux Web Apps
07 - Announcing the Linux on App Service Environment Public Preview
07 - App Service Diagnostics Comes to Functions, ASE, and More!
07 - In preview - Azure Cosmos DB | Provision Throughput for a Set of Containers
07 - Azure Service Fabric at Microsoft Build 2018
07 - Break through the serverless barriers with Azure Functions
07 - Deploy to Azure Kubernetes Service by using DevOps Projects: Sprint 134 Update
07 - Azure DevOps Project: New feature additions
07 - GUID migration: Container Instances
07 - Microsoft and GitHub Present: A Solution for Mobile CI
07 - Name changes and GUID migration: Azure App Service on Linux Basic plan
07 - Name changes and GUID migration: Azure App Service on Linux Premium plan
07 - Name changes and GUID migration: Azure App Service on Linux Standard plan
07 - Service Fabric at Build 2018
04 - Top stories from the VSTS community – 2018.05.04
03 - Azure Functions Recipes
03 - Secure Jenkins for Service Fabric with Azure Credentials
02 - Breaking change for SNI-SSL hostnames on Azure App Service
02 - Breaking change for SNI-SSL host names on Azure App Service
01 - App Service Command Line Tools Resources
01 - Announcing the DevOps Resource Center

Data Platform & AI:

31 - Make Azure IoT Hub C SDK work on tiny devices!
31 - VNet service endpoints for Azure database services for MySQL and PostgreSQL in preview
30 - Digging in with Azure IoT: Our interactive developer guide
30 - Gain application insights for Big Data solutions using Unravel data on Azure HDInsight
30 - Getting started with Apache Spark on Azure Databricks
30 - Public preview: Virtual network service endpoints for Azure Database for MySQL
30 - Public preview: Virtual network service endpoints for Azure Database for PostgreSQL
29 - Name changes: Azure SQL Database long-term backup retention for Australia
24 - General availability: Data-in Replication for Azure Database for MySQL
23 - Control Azure Data Lake costs using Log Analytics to create service alerts
23 - Load confidently with SQL Data Warehouse PolyBase Rejected Row Location
23 - Serverless real-time notifications in Azure using Azure #CosmosDB
22 - Accelerate data warehouse modernization with Informatica Intelligent Cloud Services for Azure
21 - In preview - Azure Sphere
21 - Azure IoT Reference Architecture update
21 - Now available - Azure IoT solution accelerators
20 - Microsoft acquires Semantic Machines, advancing the state of conversational AI
17 - Announcing SQL Advanced Threat Protection (ATP) and SQL Vulnerability Assessment general availability
17 - General availability: Azure Database Migration Service
17 - Now available - Power BI embedded feature roundup—new features now available
17 - Now available - Vulnerability assessment for Azure SQL Database now generally available
15 - Azure Service Bus - AMQP transaction support and Send Via are now generally available
15 - Quartic.ai, manufacturing agility with IoT and AI
15 - Name changes and GUID migration: Azure SQL Data Warehouse Gen1 US Government
14 - Accelerate your cloud data warehouse with automation tools
14 - 10 great things about Kafka on HDInsight
14 - Enhance productivity using Azure Data Factory Visual Tools
14 - Using the Azure IoT Python SDK: make sure you check the version!
14 - General availability: Automatic creation of statistics in SQL Data Warehouse
10 - Full-integrated experience simplifying Language Understanding in conversational AI systems
10 - Extract management insights from SQL Data Warehouse with SQL Operations Studio
10 - Now available - New standard tier performance levels in Azure SQL Database
10 - Spark + AI Summit: Data scientists and engineers put their trust in Microsoft Azure Databricks
10 - Azure SQL Data Warehouse now supports automatic creation of statistics
09 - Azure alerts available for Power BI Embedded
09 - Azure Event Hubs for Kafka Ecosystems in public preview
09 - Blob output partitioning by custom attribute in Azure Stream Analytics
09 - C# custom code support for Stream Analytics jobs on IoT Edge
09 - General availability: Azure Cosmos DB Virtual Network Service Endpoints
09 - Azure Memory metric for Power BI Embedded is available
09 - Azure Memory Thrashing metric for Power BI Embedded is available
09 - QPU High Utilization metric available for Power BI Embedded
09 - Session windows available in Azure Stream Analytics
09 - Updated built-in machine learning models for anomaly detection in Stream Analytics
08 - 4 new features now available in Azure Stream Analytics
08 - Data Factory GetMetadata activity supports more sources and metadata options
08 - Data Factory Lookup activity supports a rich set of connectors
08 - Power BI Embedded custom report tooltips and Q&A explorer are available
07 - Accelerating AI on the intelligent edge: Microsoft and Qualcomm create vision AI developer kit
07 - Announcing General Availability of QnAMaker
07 - Azure #CosmosDB @ Build 2018: The catalyst for next generation apps
07 - Now available - Azure SQL Database and Data Warehouse TDE with customer managed keys
07 - Better integrations and higher productivity with Azure Event Grid
07 - Have fun and draw awesome on the cosmic scale Azure #CosmosDB #PxDraw canvas today!
07 - In preview - Manage Azure Cosmos DB in Azure Storage Explorer
07 - Microsoft empowers developers with new and updated Cognitive Services
07 - Name changes: Azure SQL Data Warehouse Gen1 and Gen2
07 - New connectors available in Azure Data Factory
07 - Sharing provisioned throughput across multiple containers in Azure #CosmosDB
07 - Now available - Virtual network service endpoint for Azure Cosmos DB
07 - Virtual Network Service Endpoints for Azure #CosmosDB is now generally available
07 - What’s new with Azure IoT Edge?
04 - Data Factory supports wildcard file filters for Copy Activity
04 - Preview: The vCore-based purchasing model for Azure SQL Database is extended with additional compute and storage options
04 - General availability: Azure Database for MySQL in new regions and compute generation
04 - General availability: Azure Database for PostgreSQL in new regions and compute generation
02 - Bring the power of serverless to your IoT application and compete for cash prizes
01 - General availability: Azure SQL Data Warehouse Gen2
01 - Explore SaaS analytics with Azure SQL Database, SQL Data Warehouse, Data Factory, and Power BI
01 - Python, Node.js, Go client libraries for Azure Event Hubs in public preview
01 - Secure credential management by using Azure Key Vault and Data Factory

Infrastructure:

30 - Refresh 2 release for Azure File Sync preview
30 - General availability: Soft delete for Azure Storage blobs
30 - Soft delete for Azure Storage Blobs generally available
29 - Log Analytics query language recommendations for Summarize and Join operators
29 - Troubleshooting VM and Environment Creation Failures
25 - M-Series certified for SAP HANA and available worldwide
24 - Accelerate your SAP on Azure HANA project with SUSE Microsoft Solution Templates
24 - Deprecating older versions of the Azure Site Recovery REST API
23 - Azure AD Authentication for Azure Storage now in public preview
22 - Blue-Green deployments using Azure Traffic Manager
22 - New updates for Microsoft Azure Storage Explorer
21 - In preview - Azure Blockchain Workbench
21 - Now available - Azure Storage Explorer
19 - Enterprise administrators can view reserved instances in the Azure portal
17 - Detect malicious activity using Azure Security Center and Azure Log Analytics
17 - New Azure Network Watcher integrations and Network Security Group Flow Logging updates
16 - GUID migration: Storage Managed Disks
16 - GUID migration: Storage Managed Disks, US Government regions
15 - Why developers should enable Azure Security Center’s Just-in-Time VM Access
10 - In development - Azure China cloud integration for Azure Stack
10 - In development - Azure Government cloud integration for Azure Stack
10 - GUID Migration: E64i VM series
10 - Customer success stories with Azure Backup: Somerset County Council
09 - Azure Networking May 2018 announcements
07 - Monitoring Azure Kubernetes Service (AKS) with Azure Monitor container health (preview)
07 - Public preview: Azure Blockchain Workbench
07 - Simplifying blockchain app development with Azure Blockchain Workbench
07 - Simplifying blockchain app development with Azure Blockchain Workbench
04 - Azure M-series VMs are now SAP HANA certified
03 - General availability: Azure Storage metrics in Azure Monitor
03 - Announcing low-priority VMs on scale sets now in public preview
01 - Global VNet Peering now generally available
01 - Monitor Microsoft peering in ExpressRoute with Network Performance Monitor - public preview

Security:

31 - 3 reasons why Azure’s infrastructure is secure
30 - Assess GPDR readiness with Microsoft Cloud App Security
30 - Now available - Azure AD B2B Collaboration Join/Leave Consent
29 - This is SO cool! Use Azure AD to login to Azure Linux virtual machines
25 - New capabilities to enable robust GDPR compliance
16 - PingFederate configuration integration for Azure AD now in public preview!
15 - GUID migration: Azure Security Center unit-of-measure change
15 - Protect virtual machines across different subscriptions with Azure Security Center
14 - Exciting improvements to the B2B collaboration experience
11 - Azure AD B2C just keeps getting better! More customization options + easier to configure!
10 - In case you missed it: 10 of your questions from our GDPR webinars
07 - Now available - Application Security Groups now available
04 - Use Internal URLs to access apps from anywhere with our My Apps Sign-in Extension and the Azure AD Application Proxy
02 - Monitor your ADFS sign-in activity using Azure AD Connect Health’s risky IP reports

General:

29 - Azure.Source - Volume 33
29 - The best of AppSource & Azure Marketplace at Build 2018
25 - Microsoft continues to be a leader in Gartner's Cloud IaaS MQ
24 - Devs imagine, create, and code the future at Microsoft Build
24 - Explore Build 2018 content with playlists
24 - New container images in Azure Marketplace
24 - Transact capabilities for SaaS apps now available in Azure Marketplace
23 - An update on the integration of Avere Systems into the Azure family
23 - Create enterprise subscription experience in Azure portal public preview
23 - Join your peers and Microsoft staff in Las Vegas
22 - Key Training and Events for Microsoft Partners in May
21 - Azure.Source - Volume 32
21 - Changes coming to PowerShell (preview) in Azure Cloud Shell
18 - Azure the cloud for all – highlights from Microsoft BUILD 2018
16 - Azure Marketplace new offers: April 16-30
16 - Nudge AI, helping companies build relationships and grow sales
15 - A Look Back At KubeCon + CloudNativeCon Europe 2018
15 - Accelerate innovation with Consulting Services in Azure Marketplace
15 - Name changes: Azure Maps
14 - Azure.Source - Volume 31
14 - Feature update: Resize a lab virtual machine
14 - Help improve our Azure docs!
14 - Join Microsoft at Bio-IT World
12 - Why to love Python today and tomorrow: Interview with Nina Zakharenko
11 - Zoom AI, helping companies increase adoption of current workplace platforms with AI
10 - Azure Lab Services Public Preview Released!
09 - Azure confidential computing
08 - Announcing Microsoft account age-related features
08 - Introducing two new mixed reality business applications: Microsoft Remote Assist and Microsoft Layout
08 - Opportunity and responsibility in the era of the Intelligent Cloud and Intelligent Edge
08 - Private Offers on Azure Marketplace
07 - Revised Scaling Experience for Standard and Premium
07 - Introducing Restore from Snapshots (Preview)
07 - Azure AI Platform announcements: New innovations for developers
07 - In preview - Azure Cognitive Search now in preview
07 - Now available - Azure Maps now Generally Available
07 - Azure mobile app is now generally available
07 - Build 2018: What's new in Azure video processing and video AI
07 - Build a Microsoft Bot Framework bot with the Bot Builder SDK v4
07 - Team Foundation Server 2018 Update 2 is now available
07 - Release Gates – Enable Progressive Exposure and Phased Deployments
07 - Introducing the Azure Terraform Resource Provider
07 - Kubernetes on Azure: Industry’s best end-to-end Kubernetes experience
07 - Microsoft Build highlights new opportunity for developers, at the edge and in the cloud
07 - Microsoft Conversational AI tools enable developers to build, connect and manage intelligent bots
07 - New Azure innovations are helping developers write code today for tomorrow’s technology challenges
07 - New Integrations for GitHub Developers
07 - Shared Image Gallery now in limited public preview
07 - Now available - Windows Server version 1803
04 - Announcing first-class support for CloudEvents on Azure
04 - Azure.Source - Volume 30
04 - Now available - Reliable Services and Reliable Actors on Linux now Generally Available
03 - Azure expands certification scope of Health Information Trust Alliance Common Security Framework
02 - Image Factory – Part 4: Set Retention Policy and Run Cleanup Steps
02 - Microsoft extends AI support to PyTorch 1.0 deep learning framework
02 - Connect with Microsoft at Red Hat Summit (or via the Live Stream!)
02 - The Azure Cloud Collaboration Center: A First-of-Its Kind Facility
01 - General Availability in China and US Government Cloud
01 - Azure Marketplace new offers: April 1–15
01 - Microsoft Build: Come for the tech, stay for the party

Did you miss the previous ones? Check them out!

Enjoy!

This blog article has been powered by Azure Logic Apps, Azure Functions and Azure Table Storage, check out the story!

Furthermore, feel free to ask the associated Bot and check out the story how easily I built it with the Azure Bot Service!

Host your Private VSTS Linux Agent on Azure Kubernetes Service

After having introduced the Azure Kubernetes Service, today we are going to take a technical example to play with Docker, Kubernetes and Helm.
For that, we need a purpose. The exercise I would like to do is configuring a private VSTS agent. You know how I love playing with VSTS! ;)
VSTS has by default 4 Hosted Agents: Windows (VS2017), Windows (VS2013/2015), Linux (Ubuntu) or MacOS for your Build and Release definitions. And the first 240 minutes per month are free. That's awesome, isn't it!?
So, why do I need a private VSTS agent? There is different reasons why you may need it:
  • To avoid the limitations of the Hosted agents explained here
  • To decrease cost, you don't pay for the minutes you are consuming
  • To interact between your agent and your resources both in Azure, on-premise, etc. (for security, performance, etc. reasons)
  • To have specific version of OS/tools installed on the agent
  • To avoid waiting for an hosted agent queue
  • To do incremental builds (source control files, docker images) by leveraging cache
  • If you are using the Linux Container, to run deployments and tests from within a Kubernetes cluster for example (for security, performance, etc. reasons)
You could setup a private agent on physical machine or virtual machine by following the general documentation for Windows, for Linux or for MacOS. Another alternative we will follow through this blog article is setting up the official Linux container.
Note: by default, you have 1 Private Agent for free, see the details of the VSTS pricing if you need more than 1 Private agent.

So based on the VSTS Agent Docker Hub page, let's get started!

Here are some information we could notice:
  • Ubuntu 14.04 and 16.04 are the current OSes supported. There are plans for Windows support in the future (WIP works for now here)
  • latest tag points at a Standard Docker imaged based on the best supported OS, as we speak, it's targeting ubuntu-16.04-docker-17.12.0-ce-standard
  • There is images for both VSTS and TFS
  • There is 3 kind of images: standard, docker and docker-standard
In our case, we will target the latest tag, because we would like the capabilities of Ubuntu 16.04 + docker-standard setup for VSTS.

At the end of the description, we need to pay attention to this mention:
These images do not run "Docker in Docker", but rather re-use the host instance of Docker. To ensure this works correctly, volume map the host's Docker socket into the container: -v /var/run/docker.sock:/var/run/docker.sock
Important note here: if you upgrade your AKS cluster, current nodes will be removed  and new fresh nodes will be created. With this Docker socket binding, your VSTS agent won't work anymore, you will have to redeploy it.

So the associated Docker command looks like this so far:
docker run \
  -e VSTS_ACCOUNT=$VSTS_ACCOUNT \
  -e VSTS_TOKEN=$VSTS_TOKEN \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -it microsoft/vsts-agent:latest

You need to assign the appropriate value of the variables: VSTS_ACCOUNT and VSTS_TOKEN. To know how to retrieve the VSTS_TOKEN value, please check out this documentation.

Now you will see the VSTS Agent Queues in your VSTS Account:

That you could now use in your Build and Release definitions:

Ok, but how to deploy this in a Kubernetes/AKS cluster?

You need to have an existing Kubernetes cluster, if you don't have any yet and would like to create one with Azure Kubernetes Service (AKS), checkout this tutorial.

From there, let's create and run now the associated Kubernetes config as YAML file to describe our deployment. And changing your values appropriately.
First, let's add a new Kubernetes Secret:
kubectl create secret generic vsts-pat \
  --from-literal=VSTS_TOKEN=$VSTS_TOKEN \
  --from-literal=VSTS_ACCOUNT=$VSTS_ACCOUNT

And now let's apply the Kubernetes Deployment:
kubectl apply \
  -f aks-vsts-agent-without-pv.yml

You could now see your new Pod created with STATUS=Running, you could check this by running the kubectl get pods command.
If you go to your Agent Queues tab in VSTS, you should now see your new Agent as well. Congrats! ;)
You could now run/queue your Build definition which uses this Agent and you will see how fast it is to run. In my case I have a very simple VSTS Build definition which is just pulling the source code from GitHub and then building a Docker image based on this Dockerfile.
The first run will take about ~93s, and guess how long for the second run? ~11s! What! Why!? Yep, that's one of the advantage to have your own private agent. The files pulled from GitHub and the Docker images pulled during the previous build run are still there and the next build runs will just grab deltas.

Important note: There is a limitation to leverage the Kubernetes' Docker host with this setup you have to have in mind. This config is ok for "basic" Docker features (Docker 1.13 and lower) on your agent but if you are using "advanced" Docker features you could get some error messages like "Error parsing reference: "microsoft/aspnetcore-build:1.1 AS build-env" is not a valid repository/tag: invalid reference format". if you are using for example the concept of multi-stage Docker builds. That's a constraint with AKS, and we don't know when it will be supported... You could up vote here.

Ok, but now what's happening if I update my Container/Pod, if the Pod crashes or is deleted, etc.?

Good point... let's try this out!
You could run this command to delete your pod:
kubectl delete pod/<name-of-your-pod>

You will see that your previous Pod will be Terminating, then removed and that a new Pod will be created. This mechanism by Kubernetes is because we set replicas: 1 in our YAML file to deploy this Pod, which guarantees to always have 1 Pod.
If we queue a third Build in VSTS, we will see that the duration is now ~13s. So it's higher than the second one but lower than the first one. Why? By looking at the VSTS Build logs we could see that we are doing again a git remote add origin and pulling all the files from GitHub, not like the second run but like the first one. Remark: my GitHub repository in this case is very small, but if you have a bigger one you could expect more differences regarding this step's duration.
In the other hand, we are seeing that the docker build command is using the cache like the first run and not like the second one. That's because we volume mapped the host's Docker socket into the container in our YAML file.
So what about the GitHub files? Is there any way to persist them on a storage? Yes indeed!
For that we will use the concept of Volumes. Here are 4 documented ways to do that in Azure: AzureDisk dynamic | AzureDisk static | AzureFile dynamic | AzureFile static.

To clean up your Kubernetes cluster from the previous step, you could run these commands:
kubectl delete \
  -f aks-vsts-agent-without-pv.yml

In our case we will use AzureFile dynamic and will run these commands:
kubectl apply \
  -f aks-vsts-agent-sc.yml
kubectl apply \
  -f aks-vsts-agent-pvc.yml
kubectl apply \
  -f aks-vsts-agent-with-pv.yml

Here we are, you could now redo the test multiple times and see that your files from your source control are now persisted even if your pod is removed/updated. Congrats!

Ok, but now how to automate and repeat the YAML deployment file for different Agents, different projects, environments, etc.?

Yes good point, when we look at the YAML file we could indeed see hard-coded value like deployment name, image name, image tag, etc.
Helm is the tool to automate Kubernetes deployments by bringing the concept of charts, templates, parameters and values.

To clean up your Kubernetes cluster from the previous step, you could run these commands:
kubectl delete \
  -f aks-vsts-agent-sc.yml
kubectl delete \
  -f aks-vsts-agent-pvc.yml
kubectl delete \
  -f aks-vsts-agent-with-pv.yml

To create our own Helm charts we could get inspiration of these 2 repositories: Kubernetes or Azure.
Or we could use an existing one to avoid re-inventing the wheels and and we could proceed with these steps:

helm init
git clone https://github.com/Azure/helm-vsts-agent.git
VSTS_TOKEN=$(echo -n $VSTS_TOKEN | base64)
helm install \
  --name vsts-agent \
  ./helm-vsts-agent \
  --set vstsToken=$VSTS_TOKEN \
  --set vstsAccount=$VSTS_ACCOUNT \
  --set vstsPool=Default \
  --set replicas=1 \
  --set resources.limits.cpu=0 \
  --set resources.requests.cpu=0

Note: if you have helm version 2.9.0, you should get this error: https://github.com/kubernetes/helm/issues/3985, see the associated workaround or upgrade to helm 2.9.1.

Here we are, after some times, we have a new agent provisioned by this Helm chart and we could now repeat the process across our different projects, etc. Congrats!

Optionally, you could remove this deployment by running this command:
helm delete \
  --purge \
  vsts-agent

To complete our Kubernetes learning, here are some differences we could notice from our initial YAML files (with or without PersistentVolume) and the template provided by this Helm chart:
  • Deployment versus StatefulSet
    • Like a Deployment, a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling. So for example the StatefulSet will guarantee the duplication of your PersistentVolume while scaling your Pods, Deployment won't.
  • Secrets in YAML instead of running the kubectl create secret command
    • That's two ways to register your Secrets
  • resources.limits + resources.requests information
  • Service and Namespace
    • You could leverage these concepts of Services and Namespaces for more isolation, security, etc. reasons.
  • AzureDisk instead of AzureFile for PersistentVolume
    • Like explained few lines above, you have different options on Azure for PersistentVolume
Note: it was the opportunity for me to submit a quick fix with this PR#2 already merged into master and also propose this Improvement#1.

In summary, what did we do and learn?

  • Setup a VSTS Private Agent (Docker Linux)
  • Deploy your private agent in a Kubernetes cluster on AKS
  • Deploy and play with different Kubernetes objects such has: Deployment, StatefulSet, Secret, PersistentVolume and PersistentVolumeClaim.
  • Find out that the Docker version on Kubernetes for now is just Docker 1.13, with some limitations to build your Containers from within the cluster
  • See the interest of Helm for more repeatable and automation capabilities
Resources I used to build this:
Further steps and alternatives (and some ideas for future blog articles ;)):
Hope you enjoyed this blog article, you appreciated the walk-through process to understand different concepts of Docker/Kubernetes/Helm. And hopefully you could leverage it for your own needs and context!

Cheers!

Top Super Foods: for Diabetes Control (& Natural Remedies)


Super foods for diabetes control, and how to use these at home.

In recent years diabetes has been on the rise and more and more people are suffering with this disease. 

If you have too much glucose in your blood, then serious health problems can arise such as diabetes.

The good news is that by making some changes to your diet, you can help your body to control diabetes, and prevent blood sugar spikes.

In today's video we will share with you the best super foods for diabetes control, as well as some natural remedies that you can use at home.

Super Foods for Diabetes Control

1. Avocados
These contain heart-healthy fats which help to prevent and control diabetes, whilst also lowering the risk of heart disease.  Eating these in leafy green salads helps to control your blood sugar and keep you full.
2. Asparagus
This wonderful vegetable contains an antioxidant called glutathione as well as some wonderful nutrients. These work together to balance out your bodies systems, especially in controlling insulin.
3. Kale
One of the most nutrient dense leafy greens on the planet, kale provides your body with maximum nutrition. We recommend eating this every single day to help your body to heal insulin resistance and control diabetes. 
4. Salmon
An excellent source of essential fatty acids, salmon helps with diabetes as it provides your body with fat soluble nutrients for fuel. Cutting out carbohydrates and eating natural sources of fat will help the condition dramatically.
5. Cinnamon
This is a spice made from the bark of a particular tree. Ceylon cinnamon can be used as a flavouring on delicious meals and has a positive effect on blood glucose levels. Studies have shown this to reduce blood sugar levels over time.
6. Garlic
Garlic contains healthy compounds which fight diseases throughout the body. These fight infections and help your body to naturally heal itself from damage caused by high blood sugar levels and insulin resistance. 
7. Okra
This vegetable is high in fibre which helps your digestion process to balance blood sugar. It is important to increase your intake of green vegetables such as this to not only boost nutrition but also help manage natural sugars from foods such as fruit. 
8. Green Peppers
These fruits are low in sugar but contain lycopene which has been scientifically shown to protect the body against type 2 diabetes. They also contain fibre which increases healthy digestion.
9. Tomatoes
These also contain lycopene and are excellent for those with type 2 diabetes as they lower the risk of cardiovascular diseases and reduce blood pressure.
10. Grass Fed Beef
75 Percent of diabetes patients suffer with a deficiency in B vitamins. Grass fed beef is an excellent source of these vitamins and will provide fat soluble nutrients that the body needs.

Natural Remedy's to Control Diabetes

11. Mango Leaf Water
Soak 15 mango leaves in water and refrigerate overnight for at least 12 hours. Discard the leaves and drink the cold tea throughout the day.  Alternatively purchase mango leaf powder and add to warm water. This remedy helps to control blood sugar levels, strengthen the veins and reduce hypertension. The leaves also contain enzymes, vitamins, minerals and antioxidants which boost your overall health. 
12. Cinnamon Tea
Use Ceylon cinnamon bark for this remedy, not the regular cassia cinnamon found in supermarkets. Boil some water for 5 minutes before adding the cinnamon bark. Boil for another 5 minutes before straining and pouring into a cup. This is a perfect morning drink for diabetes, as it helps to reduce cravings for carbohydrates, and has an anti-inflammatory effect on the body. 
13. Neem Leaf Chew
Neem leaves contain anti-hyperglycaemic properties and a host of healthy compounds which improve the overall health of the body. They also act as a blood purifier, and lower blood sugars. You can chew these leaves to extract the nutrients and then spit them out.
14. Curry Leaves
Cooking with curry leaves adds beneficial qualities to your food. These herbal leaves help activate beta cells in the pancreas which boosts healthy insulin production. They also help your body to process carbohydrates.
15. Aloe Vera Water
A small amount of freshly squeezed Aloe Vera gel can be added to water. It has been show to help those with pre-diabetic symptoms and controls blood sugar levels for those with diabetes. This wonderful super food can be used to treat a great range of bodily diseases. 

Carbohydrates Fuel Diabetes

One of the most important principles to understand is that carbohydrates are not needed in a healthy diet.

Only small amounts found in raw vegetables are required. A diabetic diet should consist of healthy fats, vegetables and protein in order to control the blood sugar and boost nutrition.

The problem is that carbohydrates and sugars are hidden in many foods that we purchase as additives. This being said, we will share with you what to look for when cutting out unhealthy sugars and carbs.

Foods To Avoid for Diabetes

16. Wheat Flour
Foods which contain white flour such as pancakes, biscuits, waffles, cookies, bread and pastries should be avoided as these spike blood sugar levels dramatically.
17. Fruit Flavoured Yoghurt
The hidden sugars within flavoured yoghurt are sure to spike your blood sugar and cause problems for your condition. 
18. Fruit Juice
Fruit juices made from concentrate contain extremely high amounts of glucose which spikes insulin dramatically. Avoid these at all costs, and switch to water infused with dark berries for flavour.
19. Honey
Honey has benefits for some conditions, however it is high on the glycaemic index and should be avoided when you have diabetes. 
20. Dried Fruit
These are often promoted as a health food product, however the concentrated sugar and lack of balanced nutrients that is found in whole fruits make's these very bad for diabetes

Final Notes

We recommend increasing your fat intake from natural sources, such as extra virgin coconut oil, extra virgin olive oil and butter. Avoid margarine and vegetable oils as these have a negative effect.

Increase the amount of leafy greens and salad as much as possible. Eat uncooked salad leaves with every single meal as the vitamins and minerals within will help to control diabetes. 

To learn more about diabetes and natural remedies, please see our other videos.

Bay Leaves: for Diabetes


The benefits of using bay leaves for diabetes.

1. Diabetes is a growing problem, as the modern life style is high in carbohydrates and junk food.

The good news is that there are a range of natural medicines which can be used to control diabetes by fixing your body’s insulin response.

2. Bay leaves have been used as a natural medicine for thousands of years by many cultures. They come from the bay laurel, an evergreen tree native to the Mediterranean.

You can purchase these all over the world in dried form, as they are a common ingredient to flavour delicious meals.

3. These leaves contain some excellent nutrients and antioxidants which work to reduce insulin resistance and regulate blood glucose levels.

4. In order to begin treating diabetes naturally at home, it is important to cut out unhealthy junk food and excessive carbohydrates from your diet.

Begin by eating a diet filled with leafy greens, fresh vegetables and healthy sources of fat and protein.

5. To make a special bay leaf tea, add 3-5 bay leaves to 1 litre of boiling water in a pan. Reduce the heat and simmer for 15 minutes.  This can be drank hot, or allowed to cool to drink later. Be sure to remove the old leaves.

Drink 250ml litres of this drink 1 hour before meals. Perform this treatment with every meal for three days.

6. This natural remedy will begin to reduce insulin resistance in the body, and help your body to take in more nutrition from the foods you eat.

This effectively reduces the effects of diabetes and helps you to control your blood glucose level.

7. This drink also lowers overall cholesterol by reducing inflammation in the arteries and veins. This cleansing drink can help to protect your body from heart diseases and strokes.

8. There are other powerful drinks for diabetes that can be seen in our other videos. We recommend mango leaves, bitter melon and ginger. 

9. Remember, the main element in controlling diabetes in eating more wholesome foods filled with nutrition, and avoiding empty calories in foods such as bread, pasta, cereal, crisps, crackers chips, chocolate bars etc…

10. To learn more about herbs and natural remedies, please see our other videos. 

Jasmine Flower: Benefits and Uses


The health benefits and uses of Jasmine Flower. 

1. Jasmine has been grown for thousands of years in China, Japan, Indonesia and Southeast Asia for its wonderful flowers.

These have a unique aroma and have some excellent healing properties for the human body.

2. The flowers are most commonly used to make a herbal tea which is used to treat various health problems.

3. It is also used to make jasmine essential oil for use in aromatherapy as it smells wonderful.  For this reason, it has been labelled "The King of Flowers".

4. Jasmine Tea can be drank regularly to protect those who have a family history of heart problems. The catechins found within the tea prevent oxidation of cholesterol in the arteries. This lowers your risk of heart attacks, and strokes as it protects the veins and arteries from inflammation.

5. The antioxidants and nutrients within this wonderful flower work as a natural pain killer, especially when drank as a herbal tea. This works on headaches, aching joints and general mild pain in the body.

6. The tea or oil form of jasmine can be applied to the skin to treat sunburns and rashes due to its antiseptic quality.

7. Like many other herbal teas, it has a calming effect on the central nervous system and works to reduce irritability and stress. 

8. The compounds which create it's wonderful smell have aphrodisiac properties and have been used to increase sex drive and ambience. Jasmine oil is often placed in an oil burner to bring this into effect, as well as drinking jasmine tea.

9. The flowers are sometimes pressed to simply release the juice inside. This can be applied topically to the skin to treat some of the problems listed earlier.  

Jasmine juice also works to heal corns on the feet when applied regularly.

10. It has rejuvenating properties when blended into massage oils and slowly rubbed into the back, neck and arms.

11. We recommend using jasmine oil to create a relaxing environment along with other essential oils. 

It is important to rest the mind and body in a calm environment at least once per week to allow for proper healing. 

Use candles, gentle music, oil burners and jasmine tea to craft this experience.

12. The plants themselves are often used for landscaping and decorating outside villas. They historically have been used in royal palaces as the blooms are very ornamental. 
  
13. Jasmine tea is often mixed with green tea to create an extremely powerful antioxidant rich drink which promotes healing and calmness of mind and body.

14. The scent of the flower is often used in many cosmetic products as it has a gentle smell. It is also used in many washing detergents, shampoos, conditioners and perfumes around the world.

15. Many people believe that jasmine tea works to reduce illness due to the nutrients that it contains. This may be attributed to its common blending with green or Matcha tea.

To learn more about healthy flowers, herbs and natural remedies, please see our other videos.



Castor Oil: for Beard Growth


The Benefits of Castor Oil for Beard Growth.

1. Nowadays having a strong and healthy beard has become a popular trend.  Many men struggle with this, as their hair seems to grow slowly and thinly.

2. The good news is that Castor Oil has been used by the Ancient Egyptians, Greeks and Indians as a natural medicine and to boost hair growth.

3. We recommend using Jamaican Black Castor Oil for beard growth. This can be purchased online and in most health food stores around the world.

Alternatively you can purchase a 100 percent cold pressed castor oil which has a paler colour. Look for a variety that is hexane free for the best effects. 

4. Castor oil is extremely high in Vitamin E and Ricinoleic Acid with Omega 3,6,9 present. These make the oil anti-bacterial, anti-fungal, anti-parasitic and anti-inflammatory. 

This helps to clear our any invaders from the skin which make be preventing hair growth.

5. How to Use Castor Oil for Beard Growth
Clean the face and beard area using lukewarm water and  a mild soap or cleanser. This is an important step to remove dead skin cells and dirt from the skin. 

Pat the hair and skin gently with a towel to dry. Take A few drops of castor oil and gently massage into the beard area in an upward motion.

Do this for 3 to 5 minutes to stimulate the hair follicles ensuring that the roots of the follicles are well coated.

Try to be gentle with your movements, as you do not wish to rip out the hair. Ensure that the oil reaches the bottom of the hair follicles for maximum absorption.

Leave this to soak into the skin overnight. You may wish to cover your pillow with an old pillowcase or towel, as the oil can leave a stain.

Wash the hair and skin using a mild shampoo in the morning, and repeat this every night for the best results.

6. The castor oil will strengthen existing hair follicles and prevent them from getting damaged. 
  
The beard will become shinier, thicker and healthier over time. The oil also works to nourish the skin and promote strong hair growth from the root due to the nutrients within.

7. Castor oil is not the only beneficial oil that can be used for beard growth. It can be mixed with other essential oils to further benefit the skin and hair. 

You can make your own blends of castor oil by mixing it with other products such as peppermint oil, jojoba oil, olive oil, coconut oil, almond oil or black seed oil. 

Please see our other videos to learn more about these natural remedies.