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 -h
や az k8s-configuration flux create -h
など) を使用して、az k8s-configuration flux
のパラメータの完全なリストを表示することもできます。
ヒント
サポートされていないパラメーターを使用して Flux リソースをデプロイする回避策は、Git リポジトリ内で必要な Flux カスタム リソース (例えば GitRepository や Kustomization など) を定義することです。 az k8s-configuration flux create
コマンドを使用してこれらのリソースをデプロイします。 その後も、Azure Arc UI を使用して Flux リソースにアクセスできます。
構成の一般的な引数
パラメーター | Format | メモ |
---|---|---|
--cluster-name -c |
String | Azure のクラスタ リソースの名前。 |
--cluster-type -t |
使用できる値: connectedClusters 、 managedClusters |
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 | 調整するソースの種類。 許可値: bucket 、git 、azblob 。 既定値: 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 クラスターではまだ使用できません。
ソースでの認証のためのローカル シークレット
git
、bucket
または azBlob
ソースでの認証のためにローカル Kubernetes シークレットを使用できます。 ローカル シークレットには、ソースに必要なすべての認証パラメーターが含まれている必要があります。また、Flux 構成と同じ名前空間に作成する必要があります。
パラメーター | Format | メモ |
---|---|---|
--local-auth-ref --local-ref |
String | ソースでの認証に使用する、Flux 構成名前空間内の Kubernetes シークレットへのローカル参照。 |
HTTPS 認証の場合は、username
と password
を使用してシークレットを作成します。
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 シークレットを使用する方法の詳細については、以下を参照してください。
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 | 値: none 、client 、server 。 既定値: none 。 詳細については、Flux のドキュメントを参照してください。 |
force |
ブール型 | 既定値: false 。 変更できないフィールドが変更されたことが原因でパッチ適用が失敗した場合に、リソースの再作成を kustomize コントローラーに指示するには、force=true を設定します。 |
また、az k8s-configuration flux kustomization
を使用して、Flux 構成の kustomization を更新、一覧表示、表示、削除することもできます。
次のステップ
- 「AKS および Azure Arc 対応 Kubernetes 用の GitOps (Flux v2) を使用したアプリケーション デプロイ」に関する詳細情報。
- チュートリアルを使用して、AKS または Azure Arc 対応 Kubernetes クラスターで GitOps を有効にする方法をご確認ください。
- GitOps を使用した CI/CD ワークフローをご確認ください。