Add-onリスト

Prev Next

VPC環境で利用できます。

Ncloud Kubernetes Service(NKS)が提供する Add-onリストです。

Add-on 名前 カテゴリ 説明 Canaryアップグレード
nks-csi NKS Block Storage CSI storage ブロックストレージを PersistentVolumeとして使用する CSIドライバ 未サポート
nks-nas-csi NKS NAS (NFS) CSI storage NAS(NFS)ボリュームを PersistentVolumeとして使用する CSIドライバ 未サポート
external-dns ExternalDNS network Serviceと Ingressの DNS名を外部 DNSに自動的に登録して管理するコントローラ 未サポート
nks-gateway-adapter NKS Gateway API Adapter network Gateway APIリソース(Gateway、HTTPRoute)を NAVER Cloud ALBに接続するアダプタ 未サポート
istio Istio network サービス間通信にトラフィック管理、mTLSベースのセキュリティ、可観測性を提供するサービスメッシュのコントロールプレーン サポート
参考

Add-onをインストール・変更する時、Add-onが提供する設定値を入力できます。この文書は、各 Add-onのすべての設定項目の意味と例を説明します。実際に指定できる設定項目と許可範囲は Add-onのバージョンによって異なるため、Add-on追加または Add-on変更ポップアップでバージョンを選択すると表示される Add-on構成スキーマを基準に指定します。

NKS Block Storage CSI

ブロックストレージを Kubernetes PersistentVolumeとして使用する CSIドライバです。この Add-onをインストールすると、ブロックストレージベースボリュームを動的にプロビジョニングして Podにマウントできます。

インストール後の使用方法は、ブロックストレージ CSI のユースケースをご参照ください。

設定値

提供する設定項目は次の通りです。

項目 説明 タイプ デフォルト値
scheduling.nodeSelector コンポーネントを配置するノードのラベル条件 オブジェクト(文字列マップ) なし
scheduling.extraTolerations
  • テイント(taint)が設定されたノードにもコンポーネントを配置するための tolerationリスト
  • ドライバ動作に必要な必須 tolerationは自動的に含まれて、この項目で削除できない
配列 なし
scheduling.extraTolerations[].key 対象テイントキー 文字列 なし
scheduling.extraTolerations[].operator キーと値を比較する方式。Exists、Equalのうち1つ 文字列 なし
scheduling.extraTolerations[].value operatorがEqualの場合に比較する値 文字列 なし
scheduling.extraTolerations[].effect 対象テイントの effect。NoSchedule、PreferNoSchedule、NoExecuteのうち1つ 文字列 なし
scheduling.extraTolerations[].tolerationSeconds effectがNoExecuteの場合にノードにとどまる時間(秒) 整数 なし

以下は例です。

{
  "scheduling": {
    "nodeSelector": {
      "role": "storage"
    },
    "extraTolerations": [
      {
        "key": "dedicated",
        "operator": "Equal",
        "value": "storage",
        "effect": "NoSchedule"
      }
    ]
  }
}

NKS NAS (NFS) CSI

NAS(NFS)ボリュームを Kubernetes PersistentVolumeとして使用する CSIドライバです。複数の Podが同時にアクセスする共有ボリュームが必要な場合に使用します。

インストール後の使用方法は、NASボリューム CSI のユースケースをご参照ください。

設定値

提供する設定項目は次の通りです。

項目 説明 タイプ デフォルト値
scheduling.nodeSelector コンポーネントを配置するノードのラベル条件 オブジェクト(文字列マップ) なし
scheduling.extraTolerations
  • テイント(taint)が設定されたノードにもコンポーネントを配置するための tolerationリスト
  • ドライバ動作に必要な必須 tolerationは自動的に含まれて、この項目で削除できない
配列 なし
scheduling.extraTolerations[].key 対象テイントキー 文字列 なし
scheduling.extraTolerations[].operator キーと値を比較する方式。Exists、Equalのうち1つ。 文字列 なし
scheduling.extraTolerations[].value operatorがEqualの場合に比較する値 文字列 なし
scheduling.extraTolerations[].effect 対象テイントの effect。NoSchedule、PreferNoSchedule、NoExecuteのうち1つ 文字列 なし
scheduling.extraTolerations[].tolerationSeconds effectがNoExecuteの場合にノードにとどまる時間(秒) 整数 なし

