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 |
|
配列 | なし |
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 |
|
配列 | なし |
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 |
|
文字列 | 空の値 | -edns |
policy |
|
文字列 | upsert-only |
sync |
logLevel |
ログ出力レベル。debug、info、warn、errorのうち1つ |
文字列 | info |
debug |
credentials.secretName |
|
文字列 | 空の値 | 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 |
|
文字列 | 空の値 |
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 |
|
配列 | なし |
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バージョンのバージョン互換性表をご参照ください。