<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chris Harris</title>
    <description>The latest articles on DEV Community by Chris Harris (@charrismsft).</description>
    <link>https://dev.to/charrismsft</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F857113%2F40b6ef07-d0e9-4ded-85cb-b1bbcf3d36e4.jpeg</url>
      <title>DEV Community: Chris Harris</title>
      <link>https://dev.to/charrismsft</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/charrismsft"/>
    <language>en</language>
    <item>
      <title>Container Apps &amp; Metabase Saved Big Bucks</title>
      <dc:creator>Chris Harris</dc:creator>
      <pubDate>Thu, 10 Nov 2022 17:53:30 +0000</pubDate>
      <link>https://dev.to/azure/container-apps-metabase-saved-big-bucks-4a9h</link>
      <guid>https://dev.to/azure/container-apps-metabase-saved-big-bucks-4a9h</guid>
      <description>&lt;p&gt;I've got another post that I wrote on my Substack that I think is particularly relevant to small businesses with their data in the cloud. While my journey took place on Azure, the same approach can apply to any cloud provider.&lt;/p&gt;

&lt;p&gt;I cover my experience starting with Azure Kubernetes Services and ending up on Azure Container Apps and the $180 per month it saved me!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://affordabledata.substack.com/p/serverless-metabase-bi-saved-big"&gt;Substack: Serverless Metabase Saved Big Bucks&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>metabase</category>
      <category>data</category>
      <category>analytics</category>
    </item>
    <item>
      <title>PostgreSQL to DuckDB - There and Quack Again</title>
      <dc:creator>Chris Harris</dc:creator>
      <pubDate>Sun, 23 Oct 2022 14:12:14 +0000</pubDate>
      <link>https://dev.to/charrismsft/postgresql-to-duckdb-there-and-quack-again-4gl9</link>
      <guid>https://dev.to/charrismsft/postgresql-to-duckdb-there-and-quack-again-4gl9</guid>
      <description>&lt;p&gt;Edit - &lt;br&gt;
I'm using this platform to primarily talk about things related to my day job, but this particular post isn't as closely tied to it as the other posts I've made, so I moved it to a new substack:&lt;br&gt;
&lt;a href="https://affordabledata.substack.com/p/postgresql-to-duckdb"&gt;https://affordabledata.substack.com/p/postgresql-to-duckdb&lt;/a&gt;&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>duckdb</category>
      <category>dataengineering</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Make Better Decisions the Easy Way: Deploy Metabase with Azure Container Apps</title>
      <dc:creator>Chris Harris</dc:creator>
      <pubDate>Wed, 12 Oct 2022 17:18:33 +0000</pubDate>
      <link>https://dev.to/azure/make-better-decisions-the-easy-way-deploy-metabase-with-azure-container-apps-31d9</link>
      <guid>https://dev.to/azure/make-better-decisions-the-easy-way-deploy-metabase-with-azure-container-apps-31d9</guid>
      <description>&lt;p&gt;With a few simple steps, you can deploy &lt;a href="https://metabase.com" rel="noopener noreferrer"&gt;Metabase&lt;/a&gt; on Microsoft Azure using &lt;a href="https://azure.microsoft.com/en-us/services/container-apps" rel="noopener noreferrer"&gt;Azure Container Apps&lt;/a&gt;. This process works for any Docker container hosted on Docker Hub, not just Metabase, so you can try it with your containers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I work on improving the Developer Experience on Microsoft Azure and I love spending time in the data engineering and data analysis space. I recently have enjoyed working with Metabase, and deploying it on Azure makes it easy to create some amazing visualizations for my data that is already in the Azure cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsoziyvf2xsrihdvy9io.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsoziyvf2xsrihdvy9io.png" alt="Metabase Dashboard Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are several options for running container-based apps on Azure, but Azure Container Apps (ACA) is one of the easiest to get started with.&lt;/p&gt;

