この例では、ステージングと本番の 2 つのクラスターがあるシナリオを想定しています。最終的な目標は、Flux と Kustomize を活用して、重複する宣言を最小限に抑えながら 2 つのクラスターを管理することです。 HelmRepository および HelmRelease カスタム リソースを使用してデモ アプリケーションをインストール、テスト、アップグレードするように Flux を構成します。 Flux は Helm リポジトリを監視し、semver 範囲に基づいて Helm バージョンを最新のチャート バージョンに自動的にアップグレードします。 準備flux2-kustomize-helmの例
Kubernetes クラスター バージョン 1.16 以降と kubectl バージョン 1.18 以降が必要になります。ローカルで素早くテストするには、Kubernetes を使用できます。ただし、他の Kubernetes セットアップでも同様に動作します。 このガイドに従うには、GitHub アカウントとリポジトリを作成できる個人アクセス トークンが必要です (repo のすべての権限を確認してください)。 Homebrew を使用して MacOS および Linux に Flux CLI をインストールします。
または、Bash スクリプトを使用して事前コンパイルされたバイナリをダウンロードして CLI をインストールします。
プロジェクト構造Git リポジトリには、次の最上位ディレクトリが含まれています。
アプリの構成構造は次のとおりです。
apps/base/podinfo/ ディレクトリには、両方のクラスターに共通の値を持つ HelmRelease があります。
apps/staging/ ディレクトリには、ステージング固有の値を含む Kustomize パッチがあります。
バージョン: ">=1.0.0-alpha" では、HelmRelease をアルファ、ベータ、プレリリースを含む最新のチャート バージョンに自動的にアップグレードするように Flux を構成することに注意してください。 apps/production/ ディレクトリには、本番環境固有の値を持つ Kustomize パッチがあります。
バージョン: ">=1.0.0" では、HelmRelease を最新の安定したチャート バージョンに自動的にアップグレードするように Flux を構成することに注意してください (アルファ、ベータ、プレリリースは無視されます)。 インフラストラクチャー:
Infrastructure/sources/ ディレクトリには、Helm リポジトリの定義があります。
interval: 5m では、Flux が 5 分ごとに Helm リポジトリ インデックスをプルするように構成されていることに注意してください。インデックスに HelmRelease semver 範囲に一致する新しいチャート バージョンが含まれている場合、Flux はそのバージョンをアップグレードします。 ブートストラップのステージングと本番環境クラスター ディレクトリには Flux 構成が含まれています。
clusters/staging/ ディレクトリには、Kustomization 定義があります。
path: ./apps/staging では、ステージング Kustomize オーバーライドを同期するように Flux を構成し、dependsOn では、アプリケーションをデプロイする前にインフラストラクチャ項目を作成するように Flux に指示することに注意してください。 このリポジトリを個人の GitHub アカウントでフォークし、GitHub アクセス トークン、ユーザー名、リポジトリ名をエクスポートします。
一時クラスターが前提条件を満たしていることを確認します。
kubectl コンテキストをステージング クラスターに設定し、Flux をブートストラップします。
bootstrap コマンドは、clusters/staging/flux-system ディレクトリ内の Flux コンポーネントのマニフェストをコミットし、読み取り専用アクセスを持つ GitHub 上にデプロイ キーを作成して、クラスター内で変更をプルできるようにします。 ステージングにインストールされている Helm リリースに注意してください。
デモ アプリが Ingress 経由でアクセスできることを確認します。
本番環境クラスターのコンテキストとパスを設定して、本番環境で Flux をブートストラップします。
生産調整を監視する:
Kubernetes シークレットの暗号化シークレットを Git リポジトリに安全に保存するには、Mozilla の SOPS CLI を使用して、OpenPGP または KMS で Kubernetes シークレットを暗号化できます。 gnupg と sops をインストールします。
パスフレーズを指定せずに Flux の GPG キーを生成し、GPG キー ID を取得します。
秘密キーを使用してクラスター上に Kubernetes シークレットを作成します。
Kubernetes シークレット マニフェストを生成し、SOP を使用してシークレット データ フィールドを暗号化します。
シークレットをinfrastructure/redis/kustomization.yamlに追加します。
クラスターで復号化を有効にするには、infrastructure.yaml ファイルを編集します。
リポジトリにアクセスできるすべてのユーザーがシークレットを暗号化することはできても、復号化はできないように、公開キーをエクスポートします。
変更をマスター ブランチにプッシュします。
両方のクラスターの redis 名前空間にシークレットが作成されたことを確認します。
Kubernetes シークレットを使用して、Helm リリースに値を提供できます。
Helm リリース値のオーバーライドの詳細については、ドキュメントを参照してください。 クラスターの追加クラスターをフリートに追加する場合は、まずリポジトリをローカルにクローンします。
クラスターの名前でクラスター内にディレクトリを作成します。
ステージングから同期マニフェストをコピーします。
アプリ内に開発オーバーレイを作成するには、clusters/dev/apps.yaml の spec.path を path: ./apps/dev に変更してください。 変更をマスター ブランチにプッシュします。
kubectl コンテキストとパスを開発クラスターに設定し、Flux をブートストラップします。
同じ環境同一の環境を開始する場合は、production-clone などのクラスターをブートストラップし、production 定義を再利用できます。 プロダクションクローン クラスターを起動します。
変更をローカルにプルします。
clusters/production-clone ディレクトリに kustomization.yaml ファイルを作成します。
flux-system kustomize オーバーレイに加えて、プロダクション ディレクトリのインフラストラクチャとアプリのマニフェストも含まれていることに注意してください。 変更をマスター ブランチにプッシュします。
Flux に、production-clone クラスターに実稼働ワークロードをデプロイするように指示します。
|
<<: オラクル、顧客のクラウドへの移行を加速させるOracle Support Rewardsプログラムを開始
>>: Netty を使用して高性能な分散サービス フレームワークを作成する方法は?
[[382196]]序文前回の記事ではRedisの分散ロックの原理と欠点について書きましたが、それだ...
今から 11 月 30 日まで、hostdare のブラック フライデー特別セールが始まりました。割...
百度の入札プロモーションについては皆さんもよくご存知だと思いますが、インターネットを利用する人の数が...
1. 動画サイトでの資金の浪費のプレッシャーは緩和が難しい:広告時間を静かに倍増6月12日早朝のニュ...
メディアのインタビュー記事の要約の中で、Google のスタッフは、一般的にウェブサイトのランキング...
今から 1 月 10 日まで、racknerd は毎年恒例の「新年プロモーション」を開始します。VP...
共同購入サイトの数は3月に357件減少し、半年間で約1,000件減少した。 Admin5 Webma...
Pacificrack は、Broken Station Forum 向けに特別版 VPS をカスタ...
アジア太平洋地域では、エッジ コンピューティングが急速に進化し、企業のイノベーションと競争上の差別化...
グラスドアマッピング25社のプログラマーの年収:アップルは6位に留まる海外メディアの報道によると、調...
[51CTO.com オリジナル記事] はじめに:世界は変化の時代を迎え、雨後の筍のように数多くの新...
vpckrはHostcatで以前紹介されました。主に韓国のVPS(韓国のクラウドサーバー)を販売して...
エッジ コンピューティングは、ユーザーによって意味が異なります。ただし、変わらないのは、場所が重要で...
[51CTO.comからのオリジナル記事] デジタル経済の時代では、シナリオベースの消費、チャネルの...
「教育・研修ウェブサイトにおける悪いユーザーエクスペリエンスの目録(パート 1)」では、主に教育・研...