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 など) に依存するポッドを正常に作成しますが、ローカルの 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 チャートの values.yaml は、生成されたチャートによって提供されるデフォルトです。必要に応じて Dockerfile を提供することもできますが、それはそのイメージから取得するだけです。