&lt;h2&gt;
  
  
  The set up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt; you will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli" rel="noopener noreferrer"&gt;Azure CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;An Azure subscription. If you don't already have one, you can &lt;a href="https://azure.microsoft.com/free" rel="noopener noreferrer"&gt;create one for free&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;Docker Desktop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy Metabase to Azure Container Apps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create the Container App and deploy the Metabase image&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;containerapp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;metabase-rg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;metabase&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--image&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;myname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;metabaseacr.azurecr.io/metabase&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--environment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;metabase-aca-env&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--target-port&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;3000&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--ingress&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'external'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--cpu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--memory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;4.0Gi&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Note: If prompted to install the containerapp extension, choose &lt;code&gt;Y&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You will see the steps as they are running, like &lt;code&gt;'Creating resource group 'your-resource-group-name'&lt;/code&gt; and &lt;code&gt;Creating Containerapp your-app-name...&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;When the command is complete you will see a line that starts with &lt;code&gt;Browse to your Container App at: http://metabase&lt;/code&gt;. You will use this URL to open your new Metabase app, but if you do it right now, you'll likely see a &lt;code&gt;stream timeout&lt;/code&gt; error because Metabase needs more resources than the default .5 CPU and 1GB memory Azure Container Apps allocates. The next step will help you update the resources and get the app running.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Update the resources for your Container App&lt;/strong&gt;&lt;br&gt;
To increase the CPU and memory resources allocated to your new Container App, just run the following command:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;az containerapp update --resource-group metabase-rg --name metabase --cpu 1 --memory 2.0Gi
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Open Metabase and explore
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Paste the URL from Step 1 in a browser to start enjoying Metabase!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you need that URL again, you can use this command to quickly find it:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;containerapp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;show&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;metabase-rg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;metabase&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;properties.configuration.ingress.fqdn&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Use the &lt;a href="https://www.metabase.com/learn/getting-started/getting-started" rel="noopener noreferrer"&gt;Metabase Getting Started Guide&lt;/a&gt; or search for &lt;a href="https://www.youtube.com/results?search_query=metabase" rel="noopener noreferrer"&gt;Metabase on YouTube&lt;/a&gt; if you need help getting started.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cleanup the resources
&lt;/h2&gt;

&lt;p&gt;When you are done exploring Metabase, don't forget to delete the resources you created if you aren't going to use them any longer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;delete&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;metabase-rg&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Next Step - Set up your Container App for production use
&lt;/h2&gt;

&lt;p&gt;Metabase has a nice doc for configuring Metabase to be used in production: &lt;a href="https://www.metabase.com/blog/how-to-run-metabase-in-production" rel="noopener noreferrer"&gt;How to Run Metabase in Production&lt;/a&gt;. One of the steps is to migrate from the internal H2 database to PostgreSQL, and you can use Azure Database for PostgreSQL for this purpose. &lt;/p&gt;

&lt;p&gt;You will need to set some environment variables in your Container App to tell Metabase which database to talk to. Azure Container Apps lets you do this easily through the &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt; or through the Azure CLI. &lt;/p&gt;

&lt;p&gt;If This step is interesting to you, let me know and I'll add another article.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I'm still learning about Metabase myself, but I've been super impressed so far. I would love to hear what you think, and if you run into problems, don't hesitate to drop into the &lt;a href="https://discourse.metabase.com/" rel="noopener noreferrer"&gt;Metabase Discussion&lt;/a&gt; and bring your questions.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs17bk2b5bckr71yu7ima.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs17bk2b5bckr71yu7ima.png" alt="Metabase Dashboard Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;/p&gt;

&lt;p&gt;I want to give a shout-out to the &lt;a href="https://discourse.metabase.com/" rel="noopener noreferrer"&gt;Metabase Discussion site&lt;/a&gt;. I've had a number of questions about deploying and using Metabase that I've posted on the site. Most of my questions have been answered within hours and no question has gone unanswered. Amazing support!&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;And if you want a little more information on running Metabase in a Docker container, Metabase has a very nice doc that got me off to a good start: &lt;a href="https://www.metabase.com/docs/latest/installation-and-operation/running-metabase-on-docker.html" rel="noopener noreferrer"&gt;Running Metabase on Docker&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>metabase</category>
      <category>datascience</category>
      <category>docker</category>
    </item>
    <item>
      <title>Apache Superset and Azure - multi-container application deployment</title>
      <dc:creator>Chris Harris</dc:creator>
      <pubDate>Tue, 10 May 2022 17:13:24 +0000</pubDate>
      <link>https://dev.to/charrismsft/apache-superset-and-azure-multi-container-application-deployment-2bge</link>
      <guid>https://dev.to/charrismsft/apache-superset-and-azure-multi-container-application-deployment-2bge</guid>
      <description>&lt;p&gt;In this article you’ll learn the steps to deploy Apache Superset on Azure using Azure Kubernetes Service. &lt;br&gt;
     &lt;/p&gt;
