Weekly Padgett

No. 0191 min read

Containers across 112 plants: green doesn't mean go, kiddos

At Jabil, I containerized iFactory applications and helped automate releases across about 112 plants. Somebody still has to trust the damned release.

A person in blue coveralls handles a metal container connected by a thick hose to industrial machinery.
File photoDramatization. No docker was harmed.

You can put an application in a container, but the person responsible for keeping a plant running still has to live with whatever you deploy after your pipeline turns green.

At Jabil[1]Ref. 1Jabil jabil.com, I containerized all the iFactory applications with Docker[2]Ref. 2Docker docker.com and deployed them on Kubernetes[3]Ref. 3Kubernetes kubernetes.io. The platform served a global manufacturing footprint of approximately 112 plants. I was the Senior Infrastructure Automation Engineer from March 2018 through May 2019.

A container image gives your application a packaged filesystem and a defined starting point. Less dependence on somebody remembering which library they installed on a server, which I appreciate. Network access, secrets, persistent storage and external services still live outside that neat little image, though.

Kubernetes declares workloads and keeps their running state close to the desired state. It can replace a failed container, but it can't tell you whether the business transaction that container was processing is now correct. After the damned thing restarts we still need to find out what happened.

I built build and release pipelines in Azure DevOps[4]Ref. 4Azure DevOps azure.microsoft.com and Octopus Deploy[5]Ref. 5Octopus Deploy octopus.com, with automated testing gates. Deployment time for critical iFactory infrastructure fell by 50%. Terraform[6]Ref. 6Terraform developer.hashicorp.com and centralized logging helped make builds repeatable and cut deployment errors by 60%.

Building an artifact proves you produced something. A test gate gives you evidence about some of its behavior, and deployment puts it somewhere. I still need verification that it works there, even if the pipeline rolls all of those operations into one green status.

I don't need everyone to enjoy Kubernetes. I need someone else to operate the procedure without having to take my word for it. If all they've got is the pipeline's author saying it's probably fine, I'd rather leave it waiting. My confidence is not a fucking test gate.

References

  1. Jabil jabil.com ↩
  2. Docker docker.com ↩
  3. Kubernetes kubernetes.io ↩
  4. Azure DevOps azure.microsoft.com ↩
  5. Octopus Deploy octopus.com ↩
  6. Terraform developer.hashicorp.com ↩
dockerkubernetesmanufacturingcicdjabil