次の方法で共有


GitOps (Flux v2) でサポートされているパラメーター

Azure では、Azure Kubernetes Service (AKS) および Azure Arc 対応 Kubernetes クラスターと連携する GitOps を使用した自動アプリケーション デプロイ機能を提供しています。 Flux v2 を使用した GitOps を使用すると、クラスター構成とアプリケーションのデプロイの信頼できるソースとして Git リポジトリを使用できます。 詳細については、「 GitOps を使用したアプリケーションのデプロイ (Flux v2)」 および 「チュートリアル: Flux v2 で GitOps を使用してアプリケーションをデプロイする」を参照してください。

Azure Arc 対応 Kubernetes または Azure Kubernetes Service 上の GitOps では、さまざまなシナリオを可能にするために多くのパラメーターをサポートする一般的なオープンソース ツール セット である Flux を使用します。 Flux がサポートするすべてのパラメーターの説明については、 Flux の公式ドキュメントを参照してください。

Azure の Flux でサポートされているすべてのパラメーターについては、 az k8s-configuration ドキュメントを参照してください。 この実装では、Flux がサポートするすべてのパラメーターが現在サポートされているわけではありません。 必要なパラメーターが Azure の実装にない場合はお知らせください。

この記事では、 az k8s-configuration flux create コマンドで使用できるパラメーターと引数の一部について説明します。 Azure CLI の -h パラメーター (az k8s-configuration flux -haz k8s-configuration flux create -hなど) を使用して、az k8s-configuration fluxのパラメーターの完全な一覧を表示することもできます。

ヒント

サポートされていないパラメーターを使用して Flux リソースをデプロイする回避策は、Git リポジトリ内に必要な Flux カスタム リソース ( GitRepositoryKustomization など) を定義することです。 az k8s-configuration flux create コマンドを使用して、これらのリソースをデプロイします。 その後も、Azure Arc UI を使用して Flux リソースにアクセスできます。

構成の一般的な引数

パラメーター フォーマット 注記
--cluster-name-c Azure のクラスター リソースの名前。
--cluster-type-t 使用できる値: connectedClustersmanagedClusters Azure Arc 対応 Kubernetes クラスターの場合は connectedClusters 、AKS クラスターには managedClusters を使用します。
--resource-group-g クラスター リソースを保持する Azure リソース グループの名前。
--name-n Azure の Flux 構成の名前。
--namespace--ns 構成をデプロイする名前空間の名前。 既定値: default
--scope-s オペレーターのアクセス許可スコープ。 指定できる値は、 cluster (フル アクセス) または namespace (制限付きアクセス) です。 既定値: cluster
--suspend フラグ この Flux 構成で定義されているすべてのソース調整と kustomize 調整を中断します。 中断の時点でアクティブな調整は続行されます。

ソースの一般的な引数

パラメーター フォーマット 注記
--kind 調整するソースの種類。 使用できる値: bucketgitazblob。 既定値: git
--timeout golang 期間の形式 タイムアウトするまでのソースの調整を試みる最大時間。既定値: 10m
--sync-interval--interval golang 期間の形式 クラスター上のソースの調整間の時間。 既定値: 10m

Git リポジトリのソース参照引数

パラメーター フォーマット 注記
--branch クラスターに同期する Git ソース内のブランチ。 既定値: master。 新しいリポジトリには、 mainという名前のルート ブランチがある場合があります。その場合は、 --branch=mainを設定する必要があります。
--tag クラスターに同期するように Git ソース内でタグを付ける。 例: --tag=3.2.0
--semver Git タグ semver クラスターに同期する Git ソース内の範囲です。 例: --semver=">=3.1.0-rc.1 <3.2.0"
--commit Git ソース内で SHA をコミットしてクラスターに同期します。 例: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a

詳細については、 Git リポジトリのチェックアウト戦略に関する Flux ドキュメントを参照してください。

パブリック Git リポジトリ

パラメーター フォーマット 注記
--url-u http[s]://server/repo[.git] クラスターと調整する Git リポジトリ ソースの URL。

SSH を使用したプライベート Git リポジトリ

重要

Azure DevOps は、SSH を使用して Azure リポジトリに接続するための暗号化方法として、 SSH-RSA の廃止を発表 しました。 SSH キーを使用して Flux 構成の Azure リポジトリに接続する場合は、より安全な RSA-SHA2-256 または RSA-SHA2-512 キーに移行することをお勧めします。 詳細については、Azure DevOps SSH-RSA の非推奨に関するページをご覧ください。

SSH キーと Flux によって作成されたキーを含むプライベート Git リポジトリ

Flux によって生成された公開キーを、利用している Git サービス プロバイダーのユーザー アカウントに追加します。