&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I work on improving the Python Developer Experience on Microsoft Azure and I've spoken with lots of Python developers from around the world. One thing I've heard repeatedly is that &lt;strong&gt;many Python devs like to run production code in containers&lt;/strong&gt;. And another thing I've learned is many apps require multiple containers.&lt;/p&gt;

&lt;p&gt;I also like to do some data analysis on the side and recently ran across &lt;a href="https://github.com/apache/superset" rel="noopener noreferrer"&gt;Apache Superset&lt;/a&gt; which describes itself as a "modern data exploration and data visualization platform". Coincidentally, &lt;strong&gt;Superset has a lot of Python code and can be deployed in containers&lt;/strong&gt; (nine of them at current count!)&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxo3ozpzn8u0ce9qd34uw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxo3ozpzn8u0ce9qd34uw.png" alt="Superset image from https://github.com/apache/superset" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are several options for running container-based apps on Azure. Because &lt;strong&gt;Superset requires several containers&lt;/strong&gt; (9 at current count) I decided to use Azure Kubernetes Service (AKS). In a future post I plan to share how you can use Azure's new managed service for containers, Azure Container Apps, instead.&lt;/p&gt;

&lt;p&gt;While I did not find an existing document or post to help me complete my journey in a straightforward manner, here are several docs that helped:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://superset.apache.org/docs/installation/running-on-kubernetes" rel="noopener noreferrer"&gt;Superset - Running on Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/aks/quickstart-helm" rel="noopener noreferrer"&gt;Quickstart: Develop on Azure Kubernetes Service (AKS) with Helm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/aks/kubernetes-helm" rel="noopener noreferrer"&gt;Install existing applications with Helm in Azure Kubernetes Service (AKS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/aks/learn/quick-kubernetes-deploy-cli" rel="noopener noreferrer"&gt;Quickstart: Deploy an Azure Kubernetes Service cluster using the Azure CLI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  The set up
&lt;/h2&gt;

&lt;p&gt;Some of the syntax below may vary with your choice of OS or shell.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt; you will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;Git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli" rel="noopener noreferrer"&gt;Azure CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://helm.sh/docs/intro/install/" rel="noopener noreferrer"&gt;Helm CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;An Azure subscription. If you don't already have one, you can &lt;a href="https://azure.microsoft.com/free" rel="noopener noreferrer"&gt;create one&lt;/a&gt; for free.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;Docker Desktop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  Get the Superset app and create your AKS Cluster
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clone the Apache Superset repo&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;clone&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://github.com/apache/superset&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;superset&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Sign in to the Azure CLI&lt;/strong&gt;&lt;br&gt;
You can sign in by using the &lt;a href="https://docs.microsoft.com/en-us/cli/azure/reference-index?view=azure-cli-latest#az-login" rel="noopener noreferrer"&gt;az login&lt;/a&gt; command&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Create a new AKS cluster with ACR integration&lt;/strong&gt;&lt;br&gt;
Azure Container Registry (ACR) is kind of like Docker Hub. It's a place to store your container images so you can run your application in your Azure Kubernetes Service (AKS) cluster. We will use it to store the Superset container images.&lt;br&gt;
Use &lt;code&gt;az acr create&lt;/code&gt; to create an ACR named &lt;em&gt;[yourname]supersetacr&lt;/em&gt; in a resource group called &lt;em&gt;supersetrg&lt;/em&gt;. &lt;br&gt;
Replace &lt;code&gt;[yourname]&lt;/code&gt; below with a name of your choice.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a Resource Group to hold your ACR and AKS resources&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Feel free to use a location closer to you&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;supersetrg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;westus2&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Create an Azure Container Registry&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;acr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;supersetacr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;supersetrg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--sku&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;basic&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Create an AKS cluster with ACR integration&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;aks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;supersetaks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;supersetrg&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--generate-ssh-keys&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--attach-acr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;supersetacr&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;When you create the ACR, you will see a blob of JSON. Here are a couple of &lt;strong&gt;important values to notice&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
"location": "westus2",
"loginServer": "[yourname]supersetacr.azurecr.io",
"name": "[yourname]2supersetacr",
...
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "supersetrg",
"sku": {
  "name": "Basic",
  "tier": "Basic"
},
...
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;It will take a few minutes to create the AKS cluster. When it's done you will see an even larger blob of JSON. Here are a couple of &lt;strong&gt;important values to notice&lt;/strong&gt; in this one:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
  "osDiskSizeGb": 128,
  "osDiskType": "Managed",
  "osSku": "Ubuntu",
  "osType": "Linux",
