我们正在尝试通过Skaffold下的几个微服务应用程序来建立本地开发环境。我们使用https://github.com/ahmetb/skaffold-from-laptop-to-cloud上的(略过时)教程,使用基本Skaffold做到了这一点。为了使Skaffold在不使用Helm的情况下将图像推送到本地存储库,我要做的就是将imageName设置为使用类似localhost:5000 / image_name的名称。
但是,有了Helm,...。我建立了一个非常粗糙的Helm安装程序(免责声明:我对Helm不太熟悉),只是更改了skaffold YAML以使用Helm并转储了所有.YAML部署和服务。文件放入Helm图表的/ templates目录,然后被炸毁。
Skaffold然后成功创建依赖于外部库存映像(例如redis)的任何pod,但是每当任何东西使用将从本地Dockerfile生成的映像时,它都会卡住并抛出此错误:
无法提取映像“ localhost:5000 / k8s-skaffold / php-test”:rpc 错误:代码=未知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,但这只是从该映像中提取的。
答案 0 :(得分: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
。服务器是可配置的,但是不幸的是,因为我自己使用cri-o
,所以我不知道如何为“ docker”配置服务器。