Good day,
Is there a means (either via a native K8S feature or some apps/hacks/etc. that run on top of K8S) to provide updated applications (i.e. via Helm charts) using an “offline/network installer” method?
For example, let’s consider a simple app I deploy via a Helm chart. This provides the necessary YAML file(s), which indicate with Docker container(s) need to be pulled from a private Docker Registry server/instance. The cluster I’m using (for specific testing reasons) must sometimes go offline for days at a time (i.e. typically isn’t connected to the internet), but we need to pull software updates (i.e. updated Helm charts) regularly, as the beta software I’m testing has bug fixes on a daily basis.
Due to policy reasons, I’m not permitted to connect the K8S cluster (kubeadm-based) to the internet often. I’m trying to find a way to pull a Helm chart, plus the associated Docker containers/images, put it on a USB thumb drive, copy the files to some location on the K8S master, and instruct it to do a normal “helm update” operation, but fall back to retrieving the updates (plus container) from local storage (i.e. a pre-determined location on disk).
Is there some de-facto/“best” way to accomplish this? I have a rough idea how I could fake-out the Helm chart updates, but I haven’t figured out how to fake-out the Docker container/image deployment step. I could manually deploy the image, but the Helm-chart-update stage is still going to try and use the “real” URL to the container, not the localhost-copy.
So far, this is the only relevant document/example I could find on the topic: https://serverfault.com/questions/918061/helm-offline-usage
https://stackoverflow.com/questions/50343089/how-to-use-helm-charts-without-internet-access
Update: tracking in Slack: https://kubernetes.slack.com/archives/C6E3XH1ED/p1565641165125500