...
  "provisioningState": "Succeeded",
...
  "vmSize": "Standard_DS2_v2",
...
"azurePortalFqdn": "supersetak-supersetrg-2223f9-06aacbbd.portal.hcp.westus2.azmk8s.io",
...
"fqdn": "supersetak-supersetrg-2223f9-06aacbbd.hcp.westus2.azmk8s.io",
...
"kubernetesVersion": "1.22.6",
...
"nodeResourceGroup": "MC_supersetrg_supersetaks_westus2",
...
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;br&gt;
Additional ways to integrate ACR with AKS: &lt;a href="https://www.thorsten-hans.com/3-ways-to-integrate-acr-with-aks/" rel="noopener noreferrer"&gt;3 Ways to integrate ACR with AKS&lt;/a&gt;&lt;br&gt;
 &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Push the Superset container images into your ACR&lt;/strong&gt;&lt;br&gt;
Superset uses two container images, which you can see in the superset repo in the &lt;code&gt;/helm/superset/values.yaml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apache/superset&lt;/span&gt;
&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;span class="na"&gt;initImage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;busybox&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;While ACR can technically pull images directly from Docker Hub, the throttling that Docker Hub has recently implemented means it could take a while (sometimes a &lt;em&gt;long&lt;/em&gt; while) for the images to get into your ACR. Instead &lt;strong&gt;we're going to pull the images to your machine and then push them to ACR&lt;/strong&gt;. Don't forget to replace &lt;code&gt;[yourname]&lt;/code&gt; with the name you chose previously.&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# First - login to your ACR so Docker can push to it&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;acr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;supersetacr.azurecr.io&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Pull the Superset image&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pull&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;apache/superset&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Tag the image using your ACR login server name &lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;apache/superset&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;supersetacr.azurecr.io/superset&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Push the image to ACR&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;supersetacr.azurecr.io/superset&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Pull the Busybox image&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pull&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;busybox&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Tag the image using your ACR login server name&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;busybox&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;supersetacr.azurecr.io/busybox&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="c"&gt;# Push the image to ACR&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;push&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;yourname&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="nx"&gt;supersetacr.azurecr.io/busybox&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Create a my_values.yaml file to override defaults&lt;/strong&gt;&lt;br&gt;
In the previous step we gave the images new tags and now we need to create override the defaults in /helm/superset/values.yaml so our new images will be used.&lt;br&gt;
Add the following to a new file called &lt;code&gt;my_values.yaml&lt;/code&gt;, being sure to replace &lt;code&gt;[yourname]&lt;/code&gt; with the name you chose previously:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;yourname&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;&lt;span class="s"&gt;supersetacr.azurecr.io/superset&lt;/span&gt;

&lt;span class="na"&gt;initImage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;yourname&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;&lt;span class="s"&gt;supersetacr.azurecr.io/busybox&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;While we're in the my_values.yaml file, in order to &lt;strong&gt;expose the Superset website&lt;/strong&gt;, we need to change service type from &lt;code&gt;ClusterIP&lt;/code&gt; to &lt;code&gt;LoadBalancer&lt;/code&gt; and to make it easier to browse we will set the port to &lt;code&gt;80&lt;/code&gt;. Add these lines to &lt;code&gt;my_values.yaml&lt;/code&gt; as well:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Set type to 'LoadBalancer' so we can browse it&lt;/span&gt;
&lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;LoadBalancer&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;And unless you're planning on deploying to production, I recommend that you &lt;strong&gt;load up some examples&lt;/strong&gt; to play with. Just make one more addition to the &lt;code&gt;my_values.yaml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Load Superset Examples&lt;/span&gt;
&lt;span class="na"&gt;init&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;loadExamples&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Here is the entire &lt;code&gt;my_values.yaml&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;yourname&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;&lt;span class="s"&gt;supersetacr.azurecr.io/superset&lt;/span&gt;

&lt;span class="na"&gt;initImage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;repository&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;yourname&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;&lt;span class="s"&gt;supersetacr.azurecr.io/busybox&lt;/span&gt;

&lt;span class="c1"&gt;# Set type to 'LoadBalancer' so we can browse it&lt;/span&gt;
&lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;LoadBalancer&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;

&lt;span class="c1"&gt;# Load Superset Examples&lt;/span&gt;
&lt;span class="na"&gt;init&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;loadExamples&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt; &lt;/p&gt;


