{"id":4910,"date":"2020-11-25T03:20:22","date_gmt":"2020-11-24T21:50:22","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=4910"},"modified":"2025-11-27T17:06:22","modified_gmt":"2025-11-27T11:36:22","slug":"buildpiper-a-saas-playground","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2020\/11\/25\/buildpiper-a-saas-playground\/","title":{"rendered":"BuildPiper &#8211; A SAAS Playground"},"content":{"rendered":"\r\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4961 size-full\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/buildpiper-a-saas-playground.jpg\" alt=\"Buildpiper - A SAAS Playground\" width=\"600\" height=\"545\" \/><\/p>\r\n<p class=\"has-text-align-justify\">As of late, I took a dive at setting up and connecting WordPress with the database using container services. I created a website but couldn&#8217;t figure out where and how to deploy it. I was looking for a way with less exertion, at least expense, and minimum time. At this point, I thought of a <!--more-->SAAS product by Opstree Solutions called BuildPiper. I&#8217;d been wanting to try it for some time now and this looked like a good opportunity. Going in, I thought I&#8217;d have to go through the usual chores of using a new product, tons of documentation, hit and trial, etc. before I could get the hang of it. I wasn&#8217;t expecting a functioning website until at least the end of the day. But as soon as I had signed up, the onboarding felt like a smooth stream. I was able to deploy my site in less than an hour.<\/p>\r\n\r\n\r\n\r\n<p><strong>BuildPiper<\/strong><\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\"><a href=\"https:\/\/www.buildpiper.io\/\" target=\"_blank\" rel=\"noopener\">BuildPiper<\/a> gives the adaptability to set up applications with or without the manifest. On the off chance that somebody would not like to use the manifest, BuildPiper, additionally, gives a choice to create it using GUI, which is as basic as topping off a structure. BuildPiper is a powerful container management platform that automates and comprehensively simplifies the application delivery process. It is a unified container application delivery platform, that enables the dockerized code to be deployed to production immediately with all the required observability, security, and compliance baked in.<\/p>\r\n\r\n\r\n\r\n<p><strong>My experience with BuildPiper SAAS playground!<\/strong><\/p>\r\n\r\n\r\n\r\n<p>For me, I used WordPress as my container service which connects with MySQL containers in my setup.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"750\" class=\"wp-image-4940\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/untitled-project-3.jpg?w=800\" alt=\"\" \/>\r\n<figcaption><strong>Architecture diagram<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>For this application, I am using two Dockerfiles which are used to configure two different pods:<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li>WordPress application<\/li>\r\n<li>MySQL Database<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">MySQL database is a private service and need not be exposed publicly. Using BuildPiper, we can restrict and expose any pod\/service inside our cluster. Therefore, I decided to create a private pod structure for the database and went on ahead to create and expose the WordPress pod structure publicly using the BuildPiper ingress feature.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">BuildPiper gives the flexibility to use environment variables like setting up build &amp; deploy environment variables. MySQL database contains some deploy environment variables like MySQL username, default root password, etc.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">For WordPress containers, I am using a few build environments like WordPress username, password, database name, and database URL which I injected through BuildPiper.<\/p>\r\n\r\n\r\n\r\n<p><strong>Required Steps to configure\/setup in Buildpiper Saas <\/strong><\/p>\r\n\r\n\r\n\r\n<p>First, we have to provide the service details for container service like<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li>service-name<\/li>\r\n<li>language supported by container service<\/li>\r\n<li>repository URL<\/li>\r\n<li>credentials detail<\/li>\r\n<li>build type\u00a0<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4929\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/1.jpg?w=1024\" alt=\"\" width=\"667\" height=\"329\" \/>\r\n<figcaption><strong>Service information for application<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Now, we have to provide an environment type for microservice as BuildPiper supports multiple environments.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4922\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/2.jpg?w=1024\" alt=\"\" width=\"645\" height=\"304\" \/>\r\n<figcaption><strong>Environment type for Application<\/strong><\/figcaption>\r\n<\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">For the first part, we have to provide basic information about cluster and repository like\u00a0<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li>the cluster, which is provided by BuildPiper in the playground<\/li>\r\n<li>the namespace associated with the linked account<\/li>\r\n<li>repository branch<\/li>\r\n<li>Dockerfile path for container application which is common for both services [ WordPress &amp; Database ] in my case<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4923\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/3.jpg?w=1024\" alt=\"\" width=\"647\" height=\"277\" \/>\r\n<figcaption><strong>Basic information about Application<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">The second part contains information about build variables and CI [ continuous integration ] information for service.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">For my application, I provided build variables which are used by WordPress:<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li>Database<\/li>\r\n<li>Database username<\/li>\r\n<li>Database password<\/li>\r\n<li>Hostname [ Get from database service URL value ]<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4930\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/4.jpg?w=1024\" alt=\"\" width=\"660\" height=\"237\" \/>\r\n<figcaption><strong>Build variables for Application<\/strong><\/figcaption>\r\n<\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">After setting up WordPress Build variables &amp; cluster information for both WordPress and database setups, we have to provide resource Quota like CPU, RAM &amp; replicas for different applications.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4924\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/5.jpg?w=1024\" alt=\"\" width=\"647\" height=\"307\" \/>\r\n<figcaption><strong>Resource quota for Application<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Now that we are done with that, we can provide access level information for our container application.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">In this case, we need public access to WordPress containers through ingress routing. For this, we have to provide some information like:\u00a0<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li>URL Name [ NAME.buildpiper.io ]<\/li>\r\n<li>Expose Path<\/li>\r\n<li>Service Port<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4925\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/6.jpg?w=1024\" alt=\"\" width=\"656\" height=\"325\" \/>\r\n<figcaption><strong>Access level information for Application<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">For database pods, we need private access from our application. For this, we will choose private as &#8216;Access Level&#8217; and provide the name\/URL for the database along with the port which is used as build variables for the WordPress application.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4927\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/7-1.jpg?w=1024\" alt=\"\" width=\"656\" height=\"318\" \/>\r\n<figcaption><strong>Access level information for database<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Next is an advance level configuration which is based on Scalability [ auto-scaling ], runtime\/deploy environment variables, vaults, liveness probe, and readiness probe.<\/p>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"184\" class=\"wp-image-4931\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/8.jpg?w=477\" alt=\"\" \/>\r\n<figcaption><strong>Advance level configuration options pop-up<\/strong><\/figcaption>\r\n<\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">We can either skip it or continue with the configuration to take advantage of advanced configuration options,<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">For our case, we only needed runtime\/deploy variables for our database<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li>MYSQL_ROOT_PASSWORD\u00a0<\/li>\r\n<li>MYSQL_DATABASE<\/li>\r\n<li>MYSQL_USER<\/li>\r\n<li>MYSQL_PASSWORD<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4932\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/9.jpg?w=1024\" alt=\"\" width=\"656\" height=\"322\" \/>\r\n<figcaption><strong>Deploy\/runtime Environment variables for MySQL<\/strong><\/figcaption>\r\n<\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\"><strong>Note<\/strong>: This is one time setup for each service &amp; deployment and doesn\u2019t take much time. Each service has its own interface where we can update\/modify it.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">After setting up both database &amp; WordPress application services using BuildPiper, we can click on a service overview to view all services configured.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"717\" height=\"412\" class=\"wp-image-4933\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/10.jpg?w=717\" alt=\"\" \/>\r\n<figcaption><strong>Service Overview<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Finally, we have to Build &amp; deploy to make sure everything is working fine.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">We will first Build &amp; deploy our database application as our WordPress application depends on the database.<\/p>\r\n\r\n\r\n\r\n<p>To build database [ same for WordPress application ],<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4934\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/11.jpg?w=1024\" alt=\"\" width=\"656\" height=\"332\" \/>\r\n<figcaption><strong>Service dashboard for database\u00a0<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">On pressing build, it will ask for the tag name [ optional ] and branch [ optional &amp; default branch that we already set-up while configuring service].<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4935\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/12.jpg?w=1024\" alt=\"\" width=\"656\" height=\"119\" \/>\r\n<figcaption><strong>Build options for database service<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">The build will create a docker image from Dockerfile that is present in the repository path,<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Once the build is complete, we can deploy the database pod from the built image. For this, we can click on the deploy icon and select tag as required.\u00a0<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4936\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/13.jpg?w=871\" alt=\"\" width=\"656\" height=\"227\" \/>\r\n<figcaption><strong>Deploy database service in Buildpiper k8s cluster<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">We can setup the WordPress application using the same set of steps.<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">Now that we are all done, we can use our public ingress URL [ NAME.buildpiper.io ] which we provided during setup to access the website.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4937\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/14.jpg?w=1024\" alt=\"\" width=\"656\" height=\"345\" \/>\r\n<figcaption><strong>WordPress site hosted on Buildpiper SaaS<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p class=\"has-text-align-justify\">In the service dashboard, we can also check multiple things like\u00a0<\/p>\r\n\r\n\r\n\r\n<ol>\r\n<li>Build &amp; deploy status<\/li>\r\n<li>Latest Artifact name while building<\/li>\r\n<li>Current deployment artifact<\/li>\r\n<li>Commit ID &amp; messages<\/li>\r\n<li>Build &amp; deploy date<\/li>\r\n<li>Build by &amp; deploy by\u00a0<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p>Cool, right? I wasn&#8217;t kidding when I said, &#8220;comprehensively simplifies the application delivery process.&#8221;<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4938\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2020\/11\/15.jpg?w=1024\" alt=\"\" width=\"656\" height=\"325\" \/>\r\n<figcaption><strong>Service dashboard overview\u00a0<\/strong><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\"><strong>Benefits of BuildPiper Saas<\/strong><\/h2>\r\n\r\n\r\n\r\n<ol>\r\n<li>BuildPiper gives multiple ways to configure application deployment:<br \/>Build manifest with UI<br \/>Upload manifest file<\/li>\r\n<li>CI\/CD pipeline for single\/multiple deployments<\/li>\r\n<li>Multiple language CI support<\/li>\r\n<li>Single click Build\/Deploy<\/li>\r\n<li>Buildpiper also maintains build &amp; deploy log history for each artifact<\/li>\r\n<li>Onboard a Dockerized service in minutes<\/li>\r\n<li>Setup &amp; Run hassle-free secured Pipelines<\/li>\r\n<li>Enable the most robust &amp; secure DevSecOps CI in a few clicks<\/li>\r\n<li>Single click service modification<\/li>\r\n<li>Easy interface to visualize the configuration<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media1.tenor.com\/images\/fe00e0d7b41edb4324b7a625f3806d89\/tenor.gif?itemid=15742213\" alt=\"Thats Gonna Be Really Useful Very Useful GIF - ThatsGonnaBeReallyUseful VeryUseful Helpful GIFs\" width=\"579\" height=\"300\" \/><\/figure>\r\n\r\n\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n\r\n<p>Know more about <a href=\"https:\/\/www.buildpiper.io\/\" target=\"_blank\" rel=\"noopener\">BuildPiper Saas<\/a> &amp; features<\/p>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<p>To set up the first containerized application on BuildPiper Saas, <a href=\"https:\/\/app.buildpiper.io\/\" target=\"_blank\" rel=\"noopener\">visit<\/a>:<\/p>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/tenor.com\/bedqP.gif\" target=\"_blank\" rel=\"noopener\">Gif Source<\/a><\/p>\r\n<p>Opstree is an End to End DevOps solution provider<\/p>\r\n<p>\r\n\r\n<\/p>\r\n<p><a href=\"https:\/\/www.opstree.com\/contact-us\" target=\"_blank\" rel=\"noreferrer noopener\">CONTACT US<\/a><\/p>\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>As of late, I took a dive at setting up and connecting WordPress with the database using container services. I created a website but couldn&#8217;t figure out where and how to deploy it. I was looking for a way with less exertion, at least expense, and minimum time. At this point, I thought of a<\/p>\n","protected":false},"author":192321000,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[708216545,28070474],"tags":[3370,768739312,69816,242358,768739305,32466874,768739309,57812,17927],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-1hc","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/4910"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/192321000"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=4910"}],"version-history":[{"count":27,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/4910\/revisions"}],"predecessor-version":[{"id":30083,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/4910\/revisions\/30083"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=4910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=4910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=4910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}