プロジェクトを対象にしたリソース


Config Connector は、プロジェクト、フォルダ、組織レベルでリソースを管理できます。Config Connector は、リソースを作成する場所を決定するために、リソース仕様でスコープを定義するフィールドリを確認し、見つからない場合は、スコープを定義するアノテーションを確認します。

projectRef フィールドを指定する

プロジェクト スコープの Config Connector リソースの大半は、その CRD 仕様で projectRef という名前のフィールドをサポートしています。このフィールドを使用して、リソースを作成する Google Cloud プロジェクトを指定します。

Google Cloud プロジェクトもプロジェクト CRD と同じクラスタで管理されている場合は、プロジェクトを Kubernetes リソース リファレンスとして指定できます。

...
spec:
  projectRef:
    name: PROJECT_RESOURCE_NAME
    namespace: PROJECT_RESOURCE_NAMESPACE
...

この方法では、1 回の適用操作で、Config Connector を使用して、子リソースを含む Google Cloud プロジェクトを作成できます。プロジェクトの Kubernetes リソースがプロジェクト スコープのリソースと同じ Kubernetes Namespace にある場合、Namespace フィールドは省略可能です。

Google Cloud プロジェクトが同じクラスタで Kubernetes リソースとして管理されていない場合は、external フィールドを使用してプロジェクト ID を直接指定できます。値の厳密な形式は、リソースタイプによって異なる場合があります。最も一般的な 2 つの形式は「PROJECT_ID」と「projects/PROJECT_ID」です。「projects/PROJECT_ID」の例を以下に示します。

...
spec:
  projectRef:
    external: "projects/PROJECT_ID"
...

リソース構成にアノテーションを付ける

Config Connector リソースがプロジェクト スコープとなっているが projectRef フィールドをサポートしていない場合は、project-id アノテーションを使用してプロジェクト ID をリソース構成に設定できます。

...
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
...

以下に掲載しているのは、このアノテーションを含む FooBar リソースの YAML の表示例です。

apiVersion: foo.cnrm.cloud.google.com/v1beta1
kind: FooBar
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: foobarname

名前空間構成にアノテーションを付ける

Kubernetes 名前空間にアノテーションを付けることにより、新しく作成されるリソースのデフォルト プロジェクト ID を設定できます。名前空間内のいずれかのリソースに、このアノテーションが独自の構成で明示的に設定されている場合、リソースレベルのアノテーションは名前空間レベルのアノテーションを上書きします。

コマンドラインを使用して名前空間にアノテーションを付けるには、次のコマンドを実行します。

kubectl annotate namespace NAMESPACE_NAME cnrm.cloud.google.com/project-id=PROJECT_ID

以下を置き換えます。

  • NAMESPACE_NAME: 名前空間名
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID

または、アノテーションを含む YAML マニフェストを適用することもできます。以下の YAML をファイルにコピーします。

apiVersion: v1
kind: Namespace
metadata:
  annotations:
    cnrm.cloud.google.com/project-id: PROJECT_ID
  name: NAMESPACE_NAME

以下を置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • NAMESPACE_NAME: 名前空間名

ファイルを作成したら、それをクラスタに適用します。

プロジェクト ID として名前空間名を使用する

リソース、名前空間のいずれもプロジェクト ID を指定しない場合、Config Connector は名前空間の名前をプロジェクト ID として使用します。 このデフォルトの動作は Config Connector でサポートされていますが、プロジェクト ID の暗黙的なデフォルトが混乱する可能性があるため、おすすめしません。