如何使用没有Internet访问权限的helm图表

时间:2018-05-15 05:48:30

标签: docker charts deployment kubernetes-helm

我们所有人都知道helm图表令人惊叹,让我们的生活更轻松。

但是,当我想使用helm图表时,我有一个用例 - 没有互联网访问

有两个步骤:

  • 从Git下载图表
  • 从Dockerhub中提取Docker图像(在values.yaml文件中加注)

我该怎么做?

3 个答案:

答案 0 :(得分:0)

我知道问题的第一部分的答案。

您实际上可以从github git clone https://github.com/kubernetes/charts.git所有正式图表,并在您要安装的文件系统上指定图表(文件夹)的路径。

这将采用helmfile

的形式

执行如下命令:

helmfile -f deployment.yaml sync

cat deployment.yaml
...
repositories:
  - name: roboll
    url: http://roboll.io/charts

context: example.int.com                # kube-context (--kube-context)

releases:

  # Prometheus deployment
  - name: my_prometheus              # name of this release
    namespace: monitoring                       # target namespace
    chart: /opt/heml/charts/stable/prometheus                    # the chart being installed to create this release, referenced by `repository/chart` syntax
    values: ["values/values_prometheus_ns_monitoring.yaml"]
    set:                                        # values (--set)
      - name: rbac.create
        value: true
  # Grafana deployment
  - name: my_grafana              # name of this release
    namespace: monitoring                       # target namespace
    chart: /opt/heml/charts/stable/grafana
    values: ["values/values_grafana_ns_monitoring.yaml"]

因此,您可以看到我已指定了一些自定义values_<software>_ns_monitoring.yaml文件。

我原来问题的第二部分仍然是未答复

我希望能够告诉docker在本节中使用本地泊坞窗图片

cat values_grafana_ns_monitoring.yaml

replicas: 1

image:
  repository: grafana/grafana
  tag: 5.0.4
  pullPolicy: IfNotPresent

我设法手动复制/粘贴 - 然后加载docker image 所以它在我的电脑中可见 - 但我无法弄清楚如何说服 docker + helmfile 以使用我的图片。目标是完全处理 offlilne 安装。

任何想法???

 sudo docker images
[sudo] password for jantoth:
REPOSITORY                                                       TAG                 IMAGE ID            CREATED             SIZE
my_made_up_string/custom_grafana/custom_grafana                               5.1.2               917f46a60761        6 days ago          238 MB

答案 1 :(得分:0)

脱机使用舵图需要从互联网上提取该图然后进行安装。

$ helm pull <chart name>
$ ls #The chart will be pulled as a tar to the local directory
$ helm install <whatever release name you want>  <chart name>.tgz

要使此方法正常工作,您将需要图表中提到的所有本地使用的docker镜像。

答案 2 :(得分:0)

无需互联网访问即可从Dockerhub中提取Docker映像

显然,这是不可能的。但是,可以通过将其分为多个阶段来解决该问题:

  1. 将Docker镜像从Dockerhub中拉至具有 Internet访问权限的系统。
  2. 保存docker映像docker save,将它们复制到要脱机安装的目标环境中,然后将映像加载回docker load
  3. 在目标环境中设置docker注册表,然后将docker映像标记/推送到该注册表中。 Local docker registry
  4. 在头盔图表/ kubernetes yaml文件中,更新图像引用以指向本地docker注册表Kubernetes and private docker registry

或者,您可以查看离线打包/部署工具,例如Gravity