&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  Deploy Superset to your AKS cluster
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Get the credentials to your AKS cluster so helm deploy to it&lt;/strong&gt;&lt;br&gt;
Use the &lt;code&gt;az aks get-credentials&lt;/code&gt; command to download credentials for your AKS cluster:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;aks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;get-credentials&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;supersetaks&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;supersetrg&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Deploy to AKS using helm&lt;/strong&gt;&lt;br&gt;
First update your helm chart dependencies using the &lt;code&gt;helm dependency update&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;helm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;dependency&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;helm/superset&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Then install your helm chart using the &lt;code&gt;helm install&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;helm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--values&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;my_values.yaml&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;superset&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;helm/superset&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Check it out!
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;View your AKS cluster in the Azure Portal and open Superset&lt;/strong&gt;&lt;br&gt;
Some Azure services make it very easy for you to quickly jump from your CLI to view the resource in the Azure web portal; fortunately, AKS is one of those services.&lt;/p&gt;

&lt;p&gt;Open the portal to your AKS cluster with the &lt;code&gt;az aks browse -n supersetaks -g supersetrg&lt;/code&gt; command.&lt;br&gt;
This will take you to the &lt;em&gt;Workloads&lt;/em&gt; page where you will see the status of your Kubernetes workloads. Give it five minutes or so for everything to get deployed and to turn green. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10q0fy8unuckeikuf227.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10q0fy8unuckeikuf227.png" alt="AKS Workloads page" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then click on &lt;code&gt;Services and ingresses&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;On the &lt;em&gt;Services and ingresses&lt;/em&gt; page, you will find the &lt;code&gt;External IP&lt;/code&gt; for your Superset website:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq7i3wojuf59tqnkx71n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq7i3wojuf59tqnkx71n.png" alt="AKS Services and ingresses page" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click on the External IP &lt;strong&gt;and add the port number :8088&lt;/strong&gt;, if everything worked perfectly, you will see the &lt;strong&gt;Superset login page&lt;/strong&gt; below where you can use &lt;code&gt;admin&lt;/code&gt; and &lt;code&gt;admin&lt;/code&gt; to login.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdejv5fg7u16fc8ktsvfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdejv5fg7u16fc8ktsvfl.png" alt="Superset login page" width="800" height="421"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;While I haven't tried out everything yet, I have connected to an external database and created charts and dashboards. I'm happy to say that &lt;strong&gt;performance has been great&lt;/strong&gt; so far and I'm looking forward to seeing what I can create!&lt;br&gt;
Here's one of the dashboards you can explore when you load the examples mentioned above:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74mo0x9occ5ke4exbs03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74mo0x9occ5ke4exbs03.png" alt="USA Births Names Dashboard" width="800" height="840"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Cleaning up the resources
&lt;/h2&gt;

&lt;p&gt;Since AKS is not free, when you are done testing Superset you may want to &lt;strong&gt;delete the resources&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When you created your ACR, you created a resource group called &lt;code&gt;supersetrg&lt;/code&gt;. And when you created your AKS cluster another resource group was also created with a name similar to this: &lt;code&gt;MC_supersetrg_supersetaks_westus2&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;You will need to delete both of these resource groups to prevent incurring additional costs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# View all of your resource groups&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-o&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;table&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Delete the resource groups for your AKS cluster&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;delete&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;supersetrg&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;az&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;delete&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-g&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;MC_supersetrg_supersetaks_westus2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Consider &lt;a href="https://docs.microsoft.com/en-us/azure/postgresql/flexible-server/quickstart-create-server-cli" rel="noopener noreferrer"&gt;creating an Azure Database for PostgreSQL&lt;/a&gt; and &lt;a href="https://superset.apache.org/docs/databases/postgres" rel="noopener noreferrer"&gt;connecting it to Superset&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Once you have a database connected, you can &lt;a href="https://superset.apache.org/docs/creating-charts-dashboards/exploring-data/#loading-csv-data" rel="noopener noreferrer"&gt;upload some data to Superset from a CSV or Excel file&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href="https://superset.apache.org/docs/creating-charts-dashboards/exploring-data" rel="noopener noreferrer"&gt;Explore Data in Superset&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href="https://superset.apache.org/docs/creating-charts-dashboards/creating-your-first-dashboard" rel="noopener noreferrer"&gt;Create your First Dashboard&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>superset</category>
      <category>azure</category>
      <category>python</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
