I've got a setup with several microservices including a frontend, backend, databases, caching services, and a gateway. We're using docker-compose for local development and helm charts for our distributed deployments. I'm trying to figure out if there's a way to package all these microservices into a self-contained binary so we can deploy it in a bare metal environment without root access. I started looking into GitLab Omnibus but haven't gotten very far. Any suggestions or guidance would be super helpful!
1 Answer
The manifests you’re dealing with are essentially YAML files, which can act like a single binary. They contain instructions for Kubernetes APIs to make changes, including pulling containers to run on nodes. To start, you’ll want to set up a registry within your cluster. This involves pulling the images for the registry on a machine with internet access, handling security, and then using tools like crictl and ctr to package the image, transfer it to a node, and then import it. This lets your manifests reference the local registry instead. It’s a bit of work, but it’s a solid approach for keeping stuff off the internet.
The catch is that in my case, the target environment is isolated, meaning I can't access any external artifact repositories or even use a full Docker runtime—maybe just rootless Docker or Podman.