Over the last decade, the popularity of microservices and highly-scalable systems has increased, leading to an overall increase in the complexity of applications that are now distributed heavily across the network with many moving pieces and potential failure modes.
This architectural evolution has changed the monitoring requirements and led to a need for scalable and insightful tooling and practices to enable us to better identify, debug and resolve issues in our systems before they impact the business and our end users (internal and/or external).
I recently gave a talk at DockerCon SF 18 discussing functionality in Docker Enterprise that enables operators to more easily monitor their container platform environment, along with some key metrics and best practices to triage and remediate issues before they cause downtime.
You can watch the full talk here:
One of the most well-known early monitoring techniques was the USE method from Brendan Gregg at Netflix. USE specified that for every resource we should be monitoring utilization (time spent servicing work), saturation (the degree to which a resource had work it couldn’t service) and errors (number of error events). This model worked well for more hardware / node centric metrics but network-based Continue reading
For the last several years, I’ve organized a brief morning prayer time at VMworld. This year, I won’t be at the conference, but I’d like to help coordinate a time for believers to meet nevertheless. So, if you’re a Christian interested in gathering together with other Christians for a brief time of prayer, here are the details.
What: A brief time of prayer
Where: Mandalay Bay Convention Center, level 1 (same level as the food court), at the bottom of the escalators heading upstairs (over near the business center)
When: Monday 8/27 through Thursday 8/30 at 7:45am (this should give everyone enough time to grab breakfast before the keynotes start at 9am)
Who: All courteous attendees are welcome, but please note this will be a distinctly Christian-focused and Christ-centric activity (I encourage believers of other faiths/religions to organize equivalent activities)
Why: To spend a few minutes in prayer over the day, the conference, the attendees, and each other
You don’t need to RSVP or anything like that, although you’re welcome to if you’d like (just hit me up on Twitter). As I mentioned, I won’t be at the conference, so I’ll ask folks who have attended prayer time in Continue reading
Last week, we had a great turnout for the Docker San Francisco chapter event at HQ! The meetup was focused on two of the most popular talks from DockerCon on BuildKit and container orchestration with Kubernetes and Docker Swarm. The purpose was to give people who couldn’t attend these talks a chance to hear to hear them live, provide the opportunity to ask the speakers questions and network with other members of the container ecosystem.
Watch Tibor Vass’ Presentation
First, we had Tibor Vass, a software engineer on the Engine Team at Docker and maintainer of the Docker project since 2014, take the podium with his talk ‘Introduction to BuildKit: the Next Generation Builder Component’. In this talk, Tibor went into detail about the latest developments around the builder component of the Docker Platform including BuildKit, a toolkit that builds on containerd to provide next-generation capabilities for building software with the help of containers. Watch his talk to learn about the architecture and design choices of BuildKit’s frontend model, how to use BuildKit directly, and how to leverage its features in Docker. There were a number of great questions from particularly engaged community members!
Hello, and welcome to another Getting Started with Ansible + Windows post! In this article we’ll be exploring what Desired State Configuration is, why it’s useful, and how to utilize it with Ansible to manage your Windows nodes.
So what exactly is Desired State Configuration? It’s basically a system configuration management platform that uses the declarative model; in other words, you tell DSC the “what”, and it will figure out the “how”. Much like Ansible, DSC uses push-mode execution to send configurations to the target hosts. This is very important to consider when delivering resources to multiple targets.
This time-saving tool is built into PowerShell, defining Windows node setup through code. It uses the Local Configuration Manager (which is the DSC execution engine that runs on each node).
Microsoft fosters a community effort to build and maintain DSC resources for a variety of technologies. The results of these efforts are curated and published each month to the Powershell Gallery as the DSC Resource Kit. If there isn't a native Ansible module available for the technology you need to manage, there may be a DSC resource.
DSC Resources are distributed as Continue reading
Changing the culture and service offerings of a big consulting firm isn’t easy, but BCG has been on that path for the past five years. BCG has evolved from traditional consulting services into a digital transformation powerhouse with six divisions that deliver strategic and technical services to clients.
One of those divisions, BCG Gamma, is a global team of world-class data scientists who build data analytics, machine learning, and artificial intelligence solutions for the firm’s clients. But building and shipping analytics, ML and AI applications to clients is challenging. Andrea Gallego, CTO of the division, is charged with creating an infrastructure that can support delivering high-quality ML and AI models at scale.
The Challenge: Shipping ML and AI Software to Clients at Scale
The big question on her mind was how BCG Gamma could not only build models, but deliver them to clients at the edge with real-time orchestration, monitoring and updates. GDPR and other regulations also meant she had to do this while ensuring integrity, consistency and lineage across data models.
Andrea and her team launched the BCG GammaX initiative, a core team of 30 engineers specializing in analytics software engineering, data engineering, UX design, distributed systems, and Continue reading
Back in January we made Kubernetes available in our Edge release channels for Docker Desktop on macOS and on Windows. Today we’re excited to announce that Kubernetes orchestration has graduated to the Stable release channels for Docker Desktop!
Docker Desktop is the fastest and simplest way to get a Kubernetes cluster running on your desktop machine, while still giving you the freedom to choose Docker Swarm if you prefer. Docker Developer Advocate Elton Stoneman recently created a short video demonstrating Docker Desktop on both Windows and Mac. In the video, Elton demonstrates:
Click image below to watch video:
Docker Desktop is simple to install on macOS and Windows 10 Pro or Enterprise, and is available at the links below. If you’re already using Docker Desktop and you’re in the Stable channel (which is default) then you should see an auto-update notification soon.
Docker Desktop is the most popular way to configure a Docker dev Continue reading
Docker Windows Containers with Docker Enterprise
A huge number of companies are still running apps on Windows Server 2003 and 2008 in the data center. They want to move to a modern, secure, supported platform which gives them the flexibility to run in the data center today – and in any cloud tomorrow. Docker gives them that flexibility, and you can move your apps to Docker without changing any code.
That was the focus of our recent webinar, where we showed several apps currently running on Windows Server 2003, and packaged them to run as Docker Windows containers. We showed all the steps to migrate the apps with no code changes, and then we ran them in Docker Enterprise on a Windows Server 2016 VM running in Azure.
You can watch the full video of the webinar here – it comes in at just over 60 minutes:
In the webinar, you see the portability that Docker Enterprise gives you. The applications we move are a mixture of older web technologies – static HTML, classic ASP and ASP.NET WebForms. The apps from the demo and the Dockerfiles are on GitHub here. They could be 15-year old apps and you Continue reading
I recently tweeted that I was about to undertake a new pet project where I was, in my words, “probably going to fall flat on my face”. Later, I asked on Twitter if I should share some of the learning that will occur (is ocurring) as a result of this new project, and a number of folks indicated that I should. So, with that in mind, I’m announcing this project I’ve undertaken is a software development project aimed at helping me bolster my software development skills, and that I’ll be blogging about it along the way so that others can benefit from my mistakes…er, learning.
Readers may recall that my 2018 project list included a project to learn to write code in Golang. At the time, I indicated I’d use Kubernetes and related projects, along with my goal of making more open source contributions, as a vehicle for helping to accomplish that goal. In retrospect, that was quite ambitious, and I’ve since come to the realization that there are a number of “baby steps” that I need to take before I am ready to use a large software project like Kubernetes as a means to help improve my coding skills. Continue reading
In April of 2017 we announced the Modernize Traditional Applications (MTA) program at Docker. The goal of MTA is to take the vast back catalogs of existing applications that are running in enterprise organizations today, and bring them to a modern container platform, without requiring extensive rewrites or refactoring. I’m excited to share part of our learning from the MTA program and announce the release of Docker Application Guides.
Oracle WebLogic MedRec Sample Application on Docker Enterprise Edition
Docker Application Guides demonstrate how to deploy popular enterprise applications – Oracle WebLogic and IBM MQ with WebSphere Liberty – on Docker Enterprise and Docker Desktop. Application Guides include example architectures and guidance for selecting Certified Docker container images from Docker Store and deploying a prototype application, orchestrated by Docker Swarm or Kubernetes.
It is important to note that Docker Application Guides are one piece of our prescriptive Docker customer journey to production. In addition to the knowledge transfer and process transformation that come with our full approach, Application Guides provide a reference for deploying common enterprise applications on the Docker Enterprise platform.
The first Docker Application Guides are designed to help you plan and deploy an Oracle WebLogic application Continue reading
I’ve recently started playing around with Ballerina, and upon the suggestion of some folks on Twitter wanted to clone down some of the “official” Ballerina GitHub repositories to provide code examples and guides that would assist in my learning. Upon attempting to do so, however, I found myself needing to clone down 39 different repositories (all under a single organization), and so I asked on Twitter if there was an easy way to do this. Here’s what I found.
Fairly quickly after I posted my tweet asking about a solution, a follower responded indicating that I should be able to get the list of repositories via the GitHub API. He was, of course, correct:
curl -s https://api.github.com/orgs/ballerina-guides/repos
This returns a list of the repositories in JSON format. Now, if you’ve been paying attention to my site, you know there’s a really handy way of parsing JSON data at the CLI (namely, the jq
utility). However, to use jq
, you need to know the overall structure of the data. What if you don’t know the structure?
No worries, this post outlines another tool—jid
—that allows us to interactively explore the data. So, I ran:
curl Continue reading
Over the years many things have contributed to the success of Ansible, including the flexibility of the tool itself, and a vibrant community that has contributed nearly 1,700 modules to the Ansible project, and imported nearly 17,000 roles to Ansible Galaxy. Not sure where to start or need an example of how to automate a thing? There’s probably a module for that and a few roles on Galaxy to get you started. This is all thanks to the community!
Since its inception, the Galaxy website hasn’t really changed much. There’s been a few minor releases with bug fixes here and there, but nothing big and exciting. For much of its existence, Galaxy has been maintained by the community team to keep it humming along as an open hub for the publishing of shared Ansible roles. In this way, Galaxy helps to facilitate the community’s enthusiasm for sharing Ansible roles.
Now, we’re changing up the status quo, with some big, cool updates planned for Galaxy. The goal is to make it an even better place for the community and partners to find and share Ansible content. Today, the expanded and dedicated Galaxy team is pleased to announce the release of an Continue reading
We’re excited to share the release of Docker 18.06 Community Edition (CE) and also share some changes that will be implemented in the next release. Based on feedback we’ve been hearing from the community, we are implementing some changes to deliver higher quality Community Edition (CE) releases, while also providing faster access to new features as they get added:
As a result of these changes, Docker 18.06 CE will be the last release with a 4-month maintenance lifecycle. The planned Docker 18.09 CE release will be supported for 7 months with Docker 19.03 CE being the next release in line. Further, the monthly Edge releases of Docker CE (Engine) are now replaced with nightly builds. Note that Docker Desktop (Docker for Mac, Docker for Windows) edge channels will still provide monthly updates.
We will be delivering a more thoroughly tested Docker CE release twice a year instead of quarterly. We will also be separating the packaging for different operating systems from the Continue reading
In case there was any question whether Spousetivities would be present at VMworld 2018, let this settle it for you: Spousetivities will be there! In fact, registration for Spousetivities at VMworld 2018 is already open. If previous years are any indication, there’s a really good possibility these activities will sell out. Better get your tickets sooner rather than later!
This year’s activities are funded in part by the generous and community-minded support of Veeam, ActualTech Media, Datrium, and VMUG.
Here’s a brief peek at what’s planned for VMworld in Las Vegas this August:
Monday, August 27
Tuesday, August 28
We condensed the Python Kubernetes/OpenShift client from 400,000 lines of code to 500, while adding features and closing nearly all known bugs. The new Kubernetes modules shipping in Ansible 2.6 support all resources the Kubernetes server supports, and fix nearly all the bugs that were in the 2.5 k8s_raw and openshift_raw modules. If you want to control your Kubernetes infrastructure with Ansible, now is a very good time to give it a try.
For anyone who has not followed the process of adding Kubernetes support to Ansible, this is actually our third attempt. With this iteration, we have finally worked out a lot of the kinks that made the modules difficult to use. Here’s a brief synopsis of the history of the project:
Generated client, generated modules
Our first iteration was backed by a generated OpenShift Python client, based on the existing Kubernetes Python client. This Python client ingested the OpenAPI spec for the OpenShift/Kubernetes API and generated one or more modules per resource type. Due to the size of the API, this resulted in ~400,000 lines of generated code.
The Ansible Kubernetes modules were in turn generated from the generated client, so for Continue reading
In the first blog post about the experimental Docker Application Packages, Gareth showed how our new open-source docker-app can be used to augment Compose files by adding metadata and separate settings.
Now that you know how to create an Application Package, how do you share it? Using a Docker registry solution like Docker Hub or Docker Enterprise of course! Let’s look at an example that works with the latest release of docker-app
. Here’s a simple single-file format Application Package with the filename hello.dockerapp
:
# This section contains your application metadata. version: 0.1.0 name: hello description: "A simple HTTP echo server" maintainers: - name: Chris Crone email: [email protected] targets: swarm: true kubernetes: true --- # This section contains the Compose file that describes your application services. version: '3.6' services: hello: image: hashicorp/http-echo:${version} command: ["-text", "${text}"] ports: - ${port}:5678 --- # This section contains the default values for your application settings. port: 5678 text: hello development version: latest
We can save this Application Package as a Docker image using the save
command:
$ docker-app save Saved application as image: hello.dockerapp:0. Continue reading
I don’t know if “additive” is the right word, but it was the best word I could come up with to describe the sort of configuration I recently needed to address in Ansible. In retrospect, the solution seems pretty straightforward, but I’ll include it here just in case it proves useful to someone else. If nothing else, it will at least show some interesting things that can be done with Ansible and Jinja2 templates.
First, allow me to explain the problem I was trying to solve. As you may know, Kubernetes 1.11 was recently released, and along with it a new version of kubeadm
, the tool for bootstrapping Kubernetes clusters. As part of the new release, the Kubernetes community released a new setup guide for using kubeadm
to create a highly available cluster. This setup guide uses new functionality in kubeadm
to allow you to create “stacked masters” (control plane nodes running both the Kubernetes components as well as the etcd key-value store). Because of the way etcd clusters work, and because of the way you create HA control plane members, the process requires that you start with a single etcd node, then add the second node, and Continue reading
Welcome to Technology Short Take 102! I normally try to get these things published biweekly (every other Friday), but this one has taken quite a bit longer to get published. It’s no one’s fault but my own! In any event, I hope that you’re able to find something useful among the links below.
network-engine
command parser to parse the output of commands on network devices. It looks like there will be a follow-up to this article as well, so you may want to check back on Ajay’s site.Hello! My name is Rémy Léone and I am a Cloud Developer Evangelist at Scaleway. I’ve written this post to let you know that support for Scaleway services are now available natively in the Ansible Project with the release of Ansible version 2.6.
Scaleway’s goal is to help developers get cloud resources as easily as possible. Developing support for our services using well-known tools such as Ansible is one of our top priorities for user engagement. In this article, I’ll discuss the different Scaleway modules and demonstrate how to natively manage your Scaleway resources in your Ansible Playbooks.
---
Connection to Scaleway Compute nodes use Secure Shell. SSH keys are stored at the account level, which means that you can re-use the same SSH key in multiple nodes. The first step to configure Scaleway compute resources is to have at least one SSH key configured.
scaleway_sshkeys
is an Ansible module that manages SSH keys on your Scaleway account. You can add an SSH key to your account by including the following task in a playbook:
- name: "Add SSH key"
scaleway_sshkey:
ssh_pub_key: "ssh-rsa AAAA..."
state: "present"
The ssh_pub_key
parameter contains Continue reading
Docker container platforms are being used to support mission-critical efforts all over the world. The Planetary Defense Coordination Office out of NASA is using Docker’s platform to support a critical mission that could potentially affect everyone on the planet! The office is responsible for tracking near-earth asteroids, characterizing them and determining how to deflect them if one were to find its way to earth.
DART, led by the Johns Hopkins Applied Physics Laboratory by way of NASA, is the Double Asteroid Redirection Test. The team has chosen a potentially hazardous asteroid to hit in order to measure the impact and determine how effective this type of mission would be.
Developing the software for this mission is no easy feat, because space is hard! The team has one shot to make this mission work, there’s no rebooting in space. Space physics constraints lead to very low bandwidth, and low density memory due to the turbulent effects of radiation. So what did the software team want to solve for using Docker? Hardware scarcity. The development systems used in this project are very expensive ($300K), so not every developer is going to get their own system. This led to a time constraint, Continue reading
Jabil, one of world’s most technologically advanced manufacturing solutions provider with over 100 sites in 29 countries is embarking on a digital journey to modernize their technology infrastructure so the company is better able to deliver the right solutions at the right time to their global customer base.
As Jabil embarked on their digital journey with a cloud-first approach in mind, they investigated how to best migrate their applications to the cloud. Jabil partnered with Docker and Microsoft to leverage Docker Enterprise Edition with Windows Server 2016 and Microsoft Azure for this initiative through Docker’s Modernize Traditional Application (MTA) Program – starting with a .NET 4.5 monitoring application to containerize.
Since completing the initial POC, Jabil has continued containerizing more applications and has started scaling their Docker Enterprise usage globally. Sujay Pillai, a Senior DevOps Engineer at Jabil, participated at DockerCon SF 2018 in June and shared with the attendees insights on how Jabil is scaling Docker Enterprise Edition.
One growing use case for Jabil is monitoring of the manufacturing floors. Jabil uses lightweight edge devices to run the monitoring Continue reading