Hierarchy Controller のインストール

このドキュメントでは、Hierarchy Controller のインストールとアンインストールの方法について説明します。このコントローラにより、通常の Kubernetes Namespace を拡張し、Config Sync リポジトリを変更せずに階層型ポリシーと作成が可能になります。

始める前に

Config Sync がすでにインストールされ、Google Kubernetes Engine(GKE)バージョン 1.15.x 以降を実行しているクラスタが必要です。

Hierarchy Controller の有効化

クラスタで Hierarchy Controller を有効にするように Config Sync を構成するには、次の手順に従います。

  1. spec.hierarchyController オブジェクト内の Operator の構成ファイルで、enabled の値を true に設定します。

      # config-management.yaml
    
      apiVersion: configmanagement.gke.io/v1
      kind: ConfigManagement
      metadata:
        name: config-management
      spec:
        # Set to true to enable hierarchical namespaces
        hierarchyController:
          enabled: true
    
        # ...other fields...
    
  2. 構成を適用します。

      kubectl apply -f config-management.yaml
    

    いくつかのワークロードがデプロイされると、Hierarchy Controller がクラスタで使用可能になります。完了するまでに 1 分ほどかかることがあります。

kubectl プラグインのインストール

kubectl などの Kubernetes クライアント ツールを介して Hierarchy Controller を操作できます。ただし、オープンソースの kubectl-hns kubectl プラグインを使用すると、いくつかのタスクが大幅に簡素化されます。このプラグインは、Hierarchy Controller のコンポーネントである Hierarchical Namespace Controller(HNC)の一部です。

このプラグインは、OSS コミュニティで配布されており、現在は Linux と macOS で利用可能です。ワークステーションにインストールするには、次のセクションをご覧ください。

プラグインの必要なバージョンの決定

Config Sync の各リリースは、次の表に示すように OSS プロジェクトのリリースに対応しています。最適な結果を得るには、ダウンロードするプラグインのバージョンが Config Sync のバージョンと一致していることを確認してください。

Config Sync のバージョン kubectl-hns のバージョン
1.5.0 0.5.2
1.4.2 0.5.1
1.4.1 0.5.0
1.4.0 以前 なし

ワークステーションへのプラグインのインストール

  1. 環境変数を、前の表に示した kubectl-hns バージョンに設定します。次に例を示します。

     HNC_VERSION=v0.5.0   # Example for Config Sync 1.4.1
    
  2. プラグインをインストールする場所を選択します。PATH 内のどこにでも置くことができます。

     PLUGIN_DIR=~/kubectl-plugins   # Example path
    
  3. プラグインをダウンロードして実行可能にします。

    Linux

    Config Sync 1.5.0 / HNC v0.5.2 以降:

    curl -L -o ${PLUGIN_DIR}/kubectl-hns \
       https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-${HNC_VERSION}/kubectl-hns_linux_amd64
    chmod +x ${PLUGIN_DIR}/kubectl-hns
    

    Config Sync 1.4.2 / HNC v0.5.1 以前:

    curl -L -o ${PLUGIN_DIR}/kubectl-hns \
       https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-${HNC_VERSION}/kubectl-hns
    chmod +x ${PLUGIN_DIR}/kubectl-hns
    

    macOS

    macOS は Config Sync 1.5.0 / HNC v0.5.2 以降でのみ使用できます。

    curl -L -o ${PLUGIN_DIR}/kubectl-hns \
       https://github.com/kubernetes-sigs/multi-tenancy/releases/download/hnc-${HNC_VERSION}/kubectl-hns_darwin_amd64
    chmod +x ${PLUGIN_DIR}/kubectl-hns
    

インストールの確認

  1. Hierarchy Controller が正しくインストールされている場合は、次のように既存の名前空間の下に名前空間を作成できます。

     kubectl hns create sub -n default
    
  2. Hierarchy Controller が正しく動作している場合は、結果の階層を検査できます。

     kubectl hns tree default
    

    出力:

     default
      └── sub
    
  3. サブ名前空間をクリーンアップします。サブ名前空間を直接削除することはできません。親の名前空間からサブ名前空間アンカーを削除する必要があります。

    kubectl delete subns sub -n default
    # subnamespaceanchor.hnc.x-k8s.io "sub" deleted
    

Hierarchy Controller のアンインストール

Hierarchy Controller をアンインストールするには:

  1. spec.hierarchyController オブジェクト内の Operator の構成ファイルで、enabled の値を false に設定します。
  2. Operator が hierarchycontroller.configmanagement.gke.io ファイナライザを削除すると、Hierarchy Controller がアンインストールされます。

Config Sync を完全にアンインストールする場合は、クラスタからの Operator のアンインストールをご覧ください。

次のステップ