このヘルム チャートは、ほとんどのパブリック クラウド Kubernetes サービス プロバイダーおよびプライベート Kubernetes インスタンスからのコア ダンプを S3 互換ストレージ サービスに自動的に保存する機能をデプロイするように設計されています。
COTRIBUTING.md には重要な注意事項が記載されていますので、お読みください。コーディング スタイル ガイドラインと開発者証明書に特に注意してください。
私たちはメンバー、貢献者、リーダーとして、年齢、体の大きさ、目に見える障害、目に見えない障害、民族性、性的特徴、性自認と性表現、経験のレベル、教育に関係なく、誰もがハラスメントのないコミュニティに参加できるようにすることを誓約します。 、社会経済的地位、国籍、外見、人種、宗教、または性的アイデンティティと指向。
私たちは、オープンで、歓迎的で、多様性があり、包括的で健全なコミュニティに貢献する方法で行動し、交流することを誓います。
完全な行動規範はここから入手できます
詳細については、チャートの README.md を参照してください。
これは確認済みのテスト対象のマトリックスです。動作することが知られている環境を PR してください
プロバイダー | 製品 | バージョン | 検証されましたか? | 働く? |
AWS | EKS | 1.21 | はい | はい |
AWS | ローザ | 4.8 | はい | はい |
カスタムビルド | K8S | 該当なし | はい | はい |
デジタルオーシャン | K8S | 1.21.5-do.0 | はい | はい |
グーグル | GKE-cos_containerd | 1.20.10-gke.1600 | はい | はい |
グーグル | GKE-Ubuntu | 1.20.10-gke.1600 | はい | はい |
IBM | IKS | 1.19-1.21 | はい | はい |
IBM | ロックス | 4.6-4.8 | はい | はい |
マイクロソフト | AKS | 1.19 | はい | はい |
マイクロソフト | アロ | 4.8 | はい | はい |
レッドハット | オンプレミス | 4.8 | はい | はい |
コア ダンプは可観測性の重要な部分です。
システムの分散化が進むにつれて、コア ダンプは、プログラムが展開されている環境でプログラムが誤動作する理由を理解するための非侵襲的なアプローチをチームに提供します。
コア ダンプはさまざまなシナリオで役立ちますが、次の場合に非常に重要です。
プロセスは有用なスタック トレースなしで終了します
プロセスのメモリが不足しています
アプリケーションが期待どおりに動作しない
コア ダンプに関する従来の問題は次のとおりです。
ダンプ管理のオーバーヘッド
ダンプ分析には、開発者のマシンではすぐに利用できない特定のツールが必要でした。
ダンプには機密情報が含まれる可能性があるため、ダンプへのアクセスを管理します。
このチャートは、クラウド環境で共通のプラットフォーム (K8、ROKS、オブジェクト ストレージ) を利用して面倒な作業を引き受けることで、コア ダンプを取り巻く問題に取り組むことを目的としています。
このチャートでは 2 つのプロセスをデプロイします。
エージェントは、 /proc/sys/kernel/*
構成の更新を管理し、コンポーザー サービスをデプロイし、コンポーザーによって作成されたコア ダンプ zip ファイルをオブジェクト ストレージ インスタンスにアップロードします。
Composer は、コア ダンプの処理と、CRICTL からのランタイム、コンテナー コアダンプ、およびイメージ JSON ドキュメントの作成を処理し、それらを単一の zip ファイルに挿入します。 zip ファイルは、エージェントがアップロードするためにノードのローカル ファイル システムに保存されます。
IBM Cloud Core Dump Handler Helm チャートをインストールすると、以下の Kubernetes リソースが Kubernetes クラスターにデプロイされます。
名前空間: コンポーネントをインストールするために特定の名前空間が作成されます - デフォルトは ibm-observe です
Handler Daemonset : デーモンセットは、クラスター内のすべてのワーカー ノードにポッドをデプロイします。デーモンセットには、昇格されたプロセスがコア パターンを定義してコア ダンプをオブジェクト ストレージに配置し、可能な場合はポッド情報を収集できるようにする構成が含まれています。
特権ポリシー: デーモンセットは、特権が必要となるようにホスト ノードを構成します。
サービス アカウント: デーモンセットを実行するための標準サービス アカウント
Volume Claims : Composer をホストにコピーし、生成されたコア ダンプへのアクセスを有効にするため
クラスター ロール:イベントリソースと作成動詞を使用して作成され、サービス アカウントに関連付けられます。
Helm チャートをクラスターにインストールするには、管理者プラットフォーム ロールが必要です。
このグラフは、特権付き kubernetes デーモンセットをデプロイしており、次のような影響があります。
Kubernetes ノードごとに特権コンテナが自動的に作成され、コア ファイルを読み取ってポッド情報を crictl に問い合わせることができます。
デーモンセットは、基盤となる Linux OS と対話するホストパス機能を使用します。
Composer バイナリがホスト サーバー上でデプロイされ、実行されます。
コア ダンプには機密性の高いランタイム データが含まれる可能性があるため、ストレージ バケットへのアクセスはそれに応じて管理する必要があります。
オブジェクト ストレージ キーはシークレットとして保存され、デーモンセットの環境変数として使用されます。
IBM Cloud コア・ダンプ・ハンドラーを正常に実行するには、各ワーカー・ノードに以下のリソースが必要です。
$ helm delete core-dump-handler --namespace observe
host-name
の永続ボリュームが削除されていることを確認してください $ kubectl get pvc -n observe
$ helm install core-dump-handler . --namespace observe
helm delete core-dump-handler -n observe
イメージdocker build -t YOUR_TAG_NAME .
イメージをコンテナー レジストリにプッシュします
それを使用するには、 values.yaml
ファイル内のコンテナーを更新します。
image :
registry : YOUR_REGISTRY
repository : YOUR_REPOSITORY
tag : YOUR_TAG
または、設定を指定して helm install コマンドを実行します。
--set image.registry=YOUR_REGISTRY
--set image.repository=YOUR_REPOSITORY
--set image.tag=YOUR_TAG
サービスは、rustup を使用して Rust で作成されます。
ローカル単体テストは、ベース フォルダー内のcargo test
を使用して実行できます。
現在、IBM Cloud ROKS と IKS のみがサポートされていますが、他のサービスの統合テストは喜んで実施しますが、リリース前に実行することはできません。
統合テスト ビルドを実行するには、カスタム ビルドの指示に従います。
プロジェクト フォルダーのルートに、次の構成で.env
というファイルを作成します。
S3_ACCESS_KEY=XXXX
S3_SECRET=XXXX
S3_BUCKET_NAME=XXXX
S3_REGION=XXXX
ディレクトリを統合フォルダーに変更してテストを実行します
cd integration
./run-ibm.sh
リリースはプレリリース ブランチ上に構築されます。たとえば、 pre-8.5.0
統合テストは手動で実行され、メインにマージされるとリリースが生成されます。
Github アクションでの kubernetes の統合の信頼性が十分ではないため、現時点ではこれを自動化することはできません。
独自の統合テストでプレリリースをテストしたい場合は、問題を提起してください。テストの実行に協力できます。
問題を探す最初の場所はエージェント コンソールです。インストールが成功すると次のようになります。
[2021-09-08T22:28:43Z INFO core_dump_agent] Setting host location to: /var/mnt/core-dump-handler
[2021-09-08T22:28:43Z INFO core_dump_agent] Current Directory for setup is /app
[2021-09-08T22:28:43Z INFO core_dump_agent] Copying the composer from ./vendor/default/cdc to /var/mnt/core-dump-handler/cdc
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pattern /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pipe_limit /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for fs.suid_dumpable /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pattern=|/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pattern = |/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pipe_limit = 128
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pipe_limit=128
fs.suid_dumpable = 2
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of fs.suid_dumpable=2
[2021-09-08T22:28:43Z INFO core_dump_agent] Creating /var/mnt/core-dump-handler/.env file with LOG_LEVEL=info
[2021-09-08T22:28:43Z INFO core_dump_agent] Executing Agent with location : /var/mnt/core-dump-handler/core
[2021-09-08T22:28:43Z INFO core_dump_agent] Dir Content []
エージェントが正常に実行されている場合は、コンポーザーの構成に問題がある可能性があります。 Composer のログを確認するには、エージェントでシェルを開き、composer.log を cat してエラー メッセージがあるかどうかを確認します。
cat /var/mnt/core-dump-handler/composer.log
エラーがない場合は、values.yaml でデフォルトのログをerror
からdebug
に変更し、チャートを再デプロイする必要があります。コア ダンプを再度作成すると、 /var/mnt/core-dump-handler/composer.log
core-dump-handler/composer.log に各アップロードに関する特定の詳細が含まれるはずです。