我遇到了Skaffold,试图简化当地码头形象的发展。我们基本上希望能够快速迭代图像,并使用现有的稳定舵机图表版本来部署它。
文件中说:
https://github.com/GoogleContainerTools/skaffold#installation
但是,当我试图运行示例examples/helm-deployment时,它实际上试图连接到注册表:
$ skaffold dev
...
The push refers to repository [docker.io/library/skaffold-helm]
b3fb485368bf: Preparing
6f67560e4591: Preparing
d626a8ad97a1: Preparing
WARN[0012] run: build: build step: running push: denied: requested access to the resource is denied我是否总是需要一个注册表,甚至使用Minikube和Skaffold?
发布于 2018-05-15 22:22:40
不,你不需要外部注册表。
使用下面的命令,您应该能够在主机mac/linux机器上使用docker,并与minikube中的docker守护进程对话:
eval $(minikube docker-env)当docker build时,图像直接在迷你库中创建。
发布于 2018-06-19 20:49:16
使用skaffold,您不需要任何注册表,如果您想部署到minikube。默认情况下,它不需要任何外部注册表就可以将图像无缝放置到minikube。
考虑以下deployment.yaml文件:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: petstore-frontend
labels:
app: petstore
tier: frontend
spec:
replicas: 1
selector:
matchLabels:
app: petstore
tier: frontend
template:
metadata:
labels:
app: foo
tier: frontend
spec:
containers:
- name: frontend
image: petstore/frontend
imagePullPolicy: Always
ports:
- containerPort: 80请注意,image字段不包含任何标记,因为skaffold将为您注入一个标记。
最小的skaffold.yaml文件如下所示:
apiVersion: skaffold/v1alpha2
kind: Config
profiles:
- name: minikube
build:
artifacts:
- imageName: petstore/frontend
deploy:
manifests:
- deployment.yaml在这里,imageName应该与deployment.yaml文件中的image字段值匹配。
现在您只需运行skaffold run -p minikube,它将构建您的映像,并将其放到minikube并应用部署。
不过,在通过Helm图表进行部署时,您还需要指定一些很小但很重要的东西。
考虑下面的deployment.yaml模板(为了简洁起见,我省略了一些字段):
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ template "petstore-frontend.fullname" . }}
labels:
# <labels>
spec:
replicas: 1
selector:
matchLabels:
# <labels>
template:
metadata:
labels:
# <labels>
spec:
containers:
- name: {{ template "petstore-frontend.name" . }}
image: {{ .Values.image.repository }}{{ if .Values.image.tag }}:{{ .Values.image.tag }}{{ end }}
imagePullPolicy: Always
ports:
- containerPort: 80重要的是有可能指定没有任何标记的图像,所以skaffold可以为您注入它。
然后,skaffold.yaml文件将如下所示:
apiVersion: skaffold/v1alpha2
kind: Config
profiles:
- name: minikube
build:
artifacts:
- imageName: petstore/frontend
deploy:
helm:
releases:
- name: petstore-frontend
chartPath: charts/petstore-frontend
values:
"image.repository": petstore/frontend
setValues:
"image.tag": ""在这里,image.repository应该与artifacts部分中的imageName完全相同,而且image.tag也被设置为空字符串,正如上面所说的,允许skaffold将其注入。
总之,值得注意的是,skaffold仍然在alpha中,所以API可能会改变,也许不再需要“技巧”了。尽管如此,skaffold已经为快速应用程序的开发和部署提供了很多便利。
我希望这能帮到你。
https://stackoverflow.com/questions/50359633
复制相似问题