非構造化リポジトリの使用

非構造化リポジトリを作成すると、デフォルトのリポジトリ ディレクトリ構造に従わずに、任意でリポジトリを編成できます。Anthos Config Management は、デフォルトの階層リポジトリのように、同じ Kubernetes オブジェクトのセットをクラスタに同期します。

これにより、既存の Kubernetes 構成を Anthos Config Management リポジトリと同期できます。たとえば、Helm チャートをクラスタに同期する場合は、helm template を実行して、レンダリングされたマニフェストをレポジトリに commit できます。

制限事項

非構造化リポジトリは、Anthos Config Management 機能のすべてをサポートしていません。このセクションでは、階層リポジトリと非構造化リポジトリの主な違いについて説明します。

サポートされないオブジェクト

非構造化リポジトリでは RepoHierarchyConfig Kubernetes オブジェクトを使用できません。

名前空間スコープ オブジェクト

抽象名前空間は、非構造化リポジトリではサポートされていません。

非構造化リポジトリでは、すべての名前空間スコープ オブジェクトは、metadata.namespace または NamespaceSelector アノテーションのどちらかを宣言する必要があります。両方のアノテーションの宣言は無効です。名前空間スコープのリソースが metadata.namespace または NamespaceSelector アノテーションを宣言していない場合、Anthos Config Management はクラスタの「デフォルト」名前空間を使用します。 NamespaceSelector のセマンティクスについては、次のセレクタをご覧ください。

セレクタ

ClusterSelector と NamespaceSelector は非構造化リポジトリで宣言できます。

非構造化リポジトリでは、ClusterSelectors は正常に機能します。

非構造化リポジトリでは、NamespaceSelector アノテーションを宣言するオブジェクトは、NamespaceSelector の条件を満たすすべての名前空間に適用されます。以前に階層リポジトリで使用されていたオブジェクトを使用して非構造化リポジトリを作成する前に、NamespaceSelectors によって追加リソースが適用されていないことを確認してください。

非構造化リポジトリの構成

非構造化リポジトリを構成するには、config-management.yamlspec.sourceFormat の値を unstructured に設定します。

たとえば、以下の config-management.yaml はサンプルの継続的インテグレーション パイプラインを設定します。

# config-management.yaml

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/ 
    syncBranch: 1.0.0
    secretType: ssh
    policyDir: ci-pipeline-unstructured
  sourceFormat: unstructured

次のステップ

継続的インテグレーション パイプライン内の非構造化リポジトリの例を確認する。