bug(local-dev): local development setup fails on all non-Kind Kubernetes clusters (K3s, Minikube, K3d)
メンテナーはふだん 2 日以内に返信
まだ誰も着手していません。
- #7024 @parthtiw710 による — マージされずにクローズ
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- docker, helm, kubernetes
- 領域
- ci-cd, devops, infrastructure
調査の方向性
Makefile のターゲット run/pipecd と関連するローカルの Helm values から始めて、イメージの公開と host-path ストレージのセットアップを追跡します。次に、Redis、MySQL、MinIO の deployment.yaml テンプレートを調べます。Kind、K3s、K3d、Minikube、およびその他の指定されたディストリビューションで、イメージの取得やストレージ権限に関する失敗なしにローカルセットアップが動作すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
What happened?
The local development environment (run via make run/pipecd and the associated local Helm values) is tightly coupled with Kind. When attempting to start the local development cluster on any non-Kind distribution (such as K3s, Minikube, K3d, or MicroK8s), the setup fails due to registry image pulling and persistent storage permission blockers.
Steps to Reproduce
- Configure your Kubernetes context to point to a local K3s or Minikube cluster.
- Enable local storage by setting
localStorageVolumes.enabled: truein the Helm values. - Run
make run/pipecd. - Observe:
- The cluster fails to pull the newly built PipeCD image (
ErrImagePull) because it cannot reach/resolvelocalhost:5001. - If the image is manually sideloaded, the database (
mysql), cache (redis), and storage (minio) pods crash in a loop withPermission Deniederrors.
- The cluster fails to pull the newly built PipeCD image (
Root Cause
- Registry Hardcoding: The Makefile currently assumes a Kind registry setup and runs a hardcoded
docker push localhost:5001/...to publish images. Other clusters running on isolated runtimes (like containerd in K3s/K3d) cannot resolve this host registry out-of-the-box. - Storage Permissions: HostPath directories (e.g.
/tmp/pipecd-data/*) created by Kubernetes on the host system are owned byroot. However, the MySQL, Redis, and MinIO containers run as non-root users (UID 999 or 1000) and lack write permissions to these directories.
Expected Behavior
The local development setup should be platform-agnostic, supporting K3s, Minikube, K3d, and other distributions seamlessly alongside Kind.
Proposed Solution
- Dynamic Environment Detection in Makefile: Update
run/pipecdto inspect the active Kubernetes context.- For K3s/K3d, save the image and import it directly using
sudo k3s ctr --namespace k8s.io images import. - For Minikube, load the image using
minikube image load. - Fall back to
docker pushonly for Kind/standard setups.
- For K3s/K3d, save the image and import it directly using
- Permission Initialization: Add
initContainersto the Redis, MySQL, and MinIO template deployments indeployment.yamlthat run as root (runAsUser: 0) tochownthe mounted directories to the correct non-root UIDs before the main containers start.
- 主要言語
- Go
- スター
- 1.4k
- フォーク
- 391
- 平均マージ
- 4日 1時間
- マージ済み PR(30日)
- 58
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
pipe-cd/pipecd のほかの issue
-
Applications at the repository root are not triggered by new commits対応中かも @Daksha1611 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 2 日以内に返信
-
pipedv1 kubernetes plugins ignore trafficRouting.istio.host in K8S_TRAFFIC_ROUTING対応中かも @Dhirenderchoudhary が今日担当しました。 オープン
難易度 2/5 半日 初心者へのやさしさ 74/100
pipe-cd/pipecd#7626 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 2 日以内に返信
-
pipectl transfer restore application drops backed-up labels対応中かも @bhavishyajain545 が 2 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
pipe-cd/pipecd#7622 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
メンテナーはふだん 2 日以内に返信
似ている issue
-
needs-triage typo
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
llm-d-incubation/llm-d-scaling-manager#122 ·
メンテナーはふだん 1 日以内に返信
-
good first issue severity: low tech-debt
難易度 2/5 半日 初心者へのやさしさ 75/100
TMHSDigital/subenum#329 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] Backend summarize min() / max() panics when a field has no numeric values対応中かも @weng5e が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
grafana/grafana-infinity-datasource#1832 ·
メンテナーはふだん 1 日以内に返信
-
tech-debt
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
GillMacedo/godebugdiff#13 ·