以下は例です。

{
  "scheduling": {
    "nodeSelector": {
      "role": "storage"
    },
    "extraTolerations": [
      {
        "key": "dedicated",
        "operator": "Equal",
        "value": "storage",
        "effect": "NoSchedule"
      }
    ]
  }
}

ExternalDNS

Kubernetesの Serviceと Ingressに設定された DNS名を外部 DNSサービスに自動的に登録して管理するコントローラです。この Add-onをインストールすると、ワークロードが公開するドメインを手動で管理する必要がなくなります。

インストール後の使用方法は、ExternalDNS活用のユースケースをご参照ください。

設定値

ExternalDNSが提供する設定項目は次の通りです。

項目 説明 タイプ デフォルト値 例
sources DNSレコードを作成する対象リソースの種類。service、ingress、crdのうち1つ以上 配列 service, ingress, crd ["ingress"]
domainFilter
  • 管理するドメイン限定
  • 指定したドメインのレコードのみ作成・管理し、空欄にした場合は制限なし
文字列 空の値 example.com,foo.io
annotationFilter 指定したアノテーションを持つリソースのみ処理対象とする 文字列 空の値 external-dns.alpha.kubernetes.io/include=true
labelFilter 指定したラベルを持つリソースのみ処理対象とする 文字列 空の値 team=infra
txtPrefix 所有権記録用 TXTレコード名に付けるプレフィックス 文字列 _edns. _edns.
txtSuffix
  • 所有権記録用 TXTレコード名に付けるサフィックス
  • txtPrefixと一緒に使用できない(以下の注意を参照)
文字列 空の値 -edns
policy
  • DNSレコード同期ポリシー
  • sync: 作成・変更・削除をすべて反映
  • upsert-only: 削除しない
  • create-only: 作成のみ実行
文字列 upsert-only sync
logLevel ログ出力レベル。debug、info、warn、errorのうち1つ 文字列 info debug
credentials.secretName
  • 外部 DNS認証に使用するアクセスキーが含まれた Secret名
  • 空欄にした場合は、ノードの Node IAM Roleで認証
  • Secretはユーザーの事前作成必要(以下を参照)
文字列 空の値 external-dns-credentials
scheduling.nodeSelector コンポーネントを配置するノードのラベル条件 オブジェクト(文字列マップ) なし {"role":"external-dns"}
scheduling.extraTolerations テイント(taint)が設定されたノードにもコンポーネントを配置するための tolerationリスト 配列 なし —
scheduling.extraTolerations[].key 対象テイントキー 文字列 なし dedicated
scheduling.extraTolerations[].operator キーと値を比較する方式。Exists、Equalのうち1つ 文字列 なし Equal
scheduling.extraTolerations[].value operatorがEqualの場合に比較する値 文字列 なし dns
scheduling.extraTolerations[].effect 対象テイントの effect。NoSchedule、PreferNoSchedule、NoExecuteのうち1つ 文字列 なし NoSchedule
scheduling.extraTolerations[].tolerationSeconds effectがNoExecuteの場合にノードにとどまる時間(秒) 整数 なし 300

以下は例です。

{
  "sources": ["service", "ingress", "crd"],
  "domainFilter": "example.com,foo.io",
  "annotationFilter": "external-dns.alpha.kubernetes.io/include=true",
  "labelFilter": "team=infra",
  "txtPrefix": "",
  "txtSuffix": "-edns",
  "policy": "sync",
  "logLevel": "info",
  "credentials": {
    "secretName": "external-dns-credentials"
  },
  "scheduling": {
    "nodeSelector": {
      "role": "external-dns"
    },
    "extraTolerations": [
      {
        "key": "dedicated",
        "operator": "Equal",
        "value": "dns",
        "effect": "NoSchedule"
      }
    ]
  }
}

NKS Gateway API Adapter

