Announcing Azure Service Operator for Kubernetes v2

Published Nov 02 2021 08:00 AM 1,347 Views
Microsoft

Today, we’re announcing the release of Azure Service Operator v2.  Azure Service Operator defines Azure resources as Kubernetes objects, giving you a standardized approach for your Kubernetes native resource deployments, pods, and your Azure resources using YAML as the common language. Azure resources can now be provisioned through the same declarative model as everything else in your Kubernetes environment, reducing onboarding time and increasing developer velocity.

 

Many of our customers are building self-service deployment platforms using Azure Service Operator. Instead of IT teams needing to interface with various platforms to provision Azure infrastructure resources, they define resources in Kubernetes YAML, have these resources provisioned from within their Kubernetes environments using ASO, and easily connect resources to their applications. This reduces Azure-specific overhead and leverages Kubernetes knowledge your teams already have.

 

In the past year, we’ve rebuilt Azure Service Operator for higher reliability, easier maintenance, and included the features you need to run ASO at scale. We’ve developed a CRD generator that leverages the Azure OpenAPI schemas of our Azure services to easily create CRDs that cover all ARM-level operations for supported resources. Not only does this let us rapidly add support for a larger set of Azure services, it also standardizes Azure Service Operator across all of these resources, making it easier for new Azure customers to get started. To learn more, check out the Azure Service Operator v2 here.

 

Adobe is an early adopter of Azure Service Operator, and we’re privileged to have partnered with them to improve ASO. Colin Murphy, engineering manager of Document Cloud Operations at Adobe, says,

 

“The Azure Service Operator allows Adobe Document Cloud to provide a scalable developer experience. It allows us to provide sensible defaults without restricting developer options and retain control in a centralized manner without stifling creativity.

 

The Azure Service Operator has increased our velocity in creating new applications.  When everything a service needs can be expressed in a handful of Kubernetes API objects, onboarding and change management become much simpler.  

 

I would highly recommend the Azure Service Operator to any organization that needs to build a scalable developer experience."

 

In the demo below, we'll show how to leverage Azure Service Operator to create Azure PostgreSQL resources using simple YAML definitions. We'll also create a Kubernetes secret to connect the Flexible Server Database to our application. Here's a sneak peak of the YAML we'll be using:

 

# First, we'll create a namespace for the Kubernetes objects that represent these resources in Azure.
apiVersion: v1
kind: Namespace
metadata:
  name: asodemo
---
# Next, we'll create an Azure Resource Group for all of the PostgreSQL Flexible Server resources.
apiVersion: microsoft.resources.azure.com/v1alpha1api20200601
kind: ResourceGroup
metadata:
  name: asodemo-rg
  namespace: asodemo
spec:
  location: westus2
---
# Now, we'll define the Azure PostgreSQL Flexible Server.
apiVersion: microsoft.dbforpostgresql.azure.com/v1alpha1api20210601
kind: FlexibleServer
metadata:
  name: ${SERVER}
  namespace: asodemo
spec:
  location: westus2
  owner:
    name: asodemo-rg
  version: "13"
  sku:
    name: Standard_D4s_v3
    tier: GeneralPurpose
  administratorLogin: ${USERNAME}
  administratorLoginPassword: ${PASSWORD}
  storage:
    storageSizeGB: 128
---
# And the database belonging to the server.
apiVersion: microsoft.dbforpostgresql.azure.com/v1alpha1api20210601
kind: FlexibleServersDatabase
metadata:
  name: votedb
  namespace: asodemo
spec:
  owner:
    name: ${SERVER}
  charset: utf8
---
# We'll also add a firewall rule to allow our cluster to access the server.
apiVersion: microsoft.dbforpostgresql.azure.com/v1alpha1api20210601
kind: FlexibleServersFirewallRule
metadata:
  name: asodemo-allow-all
  namespace: asodemo
spec:
  owner:
    name: ${SERVER}
  # The following address range allows anybody to connect to this server.
  # This should only be used for demo purposes and not in production!
  # There are other ways to control server access which are not covered here, you can see more about it here:
  # https://docs.microsoft.com/azure/postgresql/flexible-server/concepts-security#network-security
  startIpAddress: 0.0.0.0
  endIpAddress: 255.255.255.255
---
# Finally, we'll create a Kubernetes secret to connect our application to the Azure PostgreSQL Flexible Server. 
apiVersion: v1
kind: Secret
metadata:
  name: postgres-secret
  namespace: asodemo
stringData:
  USERNAME: "$USERNAME"
  PASSWORD: "$PASSWORD"
  SERVER:   "$SERVER.postgres.database.azure.com"
  DATABASE: "votedb"
  PORT:     "5432"

 

