Monthly Archives: July 2018

Introduction

With the Kubernetes plug-in for UrbanCode Deploy, users may change the tag (version) of containers used in a deployment without editing YAML files. UrbanCode Deploy tracks and displays which container image versions are deployed where and when, providing auditing and ease of use.

The Kubernetes plug-in now features similar functionality for deployments using Helm charts. The container images used in Helm charts may be managed as components inside UrbanCode Deploy, eliminating the need for users to update Helm charts or values.yaml files in order to change which container version is deployed in environments.

The Create Image Components From Helm Release Step

Easily create container image components with the The Create Image Components from Helm Release step. Users provide a Helm release name. When run, the step will examine the Helm release, find all container images used by the release, then create UrbanCode Deploy components to mange those container images. The Docker Registry source configuration plug-in may then connect to your Docker registry and discover all available image tags, adding them to the component as versions.

In this example, I’ve created a generic process which contains only the Create Image Components from Helm Release step. I’ve provided my Helm release name mra-derby. Once executed, the process created a component for the container image used in my release and added a kubernetes.image tag to the component. I updated the configuration settings for my component so the Docker Registry plug-in could then connected to my Docker Registry (in this case, Artifactory). I then imported versions for the component. The Docker Registry plug-in connected to Artifactory, discovered the container image tags, and created them as versions in UrbanCode Deploy.

Add a Process to the Container Image Components

A process must be added to the container image component in order for these components to perform a Helm upgrade. The Helm upgrade will be used to change which version (tag) of the container image is used by the release. In my simple example, my process only uses one step (Helm Upgrade), however you may want to add steps to configure Helm for reliability.

In this example. I’m providing my Helm release (as a property), my Helm chart (as a property), and two flags. Let’s take a look at the first flag:

--set image.tag=${p:version.name}

The –set flag is used to override a value found in your charts values.yaml file. I determined that image.tag was the property to override by looking at my chart’s values.yaml file:

I saw that image.tag was the property in values.yaml I wanted to override. This value may be different for you. You may also want to use an UrbanCode Deploy property for this value for ease of use going forward (this would make the process generic and would allow you to use a component template).

Finally, ${p:version.name} means we are going to set this property to the version name of our component, which will be an image tag.

The next flag is:

--reuse-values

This tells Helm to leave all other values as is.

Setting up the Application in UrbanCode Deploy

In UrbanCode Deploy, create an application. Add the component that represents your Helm chart and the container image components to the application.

Build an application process.

Above is an example of an application process. The first step installs the Helm chart component. My component process for the Helm chart component downloads the chart from the component version artifact into a specific directory. The process then checks to see if the Helm release already exists. If the release does not exist, the chart is installed. If the release does exist, an upgrade is performed. See this page for an example process.

Next, my process installs the container image component. In my example, I only have one container image, so I install it directly. If you have multiple container image components, you may use the Install Multiple Components step to install all components with the kubernetes.image tag, for example. This step runs the process we created earlier for the container image component. The end result is a helm upgrade command is run to ensure the Helm release uses the image tag specified in the UrbanCode Deploy user interface.

Conclusion

UrbanCode Deploy is now setup to allow users to change which tag (version) of their container image is used in a Helm deployment without requiring the user to update YAML files or manually run Helm commands.

In the example above, version 2.0.0 of my Helm chart is deployed. The release includes a container named ucds, and the tag for that container image is 7.0.0.0.981343c-x86_64. If I want to change the tag of the container image used in my release, I could simply run another deployment, choosing which image tag to use in the UrbanCode Deploy user interface.

IBM Think 2019 call for papers is now open!

With IBM Think now accepting abstracts from people wishing to share their stories at IBM’s premiere conference, I thought I would share some “tips” & “tricks” on how best to get your story accepted. Following these ideas is not a guarantee that your submission will be accepted but it will certainly increase your chances.

Submitting a well-crafted abstract

Call for papers submission applications typically have char/word counters on several fields where you are expected to share your idea. Don’t waste that valuable space using meaningless words or phrases. Opening an abstract proposal with “Attend this session to …” just used up 22 characters or 4 words! My advice is to be concise, be clear, be clean, be complete – avoid repetition, extraneous jargon, and excessive buzz words. If you use an acronym, spell it out the first time. Don’t leave people playing the “alphabet soup” game trying to figure out what the acronym means. And finally, please please please…. proof read your submission. Bad grammar and misspellings make an abstract hard to read and creates additional editing work for the selection committee. Don’t make rejecting your submission easy for them.

