12.2. func.yaml 파일을 사용하여 함수 프로젝트 구성
func.yaml
파일에는 함수 프로젝트의 구성이 포함되어 있습니다. func.yaml
에 지정된 값은 kn func
명령을 실행할 때 사용됩니다. 예를 들어 kn func build
명령을 실행하면 build
필드의 값이 사용됩니다. 경우에 따라 명령줄 플래그 또는 환경 변수를 사용하여 이러한 값을 덮어쓸 수 있습니다.
12.2.1. func.yaml 필드의 로컬 환경 변수 참조
함수 구성에 API 키와 같은 중요한 정보를 저장하지 않으려면 로컬 환경에서 사용 가능한 환경 변수에 참조를 추가할 수 있습니다. func.yaml
파일의 envs
필드를 수정하여 이 작업을 수행할 수 있습니다.
사전 요구 사항
- 함수 프로젝트를 생성해야 합니다.
- 로컬 환경에는 참조하려는 변수를 포함해야 합니다.
프로세스
로컬 환경 변수를 참조하려면 다음 구문을 사용합니다.
{{ env:ENV_VAR }}
ENV_VAR
을 사용하려는 로컬 환경의 변수 이름으로 바꿉니다.예를 들어 로컬 환경에서 사용할 수 있는
API_KEY
변수가 있을 수 있습니다.MY_API_KEY
변수에 해당 값을 할당하면 함수 내에서 직접 사용할 수 있습니다.함수 예
name: test namespace: "" runtime: go ... envs: - name: MY_API_KEY value: '{{ env:API_KEY }}' ...
12.2.2. 함수에 주석 추가
배포된 Serverless 함수에 Kubernetes 주석을 추가할 수 있습니다. 주석을 사용하면 임의의 메타데이터를 함수에 연결할 수 있습니다(예: 함수의 목적에 대한 참고). 주석은 func.yaml
구성 파일의 annotations
섹션에 추가됩니다.
함수 주석 기능에는 다음 두 가지 제한 사항이 있습니다.
-
함수 주석이 클러스터의 해당 Knative 서비스로 전파되면
func.yaml
파일에서 삭제하여 서비스에서 제거할 수 없습니다. 서비스의 YAML 파일을 직접 수정하거나 OpenShift Container Platform 웹 콘솔을 사용하여 Knative 서비스에서 주석을 제거해야 합니다. -
Knative에서 설정한 주석(예:
autoscaling
주석)을 설정할 수 없습니다.
12.2.3. 함수에 주석 추가
함수에 주석을 추가할 수 있습니다. 레이블과 유사하게 주석은 키-값 맵으로 정의됩니다. 주석은 예를 들어 함수 작성자와 같은 함수에 대한 메타데이터를 제공하는 데 유용합니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 함수를 생성했습니다.
프로세스
-
함수에 사용할
func.yaml
파일을 엽니다. 추가할 모든 주석에 대해
annotations
섹션에 다음 YAML을 추가합니다.name: test namespace: "" runtime: go ... annotations: <annotation_name>: "<annotation_value>" 1
- 1
<annotation_name>: "<annotation_value>"
를 주석으로 바꿉니다.
예를 들어 Alice에서 함수가 생성되었음을 나타내기 위해 다음 주석을 포함할 수 있습니다.
name: test namespace: "" runtime: go ... annotations: author: "alice@example.com"
- 설정을 저장합니다.
다음에 함수를 클러스터에 배포할 때 해당 Knative 서비스에 주석이 추가됩니다.
12.2.4. 추가 리소스
12.2.5. 시크릿 및 구성 맵에 수동으로 함수 액세스 추가
시크릿 및 구성 맵에 액세스하는 구성을 함수에 수동으로 추가할 수 있습니다. 예를 들어 기존 구성 스니펫이 있는 경우 kn func config
대화형 유틸리티 및 명령을 사용하는 것이 좋습니다.
12.2.5.1. 시크릿을 볼륨으로 마운트
보안을 볼륨으로 마운트할 수 있습니다. 보안이 마운트되면 함수에서 일반 파일로 액세스할 수 있습니다. 이를 통해 함수에 필요한 클러스터 데이터(예: 함수에서 액세스해야 하는 URI 목록을 저장할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 함수를 생성했습니다.
프로세스
-
함수에 사용할
func.yaml
파일을 엽니다. 볼륨으로 마운트하려는 각 시크릿에 대해
volumes
섹션에 다음 YAML을 추가합니다.name: test namespace: "" runtime: go ... volumes: - secret: mysecret path: /workspace/secret
-
mysecret을
대상 시크릿의 이름으로 대체합니다. 시크릿을 마운트하려는 경로로
/workspace/secret
을 대체합니다.예를 들어
주소
시크릿을 마운트하려면 다음 YAML을 사용합니다.name: test namespace: "" runtime: go ... volumes: - configMap: addresses path: /workspace/secret-addresses
-
- 설정을 저장합니다.
12.2.5.2. 구성 맵을 볼륨으로 마운트
구성 맵을 볼륨으로 마운트할 수 있습니다. 구성 맵이 마운트되면 함수에서 일반 파일로 액세스할 수 있습니다. 이를 통해 함수에 필요한 클러스터 데이터(예: 함수에서 액세스해야 하는 URI 목록을 저장할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 함수를 생성했습니다.
프로세스
-
함수에 사용할
func.yaml
파일을 엽니다. 볼륨으로 마운트하려는 각 구성 맵에 대해
volumes
섹션에 다음 YAML을 추가합니다.name: test namespace: "" runtime: go ... volumes: - configMap: myconfigmap path: /workspace/configmap
-
myconfigmap
을 대상 구성 맵의 이름으로 대체합니다. /workspace/configmap
을 구성 맵을 마운트하려는 경로로 바꿉니다.예를 들어
주소
구성 맵을 마운트하려면 다음 YAML을 사용합니다.name: test namespace: "" runtime: go ... volumes: - configMap: addresses path: /workspace/configmap-addresses
-
- 설정을 저장합니다.
12.2.5.3. 시크릿에 정의된 키 값에서 환경 변수 설정
보안으로 정의된 키 값에서 환경 변수를 설정할 수 있습니다. 이전에 시크릿에 저장된 값은 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 사용자의 ID와 같이 시크릿에 저장된 값에 대한 액세스 권한을 얻는 데 유용할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 함수를 생성했습니다.
프로세스
-
함수에 사용할
func.yaml
파일을 엽니다. 환경 변수에 할당할 시크릿 키-값 쌍의 각 값에 대해
envs
섹션에 다음 YAML을 추가합니다.name: test namespace: "" runtime: go ... envs: - name: EXAMPLE value: '{{ secret:mysecret:key }}'
-
EXAMPLE
을 환경 변수 이름으로 대체합니다. -
mysecret
을 대상 시크릿의 이름으로 대체합니다. key
를 대상 값에 매핑된 키로 대체합니다.예를 들어
userdetailssecret
에 저장된 사용자 ID에 액세스하려면 다음 YAML을 사용합니다.name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailssecret:userid }}'
-
- 설정을 저장합니다.
12.2.5.4. 구성 맵에 정의된 키 값에서 환경 변수 설정
구성 맵으로 정의된 키 값에서 환경 변수를 설정할 수 있습니다. 그런 다음 구성 맵에 이전에 저장된 값은 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 사용자 ID와 같이 구성 맵에 저장된 값에 대한 액세스 권한을 얻는 데 유용할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 함수를 생성했습니다.
프로세스
-
함수에 사용할
func.yaml
파일을 엽니다. 환경 변수에 할당할 구성 맵 키-값 쌍의 각 값에 대해
envs
섹션에 다음 YAML을 추가합니다.name: test namespace: "" runtime: go ... envs: - name: EXAMPLE value: '{{ configMap:myconfigmap:key }}'
-
EXAMPLE
을 환경 변수 이름으로 대체합니다. -
myconfigmap
을 대상 구성 맵의 이름으로 대체합니다. key
를 대상 값에 매핑된 키로 대체합니다.예를 들어
userdetailsmap
에 저장된 사용자 ID에 액세스하려면 다음 YAML을 사용합니다.name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailsmap:userid }}'
-
- 설정을 저장합니다.
12.2.5.5. 시크릿에 정의된 모든 값에서 환경 변수 설정
시크릿에 정의된 모든 값에서 환경 변수를 설정할 수 있습니다. 이전에 시크릿에 저장된 값은 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 시크릿에 저장된 값 컬렉션에 동시에 액세스하는 데 유용할 수 있습니다(예: 사용자와 관련된 데이터 세트).
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 함수를 생성했습니다.
프로세스
-
함수에 사용할
func.yaml
파일을 엽니다. 모든 키-값 쌍을 환경 변수로 가져오려는 모든 시크릿에 다음 YAML을
envs
섹션에 추가합니다.name: test namespace: "" runtime: go ... envs: - value: '{{ secret:mysecret }}' 1
- 1
mysecret
을 대상 시크릿의 이름으로 대체합니다.
예를 들어
userdetailssecret
에 저장된 모든 사용자 데이터에 액세스하려면 다음 YAML을 사용합니다.name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailssecret }}'
- 설정을 저장합니다.
12.2.5.6. 구성 맵에 정의된 모든 값에서 환경 변수 설정
구성 맵에 정의된 모든 값에서 환경 변수를 설정할 수 있습니다. 그런 다음 구성 맵에 이전에 저장된 값은 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 구성 맵에 저장된 값 컬렉션에 동시에 액세스하는 데 유용할 수 있습니다(예: 사용자와 관련된 데이터 세트).
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 함수를 생성했습니다.
프로세스
-
함수에 사용할
func.yaml
파일을 엽니다. 모든 키-값 쌍을 환경 변수로 가져오려는 모든 구성 맵에 대해
envs
섹션에 다음 YAML을 추가합니다.name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:myconfigmap }}' 1
- 1
myconfigmap
을 대상 구성 맵의 이름으로 대체합니다.
예를 들어
userdetailsmap
에 저장된 모든 사용자 데이터에 액세스하려면 다음 YAML을 사용합니다.name: test namespace: "" runtime: go ... envs: - value: '{{ configMap:userdetailsmap }}'
- 파일을 저장합니다.