我们正在尝试在 Skaffold 下建立一个包含多个微服务应用程序的本地开发环境。我们使用https://github.com/ahmetb/skaffold-from-laptop-to-cloud上的(稍微过时的)教程设法使用基本 Skaffold 做到了这一点。为了让 Skaffold 在没有 Helm 的情况下将图像推送到本地存储库,我所要做的就是将 imageName 设置为使用 localhost:5000/image_name 之类的东西。
但是使用 Helm,嗯.... Helm 图表的 /templates 目录,然后被炸毁了。
然后 Skaffold 成功地创建了任何依赖于股票外部图像(如 redis)的 pod,但是当任何东西使用从本地 Dockerfile 生成的图像时,它就会卡住并抛出这个错误:
无法提取图像“localhost:5000/k8s-skaffold/php-test”:rpc 错误:代码 = 未知 desc = 来自守护进程的错误响应:获取 http://localhost:5000/v2/:拨打 tcp [::1] :5000:连接:连接被拒绝
据我所知,这就是我们没有初始化本地 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,但它只是从该图像中提取的。