Gateway APIリソース(Gateway、HTTPRoute)を NAVER Cloud Application Load Balancer(ALB)に接続するアダプタです。この Add-onをインストールすると Gateway API標準リソースで外部トラフィックルーティングを構成できます。

インストール後の使用方法は、Gateway API を使用するをご参照ください。

設定値

提供する設定項目は次の通りです。

項目 説明 タイプ デフォルト値
scheduling.nodeSelector コンポーネントを配置するノードのラベル条件 オブジェクト(文字列マップ) なし
scheduling.extraTolerations テイント(taint)が設定されたノードにもコンポーネントを配置するための tolerationリスト 配列 なし
scheduling.extraTolerations[].key 対象テイントキー。 文字列 なし
scheduling.extraTolerations[].operator キーと値を比較する方式。Exists、Equalのうち1つ 文字列 なし
scheduling.extraTolerations[].value operatorがEqualの場合に比較する値 文字列 なし
scheduling.extraTolerations[].effect 対象テイントの effect。NoSchedule、PreferNoSchedule、NoExecuteのうち1つ 文字列 なし
scheduling.extraTolerations[].tolerationSeconds effectがNoExecuteの場合にノードにとどまる時間(秒) 整数 なし

以下は例です。

{
  "scheduling": {
    "nodeSelector": {
      "role": "gateway"
    },
    "extraTolerations": [
      {
        "key": "dedicated",
        "operator": "Equal",
        "value": "gateway",
        "effect": "NoSchedule"
      }
    ]
  }
}

Istio

Istioはクラスタ間のサービス間通信にトラフィック管理、mTLSベースのセキュリティ、可観測性を提供するサービスメッシュです。この Add-onは、Istioのコントロールプレーン(istiod)をインストールします。サイドカー注入とメッシュ機能の使用方法は、Istio公式ドキュメントをご参照ください。

この Add-onは、Canaryアップグレードをサポートします。インストールしたバージョン系列ごとに Revision(例: バージョン 1.30.3の Revisionは 1-30)を持ち、各ネームスペースでは istio.io/revラベルでサイドカーを注入される Revisionを指定します。アップグレードの手順は、Add-onのインストールと管理の Canaryアップグレードをご参照ください。

設定値

Istioが提供する設定項目は次の通りです。meshConfig項目は Istioのメッシュ設定(MeshConfig)がそのまま渡されるため、各項目の動作については Istio MeshConfigリファレンスをご参照ください。

項目 説明 タイプ デフォルト値
meshConfig.accessLogFile
  • サイドカーアクセスログ出力の対象
  • 空の値(出力しない)または /dev/stdout(標準出力)のみ指定可能
文字列 空の値
meshConfig.accessLogEncoding アクセスログエンコード。TEXT、JSONのうち1つ 文字列 TEXT
meshConfig.accessLogFormat アクセスログフォーマットの文字列。空にすると Istioのデフォルトフォーマット 文字列 空の値
meshConfig.outboundTrafficPolicy.mode メッシュの外へ送信されるトラフィックポリシー。ALLOW_ANY、REGISTRY_ONLYのうち1つ 文字列 ALLOW_ANY
meshConfig.defaultConfig.terminationDrainDuration サイドカー終了時の接続ドレイン待機時間。時間単位で表示(例: 30s) 文字列 5s
meshConfig.meshMTLS.minProtocolVersion メッシュ mTLSの最小 TLSバージョン。TLS_AUTO、TLSV1_2、TLSV1_3のうち1つ 文字列 TLS_AUTO
meshConfig.defaultHttpRetryPolicy.attempts 基本 HTTPの再試行回数。0の場合は、基本再試行を無効化 整数 なし
meshConfig.defaultHttpRetryPolicy.retryOn 再試行する条件(コンマ区切り) 文字列 なし
meshConfig.discoverySelectors コントロールプレーンが監視するネームスペースを制限するラベルセレクターのリスト 配列 なし
meshConfig.discoverySelectors[].matchLabels 一致すべきラベル オブジェクト(文字列マップ) なし
meshConfig.discoverySelectors[].matchExpressions ラベル条件式のリスト(key、operator、values)。operatorは In、NotIn、Exists、DoesNotExistのうち1つ 配列 なし
meshConfig.extensionProviders トレーシング拡張プロバイダのリスト。項目ごとに name、zipkin、opentelemetryのうち1つを指定 配列 なし
meshConfig.extensionProviders[].name プロバイダの名前 文字列 なし
meshConfig.extensionProviders[].zipkin.service / .port Zipkinコレクターサービスのアドレスとポート 文字列/整数 なし
meshConfig.extensionProviders[].opentelemetry.service / .port OpenTelemetryコレクターサービスのアドレスとポート 文字列/整数 なし
nodeSelector コントロールプレーン(istiod)を配置するノードのラベル条件 オブジェクト(文字列マップ) なし
tolerations
  • テイント(taint)が設定されたノードにもコントロールプレーンを配置するための tolerationリスト
  • 動作に必要な必須 tolerationは自動的に含まれて、この項目で削除できない