パラメーター フォーマット 注記
--url-u ssh://user@server/repo[.git] git@ は、公開キーがユーザー アカウントではなくリポジトリに関連付けられている場合は、 user@ を置き換える必要があります。

SSH とユーザーが指定したキーを使用したプライベート Git リポジトリ

独自の秘密キーを直接使用するか、ファイルから使用します。 キーは PEM 形式 で、改行 (\n) で終わる必要があります。

関連付けられている公開キーを、利用している Git サービス プロバイダーのユーザー アカウントに追加します。

パラメーター フォーマット 注記
--url-u ssh://user@server/repo[.git] git@ は、公開キーがユーザー アカウントではなくリポジトリに関連付けられている場合は、 user@ を置き換える必要があります。
--ssh-private-key PEM 形式の Base64 キー キーを直接指定します。
--ssh-private-key-file ローカル ファイルへの完全パス PEM 形式のキーを含むローカル ファイルへの完全なパスを指定します。

SSH とユーザー指定の既知のホストを使用したプライベート Git ホスト

Flux 演算子は、 known_hosts ファイル内の一般的な Git ホストの一覧を保持します。 Flux では、SSH 接続を確立する前に、この情報を使用して Git リポジトリを認証します。 一般的でない Git リポジトリまたは独自の Git ホストを使用している場合は、Flux がリポジトリを識別できるようにホスト キーを指定できます。

秘密キーの場合と同様に、known_hosts の内容は、直接指定することも、ファイルで指定することもできます。 独自のコンテンツを提供する場合は、上記の SSH キー シナリオと共に、 known_hosts コンテンツ形式の仕様を使用します。

パラメーター フォーマット 注記
--url-u ssh://user@server/repo[.git] git@user@を置き換えることができます。
--known-hosts Base64 文字列 known_hostsコンテンツを直接提供します。
--known-hosts-file ローカル ファイルへの完全パス ローカル ファイル known_hosts コンテンツを指定します。

HTTPS ユーザーとキーを含むプライベート Git リポジトリ

パラメーター フォーマット 注記
--url-u https://server/repo[.git] 基本認証を使用した HTTPS。
--https-user 未加工の文字列 HTTPS ユーザー名。
--https-key 未加工の文字列 HTTPS 個人用アクセス トークンまたはパスワード。

HTTPS CA 証明書を含むプライベート Git リポジトリ

パラメーター フォーマット 注記
--url-u https://server/repo[.git] 基本認証を使用した HTTPS。
--https-ca-cert Base64 文字列 TLS 通信用の CA 証明書。
--https-ca-cert-file ローカル ファイルへの完全パス ローカル ファイルに CA 証明書の内容を指定します。

バケットソース引数

ソース bucket 使用する場合は、バケット固有のコマンド引数を次に示します。

パラメーター フォーマット 注記
--url-u URL 文字列 bucketの URL。 サポートされている形式: http://https://
--bucket-name 同期する bucket の名前。
--bucket-access-key bucketでの認証に使用されるアクセス キー ID。
--bucket-secret-key bucketで認証するために使用されるシークレット キー。
--bucket-insecure ボーリアン TLS なしで bucket と通信します。 指定しない場合は false と見なされます。指定されている場合は true と見なされます。

Azure Blob Storage アカウントのソース引数

ソース azblob 使用する場合は、BLOB 固有のコマンド引数を次に示します。

パラメーター フォーマット 注記
--url-u URL 文字列 azblobの URL。
--container-name 同期する Azure Blob Storage コンテナーの名前
--sp_client_id この認証方法に必要な、Azure BLOB を使用してサービス プリンシパルを認証するためのクライアント ID
--sp_tenant_id この認証方法に必要な、Azure BLOB を使用してサービス プリンシパルを認証するためのテナント ID
--sp_client_secret Azure BLOB を使用してサービス プリンシパルを認証するためのクライアント シークレット
--sp_client_cert Azure BLOB を使用してサービス プリンシパルを認証するための Base64 でエンコードされたクライアント証明書
--sp_client_cert_password Azure BLOB でサービス プリンシパルを認証するために使用するクライアント証明書のパスワード
--sp_client_cert_send_chain クライアント証明書のサブジェクト名/発行者ベースの認証を有効にするトークンを取得するときに、クライアント要求に x5c ヘッダーを含めるかどうかを指定します
--account_key 認証用の Azure BLOB 共有キー
--sas_token 認証用の Azure BLOB SAS トークン
--managed-identity-client-id Azure BLOB を使用した認証用のマネージド ID のクライアント ID

重要

