1 行だけを含む mock.Dockerfile を作成しました。
FROM eu.gcr.io/some-org/mock-service:0.2.0
その構成とビルド セクションへの参照を使用して、skaffold はプライベート GCR レジストリを使用してその dockerfile をビルドします。ただし、その Dockerfile を削除すると、skaffold はそれをビルドせず、skaffold を起動すると、そのbuild
セクションで参照されているイメージのみが読み込まれます (postgres などのパブリック イメージも同様に機能します)。そのため、minikube などのローカル kubernetes 構成では、これにより
ImagePullBackOff
Failed to pull image "eu.gcr.io/some-org/mock-service:0.2.0": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials
基本的に、1 行の Dockerfile を作成してそれを含めると、skaffold はそのイメージをビルドして minikube にロードします。GCR へのリクエストが成功するように minikube 構成を変更できるようになりましたが、目標は、開発者が minikube 構成を変更する必要がないことです...
構成を変更せず、その1行のDockerfileなしで、そのイメージをMinikubeにロードする他の方法はありますか?
スカフォールド.yaml:
apiVersion: skaffold/v2beta8
kind: Config
metadata:
name: some-service
build:
artifacts:
- image: eu.gcr.io/some-org/some-service
docker:
dockerfile: Dockerfile
- image: eu.gcr.io/some-org/mock-service
docker:
dockerfile: mock.Dockerfile
local: { }
profiles:
- name: mock
activation:
- kubeContext: (minikube|kind-.*|k3d-(.*))
deploy:
helm:
releases:
- name: postgres
chartPath: test/postgres
- name: mock-service
chartPath: test/mock-service
- name: skaffold-some-service
chartPath: helm/some-service
artifactOverrides:
image: eu.gcr.io/some-org/some-service
setValues:
serviceAccount.create: true