配列 なし
tolerations[].key 対象テイントキー 文字列 なし
tolerations[].operator キーと値を比較する方式。Exists、Equalのうち1つ 文字列 なし
tolerations[].value operatorがEqualの場合に比較する値 文字列 なし
tolerations[].effect 対象テイントの effect。NoSchedule、PreferNoSchedule、NoExecuteのうち1つ 文字列 なし
tolerations[].tolerationSeconds effectがNoExecuteの場合にノードにとどまる時間(秒) 整数 なし

以下は例です。

{
  "meshConfig": {
    "accessLogFile": "/dev/stdout",
    "accessLogEncoding": "JSON",
    "outboundTrafficPolicy": { "mode": "REGISTRY_ONLY" },
    "meshMTLS": { "minProtocolVersion": "TLSV1_2" },
    "extensionProviders": [
      {
        "name": "otel",
        "opentelemetry": {
          "service": "otel-collector.observability.svc.cluster.local",
          "port": 4317
        }
      }
    ]
  },
  "nodeSelector": { "role": "mesh" },
  "tolerations": [
    { "key": "dedicated", "operator": "Equal", "value": "mesh", "effect": "NoSchedule" }
  ]
}
参考

設定値はインストールされたバージョン(Revision)のコントロールプレーンに適用されます。Canaryアップグレード開始時に新しいバージョンに適用する設定値を指定すると、現在の設定値が置き換わります。

Canaryアップグレードとワークロードの切り替え

Canaryアップグレードが始まると、新しい Revisionのコントロールプレーンが既存の Revisionと同時にインストールされます。ワークロードはネームスペースの istio.io/revラベルに指定された Revisionを使用し続けるため、ラベルを新しい Revisionに変更してワークロードを再起動すると、再起動後の Podから新しい Revisionのサイドカーで動作します。影響範囲が小さいネームスペースから順次切り替え、正常動作することを確認します。

# ネームスペースを新しい revision(例: 1-30)に切り替え
kubectl label namespace <namespace> istio.io/rev=1-30 --overwrite

# ワークロード再起動(再起動された Podから新しい revisionを適用)
kubectl rollout restart deployment -n <namespace>

問題が見つかった場合はラベルを既存の Revisionに戻し、再起動すると既存の Revisionに戻ります。

注意

確定すると、既存 Revisionのコントロールプレーンが削除されます。既存 Revisionラベルが残っているネームスペースでは、今後再起動される Podにサイドカーが注入されないため、確定前にすべてのネームスペースのラベルを新しい Revisionに切り替えます。キャンセルする場合は、逆に新しい Revisionに切り替えたネームスペースを既存の Revisionに戻した後に進めてください。

Revisionベースアップグレードの詳細な動作は、Istio公式ドキュメントの Canaryアップグレードをご参照ください。

バージョン互換性

インストールできる Add-onのバージョンはクラスタの Kubernetesバージョンに応じて異なります。インストールと変更のときに、クラスタと互換性のあるバージョンのみ選択できます。Add-on別サポートバージョンは、Add-onバージョンのバージョン互換性表をご参照ください。