AKS クラスターと azblob ソースにマネージド ID 認証を使用する場合は、少なくとも ストレージ BLOB データ閲覧者 ロールをマネージド ID に割り当てる必要があります。 マネージド ID を使用した認証は、Azure Arc 対応 Kubernetes クラスターではまだ使用できません。

ソースを使用した認証用のローカル シークレット

gitbucket、またはazBlob ソースでの認証には、ローカルの Kubernetes シークレットを使用できます。 ローカル シークレットには、ソースに必要なすべての認証パラメーターが含まれている必要があり、Flux 構成と同じ名前空間に作成する必要があります。

パラメーター フォーマット 注記
--local-auth-ref--local-ref ソースでの認証に使用する Flux 構成名前空間の Kubernetes シークレットへのローカル参照。

HTTPS 認証の場合は、 usernamepasswordを使用してシークレットを作成します。

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>

SSH 認証の場合は、 identity フィールドと known_hosts フィールドを使用してシークレットを作成します。

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts

重要

Azure DevOps は、SSH を使用して Azure リポジトリに接続するための暗号化方法として、 SSH-RSA の廃止を発表 しました。 SSH キーを使用して Flux 構成の Azure リポジトリに接続する場合は、より安全な RSA-SHA2-256 または RSA-SHA2-512 キーに移行することをお勧めします。 詳細については、Azure DevOps SSH-RSA の非推奨に関するページをご覧ください。

どちらの場合も、Flux 構成を作成するときに、他の認証パラメーターの代わりに --local-auth-ref my-custom-secret を使用します。

az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret

次の認証方法でローカル Kubernetes シークレットを使用する方法の詳細を確認します。

Flux がプロキシ経由でソースにアクセスする必要がある場合は、プロキシ設定で Azure Arc エージェントを更新する必要があります。 詳細については、「送信プロキシ サーバーを使用して接続する」を参照してください。

Git の実装

Git を実装するさまざまなリポジトリ プロバイダーをサポートするために、Flux は 2 つの Git ライブラリ ( go-git または libgit2) のいずれかを使用するように構成できます。 詳細については、Flux の ドキュメントを参照してください

Flux v2 の GitOps 実装により、パブリック クラウド リポジトリに使用するライブラリが自動的に決定されます。

  • GitHub、GitLab、および BitBucket リポジトリの場合、Flux では go-gitが使用されます。
  • Azure DevOps とその他のすべてのリポジトリの場合、Flux は libgit2を使用します。

オンプレミス リポジトリの場合、Flux は libgit2を使用します。

カスタマイゼーション

Kustomization は Flux 構成用に作成された設定で、クラスターに調整されるソース リポジトリ内の特定のパスを選択できます。 この指定したパスに 'kustomization.yaml ファイルを作成する必要はありません。 既定では、このパス内のすべてのマニフェストが調整されます。 ただし、このリポジトリ パスで使用できるアプリケーションの Kustomize オーバーレイを作成する場合は、Flux 構成用に Kustomize ファイル を git で作成して使用する必要があります。

az k8s-configuration flux kustomization createを使用すると、構成中に 1 つ以上の kustomization を作成できます。

パラメーター フォーマット 注記
--kustomization 値なし kustomization を構成するパラメーターの文字列の先頭。 これを複数回使用して、複数の kustomization を作成できます。
name この kustomization の一意の名前。
path クラスターと調整する Git リポジトリ内のパス。 既定値はブランチの最上位レベルです。
prune ボーリアン 既定値は false です。 クラスターにデプロイされた Flux オブジェクトがリポジトリから削除された場合、または Flux 構成または kustomization が削除された場合に、そのオブジェクトが確実にクリーンアップされるように prune=true 設定します。 prune=trueの使用は、ユーザーがクラスターにアクセスできない環境で重要であり、Git リポジトリ経由でのみ変更を加えることができます。
depends_on このカスタマイゼーションが整合される前に整合される必要があるこの構成内の1つ以上のカスタマイゼーションの名前。 たとえば、 depends_on=["kustomization1","kustomization2"]と指定します。 依存 kustomization を持つ kustomization を削除すると、依存する kustomization の状態が DependencyNotReadyになり、調整が停止します。
timeout golang 期間の形式 既定値: 10m
sync_interval golang 期間の形式 既定値: 10m
retry_interval golang 期間の形式 既定値: 10m
validation 値: noneclientserver。 既定値: none。 詳細については 、Flux のドキュメント を参照してください。
force ボーリアン 既定値: falseforce=true設定すると、変更できないフィールドの変更が原因で修正プログラムの適用が失敗したときにリソースを再作成するように kustomize コントローラーに指示します。

また、 az k8s-configuration flux kustomization を使用して、Flux 構成の kustomization を更新、一覧表示、表示、削除することもできます。

次のステップ