{"id":11586,"date":"2018-08-24T11:19:47","date_gmt":"2018-08-24T09:19:47","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/"},"modified":"2018-08-24T11:19:47","modified_gmt":"2018-08-24T09:19:47","slug":"deploying-sql-server-on-openshift","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/","title":{"rendered":"Deploying SQL Server on MiniShift \/ RedHat OpenShift"},"content":{"rendered":"<p>Currently we begin to see customer adopting containerization for SQL Server databases (mainly driven by CI\/CD and DevOps trends). A lot of them are using <a href=\"https:\/\/www.openshift.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">RedHat OpenShift<\/a> as container management platform. From my side, I didn\u2019t want to setup a complete OpenShift infrastructure on my lab to test only my SQL Server pod deployment on such infrastructure. I rather installed <a href=\"https:\/\/www.openshift.org\/minishift\/\" target=\"_blank\" rel=\"noopener noreferrer\">MiniShift<\/a> that comes with one OpenShift node cluster which perfectly meets my requirements.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-0-banner.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-27301\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-0-banner.jpg\" alt=\"blog 143 - 0 - banner\" width=\"434\" height=\"135\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>I\u2019ll be running MiniShift on my Windows 10 laptop and I will use Hyper-V as the hypervisor for Minishift. I used the following MiniShift configuration settings. Just remember that <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/linux\/quickstart-install-connect-docker?view=sql-server-2017\" target=\"_blank\" rel=\"noopener noreferrer\">SQL Server memory requirement<\/a> is 2GB so I had to increase the default setting value to 6GB to be more comfortable running my SQL Server pod. I also setup my MiniShift default folders location to another disk.<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; minishift config set vm-driver hyperv\n[dab@DBI-LT-DAB:#]&gt; minishift config set hyperv-virtual-switch Internet\n[dab@DBI-LT-DAB:#]&gt; minishift config set memory 6GB\n$env:MINISHIFT_HOME=\"T:\\minishift\\\"<\/pre>\n<p>&nbsp;<\/p>\n<p>Let\u2019s start MiniShift:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; minishift start\n-- Starting profile 'minishift'\n-- Check if deprecated options are used ... OK\n-- Checking if https:\/\/github.com is reachable ... OK\n-- Checking if requested OpenShift version 'v3.9.0' is valid ... OK\n-- Checking if requested OpenShift version 'v3.9.0' is supported ... OK\n-- Checking if requested hypervisor 'hyperv' is supported on this platform ... OK\n-- Checking if Hyper-V driver is installed ... OK\n-- Checking if Hyper-V driver is configured to use a Virtual Switch ...\n   'Internet' ... OK\n-- Checking if user is a member of the Hyper-V Administrators group ... OK\n-- Checking the ISO URL ... OK\n-- Checking if provided oc flags are supported ... OK\n-- Starting the OpenShift cluster using 'hyperv' hypervisor ...\n-- Starting Minishift VM ................................................ OK\n-- Checking for IP address ... OK\n-- Checking for nameservers ... OK\n-- Checking if external host is reachable from the Minishift VM ...\n   Pinging 8.8.8.8 ... OK\n-- Checking HTTP connectivity from the VM ...\n   Retrieving http:\/\/minishift.io\/index.html ... OK\n-- Checking if persistent storage volume is mounted ... OK\n-- Checking available disk space ... 10% used OK\n-- OpenShift cluster will be configured with ...\n   Version: v3.9.0\n-- Copying oc binary from the OpenShift container image to VM ... OK\n-- Starting OpenShift cluster ...........\nDeleted existing OpenShift container\nUsing nsenter mounter for OpenShift volumes\nUsing public hostname IP 192.168.0.17 as the host IP\nUsing 192.168.0.17 as the server IP\nStarting OpenShift using openshift\/origin:v3.9.0 ...\nOpenShift server started.\n\nThe server is accessible via web console at:\n    https:\/\/192.168.0.17:8443\n\n\u2026<\/pre>\n<p>&nbsp;<\/p>\n<p>I also needed to configure docker and oc environment to get access on them from my PowerShell console.<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">&amp; minishift docker-env | Invoke-Expression\n&amp; minishift oc-env | Invoke-Expression<\/pre>\n<p>&nbsp;<\/p>\n<p>Configuration done. Let\u2019s start creating my first project then:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc new-project mssqlserver --description=\"mssqlserver deployment on Minishift\" --display-name=\"mssqlserver project\"\nNow using project \"mssqlserver\" on server \"https:\/\/192.168.0.17:8443\".<\/pre>\n<p>&nbsp;<\/p>\n<p>Let\u2019s get a list of existing projects:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc projects\nYou have access to the following projects and can switch between them with 'oc project &lt;projectname&gt;':\n\n  * mssqlserver - mssqlserver project\n    myproject - My Project\n\nUsing project \"mssqlserver\" on server \"https:\/\/192.168.0.17:8443\".<\/pre>\n<p>&nbsp;<\/p>\n<p>I will need to use an OpenShift private registry for my tests:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; minishift openshift registry\n172.30.1.1:5000<\/pre>\n<p>&nbsp;<\/p>\n<p>My OpenShift registry contains the following images by default:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; docker images\nREPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE\nopenshift\/origin-web-console       v3.9.0              aa12a2fc57f7        8 weeks ago         495MB\nopenshift\/origin-docker-registry   v3.9.0              8e6f7a854d66        8 weeks ago         465MB\nopenshift\/origin-haproxy-router    v3.9.0              448cc9658480        8 weeks ago         1.28GB\nopenshift\/origin-deployer          v3.9.0              39ee47797d2e        8 weeks ago         1.26GB\nopenshift\/origin                   v3.9.0              4ba9c8c8f42a        8 weeks ago         1.26GB\nopenshift\/origin-pod               v3.9.0              6e08365fbba9        8 weeks ago         223MB<\/pre>\n<p>&nbsp;<\/p>\n<p>For my tests, I picked up my custom dbi services image for SQL Server used for our DMK maintenance tool. Next steps consisted in building, tagging and uploading the corresponding image to my OpenShift integrated registry. Image tagging was done with the [registry_ip]:[port]\/[project]\/[image]\/[tag] pattern:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; docker tag dbi\/dbi_linux_sql2017:2017-CU4 172.30.1.1:5000\/mssqlserver\/dbi_linux_sql2017:2017-CU4\n[dab@DBI-LT-DAB:#]&gt; docker images\nREPOSITORY                                TAG                 IMAGE ID            CREATED             SIZE\n172.30.1.1:5000\/mssqlserver\/dbi_linux_sql2017   2017-CU4            d37ecabe87e8        22 minutes ago      1.42GB\ndbi\/dbi_linux_sql2017                     2017-CU4            d37ecabe87e8        22 minutes ago      1.42GB\n\n[dab@DBI-LT-DAB:#]&gt; docker push 172.30.1.1:5000\/mssqlserver\/dbi_linux_sql2017:2017-CU4\nThe push refers to a repository [172.30.1.1:5000\/mssqlserver\/dbi_linux_sql2017]\n2e3c7826613e: Pushed\n66ccaff0cef8: Pushed\n\u2026<\/pre>\n<p>&nbsp;<\/p>\n<p>My custom image is now available as image stream on OpenShift.<\/p>\n<p>Go ahead and let\u2019s try first to deploy my SQL Server pod from the mssqlserver project through the web console. The task is easy. You just have to choose deployment from an image and search then the corresponding image available as imagestream in your OpenShift integrated registry. In my case deployment was ok after configuring some environment variable values.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-1-mssql-pod-e1535108228515.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-27293\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-1-mssql-pod-e1535108228515.jpg\" alt=\"blog 143 - 1 - mssql pod\" width=\"800\" height=\"288\" \/><br \/>\n<\/a><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-27292\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg\" alt=\"blog 143 - 3 - mssql deployment variables\" width=\"800\" height=\"440\" \/><\/a><\/p>\n<p>From the web console you have access to pod logs. In my case, it corresponds to the SQL Server error log during the startup phase. My custom image includes creating a custom dbi_tools database as well as installing tSQLt framework.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-4-mssql-logs-e1535108281395.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-27294\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-4-mssql-logs-e1535108281395.jpg\" alt=\"blog 143 - 4 - mssql logs\" width=\"800\" height=\"388\" \/><\/a><\/p>\n<p>The final step consists in exposing the SQL Server pod to outside world (not by default):<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc get pod\nNAME                        READY     STATUS    RESTARTS   AGE\ndbi-linux-sql2017-1-9vvfw   1\/1       Running   0          1h\n\nC:\\Users\\dab\\Desktop\n[dab@DBI-LT-DAB:#]&gt; oc port-forward dbi-linux-sql2017-1-9vvfw 1433:1433<\/pre>\n<p>&nbsp;<\/p>\n<p>Let\u2019s try a connection from mssql-cli tool:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:$]&gt; mssql-cli -S 127.0.0.1 -U sa -P Password1\nVersion: 0.15.0\nMail: sqlcli@microsoft.com\nHome: http:\/\/github.com\/dbcli\/mssql-cli\nmaster&gt; select *\n....... from sys.dm_os_host_info;\n+-----------------+---------------------+----------------+---------------------------+------------+-----------------------+\n| host_platform   | host_distribution   | host_release   | host_service_pack_level   | host_sku   | os_language_version   |\n|-----------------+---------------------+----------------+---------------------------+------------+-----------------------|\n| Linux           | Ubuntu              | 16.04          |                           | NULL       | 0                     |\n+-----------------+---------------------+----------------+---------------------------+------------+-----------------------+\n(1 row affected)\nTime: 0.405s\nmaster&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>Done!<\/p>\n<p>This is my first deployment but we can do better here. Indeed, in my previous scenario, I didn\u2019t setup persistent volume to host my database files or I didn\u2019t use OpenShift secrets to protect my credential information. Let\u2019 do it!<\/p>\n<p>Let\u2019s create first a persistent volume. Developer user doesn\u2019t have permissions to manage volume on the cluster so let\u2019s switch to the system user:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc login -u system:admin\nLogged into \"https:\/\/192.168.0.17:8443\" as \"system:admin\" using existing credentials.<\/pre>\n<p>&nbsp;<\/p>\n<p>OpenShift runs on the top of K8s which is object-oriented. Objects can be deployed from deployment files as well and this is definitely my favorite path currently for many reasons. I configured both PersistentVolume and PersistentVolumeClaim objects in a deployment file as follows. Note the hostPath value corresponds to a local path in the MiniShift cluster I setup in a previous step.<\/p>\n<pre class=\"brush: xml; gutter: true; first-line: 1\">kind: PersistentVolume\napiVersion: v1\nmetadata:\n  name: pv-data-sql\nspec:\n  capacity:\n    storage: 5Gi\n  accessModes:\n    - ReadWriteOnce\n  storageClassName: slow\n  hostPath:\n    path: \/mnt\/sda1\/var\/lib\/minishift\/openshift.local.pv\/pv0069\n---\nkind: PersistentVolumeClaim\napiVersion: v1\nmetadata:\n  name: pv-claim-data-sql\nspec:\n  accessModes:\n    - ReadWriteOnce\n  resources:\n    requests:\n      storage: 5Gi\n  storageClassName: slow\nselector:\n  name: pv-data-sql<\/pre>\n<p>&nbsp;<\/p>\n<p>Let\u2019s deploy both my persistent volume and persistent volume claim \u2026<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc create -f .\\docker_openshift_storage.yaml\npersistentvolume \"pv-data-sql\" created\npersistentvolumeclaim \"pv-claim-data-sql\" created<\/pre>\n<p>&nbsp;<\/p>\n<p>\u2026 and get status of my persistent volume deployment<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc get pvc\nNAME                STATUS    VOLUME        CAPACITY   ACCESS MODES   STORAGECLASS   AGE\npv-claim-data-sql   Bound     pv-data-sql   5Gi        RWO            hostpath       1m\n[dab@DBI-LT-DAB:#]&gt; oc get pv\nNAME          CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                           STORAGECLASS   REASON    AGE\npv-data-sql   5Gi        RWO            Retain           Bound       mssqlserver\/pv-claim-data-sql   hostpath                 1m\n\u2026<\/pre>\n<p>&nbsp;<\/p>\n<p>&#8220;Bound&#8221; status indicates that everything seems to be ok.<\/p>\n<p>Let\u2019s continue and let\u2019s add an OpenShift secret from my deployment file:<\/p>\n<pre class=\"brush: xml; gutter: true; first-line: 1\">apiVersion: v1\nkind: Secret\nmetadata:\n  name: mssql-env\nstringData:\n  MSSQL_SA_PASSWORD: Password1<\/pre>\n<p>&#8230;<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc create -f .\\docker_openshift_mssql_secret.yaml\nsecret \"mssql-env\" created\nC:\\Users\\dab\\Desktop\n[dab@DBI-LT-DAB:#]&gt; oc get secret\nNAME                       TYPE                                  DATA      AGE\n\u2026\nmssql-env                  Opaque                                1         1h<\/pre>\n<p>&nbsp;<\/p>\n<p>At this step, you have different ways to deploy a pod so I finally use a deployment configuration file as follows:<\/p>\n<pre class=\"brush: xml; gutter: true; first-line: 1\">apiVersion: apps.openshift.io\/v1\nkind: DeploymentConfig\nmetadata:\n  labels:\n    app: mssql\n  name: dbi-linux-sql2017\n  namespace: mssqlserver\nspec:\n  replicas: 1\n  selector:\n    app: mssql\n    deploymentconfig: dbi-linux-sql2017\n  strategy:\n    type: Rolling\n  template:\n    metadata:\n      labels:\n        app: mssql\n        deploymentconfig: dbi-linux-sql2017\n    spec:\n      containers:\n        - env:\n            - name: ACCEPT_EULA\n              value: 'Y'\n            - name: DMK\n              value: 'Y'\n            - name: MSSQL_SA_PASSWORD\n              valueFrom:\n                secretKeyRef:\n                  key: MSSQL_SA_PASSWORD\n                  name: mssql-env\n          envFrom:\n            - secretRef:\n                name: mssql-env\n          image: \n            172.30.1.1:5000\/mssqlserver\/dbi_linux_sql2017:2017-CU4\n          imagePullPolicy: Always\n          name: dbi-linux-sql2017\n          ports:\n            - containerPort: 1433\n              protocol: TCP\n          volumeMounts:\n            - mountPath: \/var\/opt\/mssql\/\n              name: volume-x1d5y\n      dnsPolicy: ClusterFirst\n      restartPolicy: Always\n      volumes:\n        - name: volume-x1d5y\n          persistentVolumeClaim:\n            claimName: pv-claim-data-sql\n  triggers:\n    - type: ConfigChange\n    - imageChangeParams:\n        automatic: true\n        containerNames:\n          - dbi-linux-sql2017\n        from:\n          kind: ImageStreamTag\n          name: 'dbi_linux_sql2017:2017-CU4'\n          namespace: mssqlserver\n      type: ImageChange<\/pre>\n<p>&nbsp;<\/p>\n<p>\u2026 To deploy my SQL Server pod:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc create -f .\\deployment-config-mssql.yml\ndeploymentconfig \"dbi-linux-sql2017\" created<\/pre>\n<p>&nbsp;<\/p>\n<p>Once again, I exposed the corresponding service port to connect from my laptop and connection to my SQL Server pod was successful again. Note that the pod is different from the first time. Updating my configuration led K8s to spin-up another container in this case.<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; oc get pod\nNAME                        READY     STATUS    RESTARTS   AGE\ndbi-linux-sql2017-1-9ddfbx   1\/1       Running   0          1h\n\nC:\\Users\\dab\\Desktop\n[dab@DBI-LT-DAB:#]&gt; oc port-forward dbi-linux-sql2017-9ddfbx 1433:1433\nForwarding from 127.0.0.1:1433 -&gt; 1433<\/pre>\n<p>&nbsp;<\/p>\n<p>Finally let\u2019s take a look at the MiniShift cluster storage layer to get a picture of my SQL Server database files including data, log and secrets under \/var\/opt\/mssql:<\/p>\n<pre class=\"brush: shell; gutter: true; first-line: 1\">[dab@DBI-LT-DAB:#]&gt; minishift ssh\n\n[root@minishift ~]# ll \/mnt\/sda1\/var\/lib\/minishift\/openshift.local.pv\/pv0069\/\ntotal 0\ndrwxr-xr-x. 2 root root 202 Aug 23 15:07 data\ndrwxr-xr-x. 2 root root 232 Aug 23 15:18 log\ndrwxr-xr-x. 2 root root  25 Aug 23 15:06 secrets<\/pre>\n<p>&nbsp;<\/p>\n<p>I was quick on some topics in this write-up that deserves probably to dig further into details and there are other ones to investigate. I will get other opportunities to share my thoughts on it in a context of SQL Server database scenarios. Stay tuned!<\/p>\n<p><span style=\"float: none;background-color: #ffffff;color: #333333;cursor: text;font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size: 16px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;text-align: left;text-decoration: none;text-indent: 0px;text-transform: none\">By David Barbarin<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Currently we begin to see customer adopting containerization for SQL Server databases (mainly driven by CI\/CD and DevOps trends). A lot of them are using RedHat OpenShift as container management platform. From my side, I didn\u2019t want to setup a complete OpenShift infrastructure on my lab to test only my SQL Server pod deployment on [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":11589,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[601,1365,89,73,1344,1324,51],"type_dbi":[],"class_list":["post-11586","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-docker","tag-k8s","tag-kubernetes","tag-linux","tag-openshift","tag-redhat","tag-sql-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Deploying SQL Server on OpenShift<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploying SQL Server on MiniShift \/ RedHat OpenShift\" \/>\n<meta property=\"og:description\" content=\"Currently we begin to see customer adopting containerization for SQL Server databases (mainly driven by CI\/CD and DevOps trends). A lot of them are using RedHat OpenShift as container management platform. From my side, I didn\u2019t want to setup a complete OpenShift infrastructure on my lab to test only my SQL Server pod deployment on [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-24T09:19:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Microsoft Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"Deploying SQL Server on MiniShift \/ RedHat OpenShift\",\"datePublished\":\"2018-08-24T09:19:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/\"},\"wordCount\":742,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg\",\"keywords\":[\"Docker\",\"k8s\",\"kubernetes\",\"Linux\",\"OpenShift\",\"redhat\",\"SQL Server\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/\",\"name\":\"Deploying SQL Server on OpenShift\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg\",\"datePublished\":\"2018-08-24T09:19:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg\",\"width\":800,\"height\":440},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying SQL Server on MiniShift \/ RedHat OpenShift\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\",\"name\":\"Microsoft Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"caption\":\"Microsoft Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Deploying SQL Server on OpenShift","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/","og_locale":"en_US","og_type":"article","og_title":"Deploying SQL Server on MiniShift \/ RedHat OpenShift","og_description":"Currently we begin to see customer adopting containerization for SQL Server databases (mainly driven by CI\/CD and DevOps trends). A lot of them are using RedHat OpenShift as container management platform. From my side, I didn\u2019t want to setup a complete OpenShift infrastructure on my lab to test only my SQL Server pod deployment on [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/","og_site_name":"dbi Blog","article_published_time":"2018-08-24T09:19:47+00:00","og_image":[{"width":800,"height":440,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"Deploying SQL Server on MiniShift \/ RedHat OpenShift","datePublished":"2018-08-24T09:19:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/"},"wordCount":742,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg","keywords":["Docker","k8s","kubernetes","Linux","OpenShift","redhat","SQL Server"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/","url":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/","name":"Deploying SQL Server on OpenShift","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg","datePublished":"2018-08-24T09:19:47+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-143-3-mssql-deployment-variables-e1535108179786.jpg","width":800,"height":440},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/deploying-sql-server-on-openshift\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Deploying SQL Server on MiniShift \/ RedHat OpenShift"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4","name":"Microsoft Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","caption":"Microsoft Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11586"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11589"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11586"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}