これは、このセクションの複数ページの印刷可能なビューです。 印刷するには、ここをクリックしてください.

このページの通常のビューに戻る.

Installation

Kuestaのインストール手順

    Kuestaをインストールする手順を紹介します。

    はじめに

    バージョン1.24以上のKubernetesクラスターが必要です。

    Kubernetesクラスターをお持ちでない場合は、kindを用いてローカルのKubernetesクラスターを作ることができます。 kindをインストール し、kind create cluster を実行してクラスターを作成してください。 これにより、ローカルで動作し cluster-admin 権限で操作出来るKubernetesクラスターが作成されます。

    事前準備

    1. kubectl をインストールしてください。Kubernetesクラスタに対してコマンドを実行する際に使用します。 2cue をインストールしてください。Kuestaのインストールスクリプトの実行に必要です。

    Kuestaのインストール

    Kuestaをインストールするには、以下のコマンドを実行してください。

    git clone https://github.com/nttcom/kuesta.git
    cd kuesta/tool/install
    cue install
    

    リリースバージョンを指定したい場合、もしくは別のコンテナレジストリを使用してインストールしたい場合は、 version もしくは imageRegistry タグを使用してください。

    cue -t imageRegistry=<your_image_registry> -t version=<your_version> install
    

    プロンプトが表示されますので、指示に従ってパラメータを入力してください。

    GitHub repository for config: https://github.com/<your_org>/<your_config_repo>
    GitHub repository for status: https://github.com/<your_org>/<your_status_repo>
    GitHub username: <your_username>
    GitHub private access token: <your_private_access_token>
    Are these git repositories private? (yes|no): no
    Do you need sample driver and emulator for trial?: (yes|no) yes
    
    ---
    GitHub Config Repository: https://github.com/<your_org>/<your_config_repo>
    GitHub Status Repository: https://github.com/<your_org>/<your_status_repo>
    GitHub Username: <your_username>
    GitHub Access Token: ***
    Use Private Repo: true
    
    Image Registry: ghcr.io/nttcom/kuesta
    Version: latest
    Deploy sample driver and emulator: true
    ---
    
    Continue? (yes|no) yes
    

    KuestaはGitへのプッシュやプルリクエストの作成を行うため、GitHubの personal access token (PAT) が必要です。 上記で入力したPATは kuesta-system/kuesta-secrets という Secret リソースに保存され、kuestaサーバが git clone・pull・push・PullRequest作成を行うために使用されます。

    また、非公開のGitレポジトリサーバに対してHTTPSで接続したい場合は、GitRepository を作成する際にこのPATを使うこともできます。Flux source-controllerにGitプライベートレポジトリへのアクセスを許可するために使用されます。

    Flux source-controllerを用いてGitOpsを設定する

    Flux source-controllerを用いてGitOpsを行うには、IaCマニフェストを取得するソースを定義するために GitRepository リソースを作成する必要があります。 以下は、getting-started チュートリアルで作成された GitRepository のサンプルです。

    apiVersion: source.toolkit.fluxcd.io/v1beta2
    kind: GitRepository
    metadata:
      name: kuesta-testdata
      namespace: kuesta-getting-started
    spec:
      interval: 1m0s
      url: https://github.com/hrk091/kuesta-testdata
      ref:
        branch: main
      secretRef:
        name: kuesta-testdata-secret
      timeout: 60s
    

    GitRepositoryに関するより詳細な情報が知りたければ、Fluxのドキュメントを参照してください。

    Kuestaでは、GitRepositoryを作成するとKuestaのsource-watcherコントローラが検知して、対応する DeviceRollout を作成します。 DeviceRollout は、マルチデバイスのトランザクション管理を責務とするカスタムリソースです。 getting-started チュートリアルでは、以下の DeviceRollout が作成されます。

    apiVersion: kuesta.hrk091.dev/v1alpha1
    kind: DeviceRollout
    metadata:
      name: kuesta-testdata
      namespace: kuesta-getting-started
    spec:
      deviceConfigMap:
        oc01:
          checksum: 1524caf17ec4c133f6f275326a6c9742a0155007f8eaa28ea601ce7ac39c0566
          gitRevision: main/30746f9beb48d237b6c0e0357708b3ed1f95cd1b
        oc02:
          checksum: 0b03381195ba613e0dd20e5d2683711e9d6082f0634bee7c54014de2eadf0fc9
          gitRevision: main/30746f9beb48d237b6c0e0357708b3ed1f95cd1b
    status:
      desiredDeviceConfigMap:
        oc01:
          checksum: 1524caf17ec4c133f6f275326a6c9742a0155007f8eaa28ea601ce7ac39c0566
          gitRevision: main/30746f9beb48d237b6c0e0357708b3ed1f95cd1b
        oc02:
          checksum: 0b03381195ba613e0dd20e5d2683711e9d6082f0634bee7c54014de2eadf0fc9
          gitRevision: main/30746f9beb48d237b6c0e0357708b3ed1f95cd1b
      deviceStatusMap:
        oc01: Completed
        oc02: Completed
      phase: Healthy
      status: Completed      
    

    DeviceRollout の管理はライフサイクル全体を通じて自動化されていますので、作成や変更を行う必要はありません。

    Installing Device Driver and configuring Device Custom Resource

    以降の記述は、getting-started チュートリアルで使用されているサンプルのKubernetesカスタムオペレータを使用した場合に限定した内容になります。 Kuestaを用いて制御したいターゲットデバイスと、その制御のために実装したKubernetesカスタムオペレータによって、詳細な手順は異なります。

    OpenConfig over gNMIをサポートしているデバイスに設定を投入したい場合は、kuesta/device-operator で開発されているサンプルのKubernetesカスタムオペレータを利用できます。 このサンプルのKubernetesカスタムオペレータは基本的なOpenConfig YANGセットをサポートしているデバイスに特化していますが、OpenConfigスタイルに準拠しているYANGであれば任意に追加して拡張することが可能です。

    このKubernetesカスタムオペレータは make コマンドもしくは kubectl/kustomize を直接実行することでインストールできますが、 Kuestaのインストールスクリプトを使用するのが一番簡単です。Kuestaのインストールスクリプトを実行すると getting-started という名前でkustomizeのオーバレイディレクトリが作成されますので、これをテンプレートとして自由にカスタムできます。

    getting-started オーバレイディレクトリを用いてKubernetesカスタムオペレータをインストールするには、以下のコマンドを実行します:

    export IMG=ghcr.io/nttcom/kuesta/device-operator:latest
    export KUSTOMIZE_ROOT=overlays/getting-started
    make deploy
    

    Kuestaからデバイスに対して設定投入するためには、Kubernetesカスタムオペレータに加えて、各デバイスごとにカスタムリソースを作成する必要があります。 getting-startedチュートリアルでは、gNMIエミュレータ oc01 に対して以下のような OcDemo カスタムリソースを作成します。

    apiVersion: kuesta.hrk091.dev/v1alpha1
    kind: OcDemo
    metadata:
      name: oc01
      namespace: kuesta-getting-started
    spec:
      address: gnmi-fake-oc01.kuesta-getting-started
      port: 9339
      rolloutRef: kuesta-testdata
      tls:
        secretName: oc01-cert
        skipVerify: true
    

    OcDemo リソースでは、設定投入を行うターゲットデバイスの接続情報、アドレス、ポート、ユーザ名とパスワード、TLS関連設定、などを定義します。 .spec.rolloutRef フィールドは、Flux source-controllerのGitOpsによって提供されるコンフィグの更新通知を、どの DeviceRollout から取得するかを指定するフィールドであり、必須項目です。 OcDemo リソースの .spec についてより詳細な情報が知りたければ、 kubectl explain ocdemo.spec を実行して確認してください。