Structuring your abstract submission

Having read many thousands of “Call for Paper” submissions, people often spend too much time writing what I will term as “the fluff”. This “fluff” often leaves the selection committee wondering when the abstract writer will be getting to the point or if there is a point to be made. In my opinion, a well-structured abstract should clearly speak to these 3 questions (at a high level):

Lastly, the abstract should close with a commitment on the 2 or 3 things you promise to deliver during your session and what the attendee will leave with.

Be prepared to deliver on commitments made in your abstract

Too often, there is disconnect between the submitted abstract and presentation delivered. The result is often a dissatisfied audience leading to poor session rating, poor Speaker rating or both. In some situations, the selection committee may look at past results and previous Speaker ratings to provide insight on who will deliver the best content. My best advice is to follow Stephen Covey’s guidance and “begin with the end in mind”. The details of your abstract are your commitment to the audience. The more concise your abstract is, the easier it is to build the presentation and meet the expectations of the attendees. Happy attendees translate into higher sessions ratings and Speaker ratings.

So, let’s think positive for a moment. You have just received your acceptance notification. Next step is to build that demo asset, workshop curriculum, or presentation. What details will you include in the session material?

My suggestion; quickly build the session outline as a straw-man using bullet points:

Present the problem and explain the solution – in detail! I have walked out of many sessions where the problem was clearly stated, the Speaker said they fixed it sharing how smart they were but offered no insight on how the problem was resolved. I wanted details!

Share assets that helped solve the problem. If you write a utility or code snippet that could add value to others, share how you went about developing the utility or share the code with the audience.

Proudly display your tool chain no matter how simple or complex. In fact, tool chain slides often get the most photos taken. HINT: Be sure to stand close to the screen, be part of the picture and enjoy new found social media fame! For some reason, people love to tweet pictures of others’ tool chains!

Talk about what worked, what didn’t, experiments performed, and lessons learned. DevOps is about continuously learning, experimentation, and failing safely. Be fearless in sharing. Your experience and expertise can save others time and garner respect for yourself with peers.

Introduce what you may do next to become even more effective. DevOps is a journey. Having that longer-term vision and sharing that vision with others may spark a new collaborative relationship with someone who has a common interest in finding the solution.

Present concrete measured (qualified and quantitative) results – tied to the business. DevOps is about delivering results to the business. Sharing your results can help others see the possible and the potential outcomes.

Now that you can envision what the end looks like, work backwards and write the beginning – the abstract you are going to submit.

Remember people are coming to learn from your experiences – you are the teacher. And like Teachers, Speakers have a responsibility to connect with each attendee and work to share a piece of knowledge with everyone in the room. This is your chance to shine and share your expertise with others.

IBM Think 2019 DevOps stories we are looking for but are not limited to…

Continuous delivery and continuous testing on the mainframe

Increasing DevOps maturity: Value Stream Management

Deploying containerized applications with UrbanCode Deploy

Solving the DevOps “Day two” problem

Cultural transformation to achieve desired business outcomes

Deploying hybrid applications in hybrid environments

Virtualizing containers and other software dependencies for the purpose of testing

And be creative! Session delivery doesn’t need to be “death by slide ware”. I encourage those submitting abstracts to think about how they might get “outside of the box” delivering their story in a new and fresh innovative way.

IBM Think 2019 Call for Papers closes July 16, 2018.

Al Wagner is an IBM technical evangelist with more than twenty years of practical field experience in development roles driving thought leadership, strategic initiatives, and tangible solutions around DevOps and continuous delivery. Focusing mainly on deployment automation and continuous testing, Al has practical knowledge of the IBM DevOps solution having assisted, mentored, and enabled both internal IBM and external customer teams to solve their IT challenges. He has spoken at numerous conferences around the world on software development –principles & techniques – and authored/co-authored numerous papers and books including Application Release and Deployment For Dummies, Continuous Testing For Dummies, and Service Virtualization For Dummies.