如何获取Skaffold和Helm图表以使用本地图像存储库?

问题描述 投票:1回答:1

我们正在尝试使用Skaffold下的几个微服务应用程序建立一个本地开发环境。我们设法使用基础Skaffold,使用https://github.com/ahmetb/skaffold-from-laptop-to-cloud的(稍微过时的)教程。为了让Skaffold将图像推送到没有Helm的本地存储库,我所要做的就是将imageName设置为使用localhost:5000 / image_name之类的东西。

但是使用Helm,好吧......我设置了一个非常粗糙的Helm安装(免责声明:我对Helm还不是很熟悉),只需更改skaffold YAML以使用Helm并将所有.YAML部署和服务文件转储到Helm chart的/ templates目录,并遭到轰炸。

Skaffold然后成功创建任何依赖于库存外部图像(如redis)的pod,但是当任何东西使用从本地Dockerfile生成的图像时,它会卡住并抛出此错误:

无法提取图像“localhost:5000 / k8s-skaffold / php-test”:rpc错误:code = Unknown desc =来自守护程序的错误响应:获取http://localhost:5000/v2/:拨打tcp [:: 1]:5000:connect:连接被拒绝

据我所知,这是我们没有初始化本地Docker镜像存储库时出现的错误 - 但是使用非Helm版本,我们不需要启动本地图像存储库,Skaffold只是制造了魔法发生。这是Skaffold的吸引力的一部分。

那么我们如何自动地让Skaffold创建从本地存储库创建和提取的Helm图表呢? (如上所述,这可能是我对Helm的不熟悉。如果是这样,我道歉。)

Skaffold YAML是这样的:

apiVersion: skaffold/v1beta7
kind: Config
build:
  tagPolicy:
    sha256: {}
  artifacts:
  - image: localhost:5000/k8s-skaffold/php-test
    context: voting-app/php-test  
deploy:
  helm:
    releases:
    - name: php-help-test
      chartPath: helm
      #wait: true
      #valuesFiles:
      #- helm-skaffold-values.yaml
      values:
        image: localhost:5000/k8s-skaffold/php-test
      #recreatePods will pass --recreate-pods to helm upgrade
      #recreatePods: true
      #overrides builds an override values.yaml file to run with the helm deploy
      #overrides:
      # some:
      #   key: someValue
      #setValues get appended to the helm deploy with --set.  
      #setValues:
        #some.key: someValue

Helm Chart values.yaml是生成的图表提供的默认值。如果需要,我也可以提供Dockerfile,但它只是从该图像中提取。

kubernetes kubernetes-helm skaffold
1个回答
1
投票

您不能在图像定义中使用localhost。为了测试,您可以尝试使用运行私有注册表的主机的ip,例如主机是否具有地址222.0.0.2,然后使用image: 222.0.0.2:5000/k8s-skaffold/php-test

硬编码地址当然是不可取的,因此更好的方法是完全省略“主机”部分;

  image: k8s-skaffold/php-test:v0.1

在这种情况下,您的CRI(容器运行时接口)插件将尝试一系列服务器,例如docker.io。服务器是可配置的,但不幸的是我不知道如何为“docker”配置它,因为我自己使用cri-o

© www.soinside.com 2019 - 2024. All rights reserved.