Share via


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

Azure では、Azure Kubernetes Service (AKS) および Azure Arc 対応 Kubernetes クラスターと連携する GitOps を使用した自動アプリケーション デプロイ機能を提供しています。 Flux v2 を使用した GitOps では、クラスター構成とアプリケーションのデプロイの正しいソースとして Git リポジトリを使用できます。 詳細については、「GitOps (Flux v2) を使用したアプリケーションのデプロイ (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 リソースにアクセスできます。

構成の一般的な引数

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

ソースの一般的な引数

パラメーター Format メモ
--kind String 調整するソースの種類。 許可値: bucketgitazblob。 既定値: git
--timeout golang 期間の形式 タイムアウトまでのソース調整試行の最大時間。既定値: 10m
--sync-interval --interval golang 期間の形式 クラスター上のソースの調整間の時間。 既定値: 10m

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

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

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

パブリック Git リポジトリ

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

プライベート Git リポジトリと SSH

重要

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

SSH および Flux で作成されたキーを使用したプライベート Git リポジトリ

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

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

SSH およびユーザー指定のキーを使用したプライベート Git リポジトリ

独自の秘密キーを直接またはファイルから使用します。 キーは PEM 形式になっていて、末尾に改行文字 (\n) を使用する必要があります。

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

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

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

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

秘密キーの場合と同様に、known_hosts の内容は、直接指定することも、ファイルで指定することもできます。 独自の内容を指定する場合は、known_hosts の内容の形式の仕様を、前述の SSH キーのシナリオのいずれかと共に使用します。

パラメーター Format メモ
--url -u ssh://user@server/repo[.git] user@git@ で置き換えることができます。
--known-hosts Base64 文字列 known_hosts の内容を直接指定します。
--known-hosts-file ローカル ファイルへの完全なパス known_hosts の内容をローカル ファイルに指定します。

HTTPS ユーザーとキーが格納されたプライベート Git リポジトリ

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

HTTPS CA 証明書が格納されたプライベート Git リポジトリ

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

バケット ソースの引数

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

パラメーター Format メモ
--url -u URL 文字列 bucket の URL。 サポートされる形式: http://https://
--bucket-name String 同期する bucket の名前。
--bucket-access-key String bucket で認証のために使用するアクセス キー ID。
--bucket-secret-key String bucket で認証のために使用する秘密キー。
--bucket-insecure ブール型 TLS なしで bucket と通信します。 指定されていない場合は false と見なされます。指定されている場合は true と見なされます。

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

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

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

重要

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

ソースでの認証のためのローカル シークレット

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

パラメーター Format メモ
--local-auth-ref --local-ref String ソースでの認証に使用する、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 認証の場合は、identityknown_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 シークレットを使用する方法の詳細については、以下を参照してください。

Note

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

Git 実装

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

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

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

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

Kustomization

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

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

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

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

次のステップ