---
title: "의존성"
description: "차트 의존성에 관한 모범사례를 다룬다."
weight: 4
---

이 부분은 가이드의 일부로서 `Chart.yaml`에서 선언되는 `dependencies`에 과한 모범사례를 다룬다.

## 버전

가능하면 특정 버전을 콕 집어서 사용하기 보다는 버전 범위를 사용하자.
권장되는 기본값은 다음과 같이 패치-수준의 버전 매치(match)를 사용하는 것이다.

```yaml
version: ~1.2.3
```

이렇게 하면 `1.2.3`과 그 릴리스의 다른 패치들도 매치된다.
다시 말하면 `~1.2.3`은 `>= 1.2.3, < 1.3.0`과 동등하다.

버전 매칭 구문에 대한 자세한 설명은 [semver
문서](https://github.com/Masterminds/semver#checking-version-constraints)에서 볼 수 있다.

### 리포지터리 URL

가능하면 `https://` 리포지터리 URL 뒤에 `http://` URL을 사용하자.

리포지터리가 리포지터리 인덱스 파일에 추가되면, 리포지터리 이름은 URL의 별칭으로 사용될 수 있다.
`alias:`나 `@` 뒤에 리포지터리 이름을 쓰자.

차트에서 파일 URL(`file://...`)은 고정된 배포 파이프라인에서 만들어지는 "특이한 경우"로 취급된다.
공식 헬름 리포지터리에는 `file://`을 사용하는 차트가 허용되지 않는다.

#### OCI 레지스트리에서 호스팅되는 차트에 대한 실험적 기능지원

[실험적 OCI 지원을 활성화(enabled)](/docs/registries/)했다면, 
리포지터리 URL의 OCI 참조(`oci://registry/group/image:tag`)를 지정할 수 있다.

OCI 참조를 지정한 경우, 리포지터리 URL이 이미지 태그(`oci://nginx:1.10`)를 가지고 있으면 `version` 인자를 생략해도 된다.
URL에 태그를 지정하지 않으면, `version`이 태그로 사용될 것이다.
이것은 OCI URL이 **SemVer 제약사항을 지원하지 않지만**, 태그된 버전은 지원한다는 것을 뜻한다.

태그와 버전을 둘다 지정했다면, 태그가 우선 적용되며 버전은 무시된다.

## 조건과 태그

조건과 태그는 _선택적(optional)_인 모든 의존성에 추가되어야 한다.

조건의 권장되는 형식은 다음과 같다.

```yaml
condition: somechart.enabled
```

여기서 `somechart`는 의존성의 차트 이름이다.

여러 서브차트(의존성)들이 선택적 또는 교체가능한 기능을 공동으로 제공하는 경우,
그 차트들은 동일한 태그를 사용해야 한다.

예를 들어, `nginx`와 `memcached`가 차트 내 메인 앱에 대한 성능 최적화 기능을 
공동으로 제공하는 경우, 그리고 그 기능의 활성화시에 둘다 있어야 한다면
둘다 다음과 같은 태그 섹션이 있어야 한다.

```yaml
tags:
  - webaccelerator
```

이렇게 하면 사용자는 하나의 태그로 기능을 켜거나 끌 수 있다.