Watch Azure Service Operator and these YAML definitions in action in the quick demo below. If you'd like to walk through this demo on your own, follow this tutorial here.

 

 

Learn more about Azure Service Operator.

Walk through tutorials.

 

%3CLINGO-SUB%20id%3D%22lingo-sub-2902685%22%20slang%3D%22en-US%22%3EAnnouncing%20Azure%20Service%20Operator%20for%20Kubernetes%20v2%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2902685%22%20slang%3D%22en-US%22%3E%3CP%3EToday%2C%20we%E2%80%99re%20announcing%20the%20release%20of%20Azure%20Service%20Operator%20v2.%20%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-service-operator%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3EAzure%20Service%20Operator%3C%2FA%3E%26nbsp%3Bdefine%3CSPAN%3Es%3C%2FSPAN%3E%20Azure%20resources%20as%20Kubernetes%20objects%2C%20giving%20you%20a%20standardized%20approach%20for%20your%20Kubernetes%20native%20resource%20deployments%2C%20pods%2C%20and%20your%20Azure%20resources%20using%20YAML%20as%20the%20common%20language.%20Azure%20resources%20can%20now%20be%20provisioned%20through%20the%20same%20declarative%20model%20as%20everything%20else%20in%20your%20Kubernetes%20environment%2C%20reducing%20onboarding%20time%20and%20increasing%20developer%20velocity.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EMany%20of%20our%20customers%20are%20building%20self-service%20deployment%20platforms%20using%20Azure%20Service%20Operator.%20Instead%20of%20IT%20teams%20needing%20to%20interface%20with%20various%20platforms%20to%20provision%20Azure%20infrastructure%20resources%2C%20they%20define%20resources%20in%20Kubernetes%20YAML%2C%20have%20these%20resources%20provisioned%20from%20within%20their%20Kubernetes%20environments%20using%20ASO%2C%20and%20easily%20connect%20resources%20to%20their%20applications.%20This%20reduces%20Azure-specific%20overhead%20and%20leverages%20Kubernetes%20knowledge%20your%20teams%20already%20have.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EIn%20the%20past%20year%2C%20we%E2%80%99ve%20rebuilt%20Azure%20Service%20Operator%20for%20higher%20reliability%2C%20easier%20maintenance%2C%20and%20included%20the%20features%20you%20need%20to%20run%20ASO%20at%20scale.%20We%E2%80%99ve%20developed%20a%20CRD%20generator%20that%20leverages%20the%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-rest-api-specs%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3EAzure%20OpenAPI%20schemas%26nbsp%3B%3C%2FA%3Eof%20our%20Azure%20services%20to%20easily%20create%20CRDs%20that%20cover%20all%20ARM-level%20operations%20for%20supported%20resources.%20Not%20only%20does%20this%20let%20us%20rapidly%20add%20support%20for%20a%20larger%20set%20of%20Azure%20services%2C%20it%20also%20standardizes%20Azure%20Service%20Operator%20across%20all%20of%20these%20resources%2C%20making%20it%20easier%20for%20new%20Azure%20customers%20to%20get%20started.%20To%20learn%20more%2C%20check%20out%20the%20Azure%20Service%20Operator%20v2%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-service-operator%2Fblob%2Fmain%2Fv2%2FREADME.md%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3Ehere%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EAdobe%20is%20an%20early%20adopter%20of%20Azure%20Service%20Operator%2C%20and%20we%E2%80%99re%20privileged%20to%20have%20partnered%20with%20them%20to%20improve%20ASO.%20Colin%20Murphy%2C%20engineering%20manager%20of%20Document%20Cloud%20Operations%20at%20Adobe%2C%20says%2C%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20class%3D%22lia-indent-padding-left-30px%22%3E%3CEM%3E%E2%80%9CThe%20Azure%20Service%20Operator%20allows%20Adobe%20Document%20Cloud%20to%20provide%20a%20scalable%20developer%20experience.%20It%20allows%20us%20to%20provide%20sensible%20defaults%20without%20restricting%20developer%20options%20and%20retain%20control%20in%20a%20centralized%20manner%20without%20stifling%20creativity.%3C%2FEM%3E%3C%2FP%3E%0A%3CP%20class%3D%22lia-indent-padding-left-30px%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20class%3D%22lia-indent-padding-left-30px%22%3E%3CEM%3EThe%20Azure%20Service%20Operator%20has%20increased%20our%20velocity%20in%20creating%20new%20applications.%20%26nbsp%3BWhen%20everything%20a%20service%20needs%20can%20be%20expressed%20in%20a%20handful%20of%20Kubernetes%20API%20objects%2C%20onboarding%20and%20change%20management%20become%20much%20simpler.%20%26nbsp%3B%3C%2FEM%3E%3C%2FP%3E%0A%3CP%20class%3D%22lia-indent-padding-left-30px%22%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%20class%3D%22lia-indent-padding-left-30px%22%3E%3CEM%3EI%20would%20highly%20recommend%20the%20Azure%20Service%20Operator%20to%20any%20organization%20that%20needs%20to%20build%20a%20scalable%20developer%20experience.%22%3C%2FEM%3E%3C%2FP%3E%0A%3CP%3E%3CSTRONG%3E%26nbsp%3B%3C%2FSTRONG%3E%3C%2FP%3E%0A%3CP%3EIn%20the%20demo%20below%2C%20we'll%20show%20how%20to%20leverage%20Azure%20Service%20Operator%20to%20create%20Azure%20PostgreSQL%20resources%20using%20simple%20YAML%20definitions.%20We'll%20also%20create%20a%20Kubernetes%20secret%20to%20connect%20the%20Flexible%20Server%20Database%20to%20our%20application.%20Here's%20a%20sneak%20peak%20of%20the%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure-Samples%2Fazure-service-operator-samples%2Fblob%2Fmaster%2Fazure-votes-postgresql%2Fmanifests%2Fpostgres-votes-demo.yaml%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3EYAML%3C%2FA%3E%20we'll%20be%20using%3A%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-yaml%22%3E%3CCODE%3E%23%20First%2C%20we'll%20create%20a%20namespace%20for%20the%20Kubernetes%20objects%20that%20represent%20these%20resources%20in%20Azure.%0AapiVersion%3A%20v1%0Akind%3A%20Namespace%0Ametadata%3A%0A%20%20name%3A%20asodemo%0A---%0A%23%20Next%2C%20we'll%20create%20an%20Azure%20Resource%20Group%20for%20all%20of%20the%20PostgreSQL%20Flexible%20Server%20resources.%0AapiVersion%3A%20microsoft.resources.azure.com%2Fv1alpha1api20200601%0Akind%3A%20ResourceGroup%0Ametadata%3A%0A%20%20name%3A%20asodemo-rg%0A%20%20namespace%3A%20asodemo%0Aspec%3A%0A%20%20location%3A%20westus2%0A---%0A%23%20Now%2C%20we'll%20define%20the%20Azure%20PostgreSQL%20Flexible%20Server.%0AapiVersion%3A%20microsoft.dbforpostgresql.azure.com%2Fv1alpha1api20210601%0Akind%3A%20FlexibleServer%0Ametadata%3A%0A%20%20name%3A%20%24%7BSERVER%7D%0A%20%20namespace%3A%20asodemo%0Aspec%3A%0A%20%20location%3A%20westus2%0A%20%20owner%3A%0A%20%20%20%20name%3A%20asodemo-rg%0A%20%20version%3A%20%2213%22%0A%20%20sku%3A%0A%20%20%20%20name%3A%20Standard_D4s_v3%0A%20%20%20%20tier%3A%20GeneralPurpose%0A%20%20administratorLogin%3A%20%24%7BUSERNAME%7D%0A%20%20administratorLoginPassword%3A%20%24%7BPASSWORD%7D%0A%20%20storage%3A%0A%20%20%20%20storageSizeGB%3A%20128%0A---%0A%23%20And%20the%20database%20belonging%20to%20the%20server.%0AapiVersion%3A%20microsoft.dbforpostgresql.azure.com%2Fv1alpha1api20210601%0Akind%3A%20FlexibleServersDatabase%0Ametadata%3A%0A%20%20name%3A%20votedb%0A%20%20namespace%3A%20asodemo%0Aspec%3A%0A%20%20owner%3A%0A%20%20%20%20name%3A%20%24%7BSERVER%7D%0A%20%20charset%3A%20utf8%0A---%0A%23%20We'll%20also%20add%20a%20firewall%20rule%20to%20allow%20our%20cluster%20to%20access%20the%20server.%0AapiVersion%3A%20microsoft.dbforpostgresql.azure.com%2Fv1alpha1api20210601%0Akind%3A%20FlexibleServersFirewallRule%0Ametadata%3A%0A%20%20name%3A%20asodemo-allow-all%0A%20%20namespace%3A%20asodemo%0Aspec%3A%0A%20%20owner%3A%0A%20%20%20%20name%3A%20%24%7BSERVER%7D%0A%20%20%23%20The%20following%20address%20range%20allows%20anybody%20to%20connect%20to%20this%20server.%0A%20%20%23%20This%20should%20only%20be%20used%20for%20demo%20purposes%20and%20not%20in%20production!%0A%20%20%23%20There%20are%20other%20ways%20to%20control%20server%20access%20which%20are%20not%20covered%20here%2C%20you%20can%20see%20more%20about%20it%20here%3A%0A%20%20%23%20https%3A%2F%2Fdocs.microsoft.com%2Fazure%2Fpostgresql%2Fflexible-server%2Fconcepts-security%23network-security%0A%20%20startIpAddress%3A%200.0.0.0%0A%20%20endIpAddress%3A%20255.255.255.255%0A---%0A%23%20Finally%2C%20we'll%20create%20a%20Kubernetes%20secret%20to%20connect%20our%20application%20to%20the%20Azure%20PostgreSQL%20Flexible%20Server.%20%0AapiVersion%3A%20v1%0Akind%3A%20Secret%0Ametadata%3A%0A%20%20name%3A%20postgres-secret%0A%20%20namespace%3A%20asodemo%0AstringData%3A%0A%20%20USERNAME%3A%20%22%24USERNAME%22%0A%20%20PASSWORD%3A%20%22%24PASSWORD%22%0A%20%20SERVER%3A%20%20%20%22%24SERVER.postgres.database.azure.com%22%0A%20%20DATABASE%3A%20%22votedb%22%0A%20%20PORT%3A%20%20%20%20%20%225432%22%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EWatch%20Azure%20Service%20Operator%20and%20these%20YAML%20definitions%20in%20action%20in%20the%20quick%20demo%20below.%20If%20you'd%20like%20to%20walk%20through%20this%20demo%20on%20your%20own%2C%20follow%20this%20tutorial%20%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure-Samples%2Fazure-service-operator-samples%2Ftree%2Fmaster%2Fazure-votes-postgresql%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3Ehere%3C%2FA%3E.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3C%2FP%3E%3CDIV%20class%3D%22video-embed-center%20video-embed%22%3E%3CIFRAME%20class%3D%22embedly-embed%22%20src%3D%22https%3A%2F%2Fcdn.embedly.com%2Fwidgets%2Fmedia.html%3Fsrc%3Dhttps%253A%252F%252Fwww.youtube.com%252Fembed%252FY20cEPOhQ2A%253Ffeature%253Doembed%26amp%3Bdisplay_name%3DYouTube%26amp%3Burl%3Dhttps%253A%252F%252Fwww.youtube.com%252Fwatch%253Fv%253DY20cEPOhQ2A%26amp%3Bimage%3Dhttps%253A%252F%252Fi.ytimg.com%252Fvi%252FY20cEPOhQ2A%252Fhqdefault.jpg%26amp%3Bkey%3Db0d40caa4f094c68be7c29880b16f56e%26amp%3Btype%3Dtext%252Fhtml%26amp%3Bschema%3Dyoutube%22%20width%3D%22600%22%20height%3D%22338%22%20scrolling%3D%22no%22%20title%3D%22YouTube%20embed%22%20frameborder%3D%220%22%20allow%3D%22autoplay%3B%20fullscreen%22%20allowfullscreen%3D%22true%22%3E%3C%2FIFRAME%3E%3C%2FDIV%3E%3CP%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22http%3A%2F%2Faka.ms%2Fazure-service-operator%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3ELearn%20more%20about%20Azure%20Service%20Operator.%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure-Samples%2Fazure-service-operator-samples%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3EWalk%20through%20tutorials.%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-2902685%22%20slang%3D%22en-US%22%3E%3CP%3EToday%2C%20we%E2%80%99re%20announcing%20the%20release%20of%20Azure%20Service%20Operator%20v2.%20%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAzure%2Fazure-service-operator%22%20target%3D%22_self%22%20rel%3D%22noopener%20noreferrer%22%3EAzure%20Service%20Operator%3C%2FA%3E%26nbsp%3Bdefine%3CSPAN%3Es%3C%2FSPAN%3E%20Azure%20resources%20as%20Kubernetes%20objects%2C%20giving%20you%20a%20standardized%20approach%20for%20your%20Kubernetes%20native%20resource%20deployments%2C%20pods%2C%20and%20your%20Azure%20resources.%20Azure%20resources%20can%20now%20be%20provisioned%20through%20the%20same%20declarative%20model%20as%20everything%20else%20in%20your%20Kubernetes%20environment%2C%20reducing%20onboarding%20time%20and%20increasing%20developer%20velocity.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2902685%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EMicrosoft%20Ignite%202021%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Co-Authors
Version history
Last update:
‎Nov 02 2021 07:17 AM
Updated by: