From Zero to Hero: Elevating Your Mission Software Deployments with UDS

Kinsey Matthews
Defense Unicorns
Published in
6 min readMay 1, 2024

The Challenge:

Have you ever tried to deploy applications in the Department of Defense (DoD)? No? Okay, picture this: it’s like trying to drive blindfolded. It can be done… but it is kind of T-R-I-C-K-Y!!

Especially when you’re great at creating apps but the thought of Kubernetes makes you want to pull your hair out. Don’t sweat it, though! That’s exactly why Unicorn Delivery Service (UDS) steps in — to take the tech “tangles” out of Kubernetes with just a few simple commands.

The Solution With UDS:

Think of UDS as your deployment bestie that handles the deployment drama & lifts all the heavy weight! What a pal ;)

With just a few lines of code, everything that was hard about Kubernetes is now easy.

It just #works

UDS Core — The Backbone of Deployment

UDS Core isn’t just another tool; it’s your deployment powerhouse tailored for the defense sector’s unique demands — fast, secure, and compliant.

Curious about UDS Core? Dive deeper in our intro piece: From Zero to Hero: Kickstart Your Journey with UDS Core

UDS Core Highlights:

  • Swift Deployment: UDS Core reduces the time needed to to configure automated deployments.
  • Enhanced Security: Satisfying NIST 800–53 controls by default, keeping your data extra safe!
  • Streamlined Compliance: Smooths your path to a speedy Authority to Operate (ATO).

A Step-by-Step Tutorial: Deploy UDS Core & Your Application

Ready to see some magic? We’ll deploy UDS Core first, then layer on Podinfo (our chosen app) and watch the sparks fly as everything comes together seamlessly.

If you’re catching up, pop over to our first blog in this series to familiarize yourself with the UDS Core setup: From Zero to Hero: Kickstart Your Journey with UDS Core

Step 1: Check your UDS version

Before we start, let’s make sure your UDS toolkit is up-to-date. Pop open your terminal and type:

uds version

This is our sanity check to make sure you’re running the latest and greatest, keeping you ahead in the deployment game.

Step 2: Deploy UDS Core Using K3d

Let’s get the heart of our operation up and running. Deploy the UDS Core using the following command, which pulls the latest k3d-core-demo OCI artifact:

uds deploy k3d-core-demo:0.22.2

This command sets up a demo-ready Kubernetes environment, primed with UDS Core.

  • Press ‘y’ to confirm the deployment

Don’t forget: Keep tabs on the latest releases at https://github.com/defenseunicorns/uds-core/releases and choose the one that best fits your mission.

Wait it out: Once you press ‘y’ to confirm the deployment and then take a breather — this will take about 10–12 minutes. Perfect time for a snack break!

Step 3: Clone the Github Repo

Next up, clone the GitHub repository that contains your deployment configs:

git clone https://github.com/KinzP/pod-info-app-uds-core.git
cd pod-info-app-uds-core

This repo is your deployment command center, it holds all the files you’ll need to manage your application deployment effectively.

Inside Your Repo:

Zarf.yaml: This file packages your application, making sure everything needed for deployment is bundled up nicely — super useful for managing apps in secure or disconnected environments.

Learn more about Zarf here: https://docs.zarf.dev/

Within the Zarf.yaml, you’ll find the podinfo chart. This points straight to the Helm chart for podinfo and Zarf tells you exactly where to find it and which version to use.

uds-bundle.yaml: This config lays out how your app will be exposed within the Kubernetes environment, detailing everything from services to networking needs.

Step 4: Identify Docker Images

Let’s confirm we have all the Docker images we need. This step is super important if you’re working towards deploying in an air-gapped environment, where the internet is a no-go.

zarf dev find-images --repo-chart-path charts/ .

This command finds the Helm charts in the specified directory and lists all the Docker images your application needs to work. This is your chance to verify that all the images are accounted for and ready for the next steps!

Step 5: Create and Deploying the Zarf Package

Now, gather all of those Docker images and your app configuration and bundle them into one Zarf package.

uds z p c # Zarf package create

Step 6: Find Your Package

Pop into your project directory and watch the magic happen:

cd github/pod-info-app-uds-core
ls
There’s your Zarf package!

Ready to be deployed to the UDS cluster with:

uds zarf package deploy

Step 7: Test Your Deployment

Open up your browser and navigate to:

Podinfo.uds.dev

Note: If you run into a “delayed connect error: 111,” it might be a hiccup. But don’t worry, it’s a snag that’s easy to fix, simply wait a few seconds and refresh your browser.

Step 8: P-I-N-G Time!

You’ll see the welcome screen of “podinfo v6.4.0” and a tempting red PING button. Go ahead, click it as many times as you like. Each ping is a little hello to your new setup.

Step 9: Let’s Check the Logs!

If you’re curious about the behind-the-scenes action, pop open your terminal:

uds z t m  # Check the logs

You’ll see entries in the istio-tenant-gateway/tenant-ingressgateway — istio-proxy showing your pings with precise timestamps — proof that your setup is alive and kicking!

Step 10: Tidying Up

All good things must come to an end, including your newly set up Kubernetes cluster.


k3d cluster delete uds

Cheers! You’ve successfully deployed software with UDS.

What’s Next?

Stay tuned for our upcoming adventure, where we dive into UDS + Your App Your Environment (YAYE). We’ll show how UDS Core can deploy Your App in any environment, making it super easy to manage.

Curious for more?

Drop us a line for more insights or to share how UDS can supercharge your mission:

--

--

Kinsey Matthews
Defense Unicorns

𝐂𝐥𝐨𝐮𝐝 𝐄𝐧𝐠𝐢𝐧𝐞𝐞𝐫 ☁️ 𝐇𝐚𝐬𝐡𝐢𝐜𝐨𝐫𝐩 𝐓𝐞𝐫𝐫𝐚𝐟𝐨𝐫𝐦 𝐀𝐬𝐬𝐨𝐜𝐢𝐚𝐭𝐞 🔒 𝐀𝐖𝐒 𝐂𝐞𝐫𝐭𝐢𝐟𝐢𝐞𝐝 𝐃𝐞𝐯𝐎𝐩𝐬 🌐 𝐋𝐢𝐧𝐮𝐱 𝐂𝐞𝐫𝐭𝐢𝐟