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 중 하나 문자열 없음
scheduling.extraTolerations[].value operator가 Equal일 때 비교할 값 문자열 없음
scheduling.extraTolerations[].effect 대상 테인트의 effect. NoSchedule, PreferNoSchedule, NoExecute 중 하나 문자열 없음
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 중 하나. 문자열 없음
scheduling.extraTolerations[].value operator가 Equal일 때 비교할 값 문자열 없음
scheduling.extraTolerations[].effect 대상 테인트의 effect. NoSchedule, PreferNoSchedule, NoExecute 중 하나 문자열 없음
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 중 하나 이상 배열 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 중 하나 문자열 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 중 하나 문자열 없음 Equal
scheduling.extraTolerations[].value operator가 Equal일 때 비교할 값 문자열 없음 dns
scheduling.extraTolerations[].effect 대상 테인트의 effect. NoSchedule, PreferNoSchedule, NoExecute 중 하나 문자열 없음 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 ALB(Application Load Balancer)로 연결하는 어댑터입니다. 이 Add-on을 설치하면 Gateway API 표준 리소스로 외부 트래픽 라우팅을 구성할 수 있습니다.

설치한 다음 사용 방법은 Gateway API 사용을 참조해 주십시오.

설정값

제공하는 설정 항목은 다음과 같습니다.

항목 설명 타입 기본값
scheduling.nodeSelector 컴포넌트를 배치할 노드의 레이블 조건 객체(문자열 맵) 없음
scheduling.extraTolerations 테인트(taint)가 설정된 노드에도 컴포넌트를 배치하기 위한 toleration 목록 배열 없음
scheduling.extraTolerations[].key 대상 테인트 키. 문자열 없음
scheduling.extraTolerations[].operator 키와 값을 비교하는 방식. Exists, Equal 중 하나 문자열 없음
scheduling.extraTolerations[].value operator가 Equal일 때 비교할 값 문자열 없음
scheduling.extraTolerations[].effect 대상 테인트의 effect. NoSchedule, PreferNoSchedule, NoExecute 중 하나 문자열 없음
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 중 하나 문자열 TEXT
meshConfig.accessLogFormat 액세스 로그 포맷 문자열. 비우면 Istio 기본 포맷 문자열 빈 값
meshConfig.outboundTrafficPolicy.mode 메시 외부로 나가는 트래픽 정책. ALLOW_ANY, REGISTRY_ONLY 중 하나 문자열 ALLOW_ANY
meshConfig.defaultConfig.terminationDrainDuration 사이드카 종료 시 연결 드레인 대기 시간. 시간 단위 표기(예: 30s) 문자열 5s
meshConfig.meshMTLS.minProtocolVersion 메시 mTLS의 최소 TLS 버전. TLS_AUTO, TLSV1_2, TLSV1_3 중 하나 문자열 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 중 하나 배열 없음
meshConfig.extensionProviders 트레이싱 확장 제공자 목록. 항목마다 name과 zipkin 또는 opentelemetry 중 하나를 지정 배열 없음
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 중 하나 문자열 없음
tolerations[].value operator가 Equal일 때 비교할 값 문자열 없음
tolerations[].effect 대상 테인트의 effect. NoSchedule, PreferNoSchedule, NoExecute 중 하나 문자열 없음
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 버전의 버전 호환 표를 참조해 주십시오.