Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers. Service Fabric also addresses the significant challenges in developing and managing cloud native applications. It is also an orchestrator of services across a cluster of machines and it is continuing to invest heavily in container orchestration and management. In this blog post, we will check out some of newer features as they relate to container orchestration - Volume Mounting and Docker Compose support.
Containers are encapsulated, individually deployable components that run as isolated instances on the same kernel to take advantage of virtualization that an operating system provides. Thus, each application and its runtime, dependencies, and system libraries run inside a container with full, private access to the container's own isolated view of operating system constructs.
In the world of containers, volumes are a great way to persist data created and used by the docker containers. Let’s take a look at how to use volumes in Service Fabric.
Step 1 – Create a new Service Fabric Application using VS2017.
Step 2 – Use the Container template and provide the docker container image previously built. You can check out my earlier blog posts to learn about creating docker images/applications.
Once the project is created, Visual Studio will create the necessary manifest files ready for publishing. Before we publish let us configure the volumes in the ApplicationManifest.
Step 3 – Open the ApplicationManifest.xml and Add the Volume Policy as shown below under Policies inside ServiceManifestImport.
Step 4 - Now you are ready to publish the application and use the volumes.
You can also use volume drivers like Azure File Share with Service Fabric Volumes. You can read more on it here - https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-containers-volume-logging-drivers
Docker Compose Support
Docker uses the docker-compose.yml file for defining multi-container applications. To make it easy for customers familiar with Docker to orchestrate existing container applications on Azure Service Fabric, natively in the platform, Service Fabric can accept version 3 and later of
As a pre-requisite, we will use the container image we used earlier to create a docker-compose.yml file.
Step 1 – Create a docker-compose.yml file as shown below.
The above compose file when deployed is going to create a Service Fabric service called ‘customer’ using the image provided.
Step 2 – Connect to Service Fabric cluster in Azure using the following powershell script.
Connect-ServiceFabricCluster -ConnectionEndpoint '_YOURSFCLUSTER_:19000'
Step 3 – Execute the Service Fabric Docker Compose deployment command
New-ServiceFabricComposeDeployment -DeploymentName app -Compose 'docker-compose-servicefabric.yml' -RegistryUserName 'xyz' -RegistryPassword 'xyz'
Once the command is executed Service Fabric application will be created in Azure Service Fabric using the Docker-Compose feature. As you saw in this blog post, we can leverage newer features with Service Fabric for Container Orchestration. Happy Containerizing!!!