4

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 を提供することもできますが、それはそのイメージから取得するだけです。

4

1 に答える 1