12.3. func.yaml의 구성 가능한 필드
일부 func.yaml
필드를 구성할 수 있습니다.
12.3.1. func.yaml의 구성 가능한 필드
func.yaml
의 대부분의 필드는 함수를 생성, 빌드 및 배포할 때 자동으로 생성됩니다. 그러나 함수 이름 또는 이미지 이름과 같은 사항을 변경하기 위해 수동으로 변경하는 필드도 있습니다.
12.3.1.1. buildEnvs
buildEnvs
필드를 사용하면 함수를 빌드하는 환경에서 환경 변수를 사용할 수 있도록 설정할 수 있습니다. envs
를 사용하여 설정한 변수와 달리 buildEnv
를 사용하여 설정된 변수는 함수 런타임 중에 사용할 수 없습니다.
값에서 직접 buildEnv
변수를 설정할 수 있습니다. 다음 예에서 EXAMPLE1
이라는 buildEnv
변수에는 하나의
값이 직접 할당됩니다.
buildEnvs: - name: EXAMPLE1 value: one
로컬 환경 변수에서 buildEnv
변수를 설정할 수도 있습니다. 다음 예제에서 EXAMPLE2
라는 buildEnv
변수에는 LOCAL_ENV_VAR
로컬 환경 변수의 값이 할당됩니다.
buildEnvs: - name: EXAMPLE1 value: '{{ env:LOCAL_ENV_VAR }}'
12.3.1.2. envs
envs
필드를 사용하면 런타임 시 사용할 수 있는 환경 변수를 설정할 수 있습니다. 환경 변수를 여러 가지 방법으로 설정할 수 있습니다.
- 값을 직접 설정할 수 있습니다.
- 로컬 환경 변수에 할당 된 값에서 설정합니다. 자세한 내용은 func.yaml 필드에서 로컬 환경 변수 참조 섹션을 참조하십시오.
- 시크릿 또는 구성 맵에 저장된 키-값 쌍에서 설정합니다.
- 생성된 환경 변수의 이름으로 사용되는 키를 사용하여 시크릿 또는 구성 맵에 저장된 모든 키-값 쌍을 가져올 수도 있습니다.
이 예제에서는 환경 변수를 설정하는 다양한 방법을 보여줍니다.
name: test namespace: "" runtime: go ... envs: - name: EXAMPLE1 1 value: value - name: EXAMPLE2 2 value: '{{ env:LOCAL_ENV_VALUE }}' - name: EXAMPLE3 3 value: '{{ secret:mysecret:key }}' - name: EXAMPLE4 4 value: '{{ configMap:myconfigmap:key }}' - value: '{{ secret:mysecret2 }}' 5 - value: '{{ configMap:myconfigmap2 }}' 6
12.3.1.3. builder
builder
필드는 함수에서 이미지를 빌드하는 데 사용하는 전략을 지정합니다. pack
또는 s2i
의 값을 허용합니다.
12.3.1.4. Build
build
필드는 함수를 빌드하는 방법을 나타냅니다. local
값은 함수가 시스템에 로컬로 빌드됨을 나타냅니다. 값 git
은 함수가 git
필드에 지정된 값을 사용하여 클러스터에 빌드되었음을 나타냅니다.
12.3.1.5. volumes
volumes
필드를 사용하면 다음 예와 같이 지정된 경로에서 기능에 액세스할 수 있는 볼륨으로 시크릿 및 구성 맵을 마운트할 수 있습니다.
name: test namespace: "" runtime: go ... volumes: - secret: mysecret 1 path: /workspace/secret - configMap: myconfigmap 2 path: /workspace/configmap
12.3.1.6. options
options
필드를 사용하면 자동 스케일링과 같이 배포된 함수에 대한 Knative Service 속성을 수정할 수 있습니다. 이러한 옵션이 설정되어 있지 않으면 기본 옵션이 사용됩니다.
다음 옵션을 사용할 수 있습니다.
scale
-
min
: 최소 복제 수입니다. 음수가 아닌 정수여야 합니다. 기본값은 0입니다. -
max
: 최대 복제본 수입니다. 음수가 아닌 정수여야 합니다. 기본값은 0이며 이는 제한이 없음을 의미합니다. -
metric
: Autoscaler에서 감시하는 메트릭 유형을 정의합니다. 기본값인concurrency
또는rps
로 설정할 수 있습니다. -
target
: 동시에 수신되는 요청 수에 따라 버전을 확장할 시기에 대한 권장 사항을 제공합니다.target
옵션은 0.01보다 큰 부동 소수점 값을 지정할 수 있습니다.options.resources.limits.concurrency
가 설정되지 않는 한 기본값은 100입니다. 이 경우target
은 기본값으로 설정됩니다. -
utilization
: 스케일 업하기 전에 허용된 동시 요청 사용률(백분율)입니다. 1에서 100까지의 부동 소수점 값을 지정할 수 있습니다. 기본값은70
입니다.
-
resources
requests
-
cpu
: 배포된 함수가 있는 컨테이너에 대한 CPU 리소스 요청입니다. -
memory
: 배포된 함수가 있는 컨테이너에 대한 메모리 리소스 요청입니다.
-
limits
-
cpu
: 배포된 함수가 있는 컨테이너의 CPU 리소스 제한입니다. -
memory
: 배포된 함수가 있는 컨테이너의 메모리 리소스 제한입니다. -
concurrency
: 단일 복제본에 의해 처리되는 동시 요청 수에 대한 하드 제한입니다. 0보다 크거나 같은 정수 값이 될 수 있습니다. 기본값은 0이며 이는 제한이 없음을 의미합니다.
-
다음은 scale
옵션 구성의 예입니다.
name: test namespace: "" runtime: go ... options: scale: min: 0 max: 10 metric: concurrency target: 75 utilization: 75 resources: requests: cpu: 100m memory: 128Mi limits: cpu: 1000m memory: 256Mi concurrency: 100
12.3.1.7. image
image
필드는 해당 함수의 이미지 이름을 빌드한 후 설정합니다. 이 필드는 필요에 따라 수정할 수 있습니다. 이 경우 다음에 kn func build
또는 kn func deploy
를 실행하면 함수 이미지가 새 이름으로 생성됩니다.
12.3.1.8. imageDigest
imageDigest
필드에는 함수가 배포될 때 이미지 매니페스트의 SHA256 해시가 포함됩니다. 이 값은 변경하지 마십시오.
12.3.1.9. labels
labels
필드를 사용하면 배포된 함수에 라벨을 설정할 수 있습니다.
값에서 직접 레이블을 설정할 수 있습니다. 다음 예에서 역할
키가 있는 레이블에는 백엔드
값이 직접 할당됩니다.
labels: - key: role value: backend
로컬 환경 변수에서 레이블을 설정할 수도 있습니다. 다음 예에서 author
키가 있는 레이블에는 USER
로컬 환경 변수의 값이 할당됩니다.
labels: - key: author value: '{{ env:USER }}'
12.3.1.10. name
name
필드는 함수의 이름을 정의합니다. 이 값은 배포 시 Knative 서비스의 이름으로 사용됩니다. 이 필드를 변경하여 후속 배포의 함수 이름을 변경할 수 있습니다.
12.3.1.11. namespace
namespace
필드는 함수가 배포되는 네임스페이스를 지정합니다.
12.3.1.12. runtime
runtime
필드는 기능에 대한 언어 런타임(예: python
)을 지정합니다.