6.10. 함수에서 시크릿 및 구성 맵에 액세스

함수가 클러스터에 배포된 후 시크릿 및 구성 맵에 저장된 데이터에 액세스할 수 있습니다. 이 데이터는 볼륨으로 마운트하거나 환경 변수에 할당할 수 있습니다. Knative CLI를 사용하거나 함수 구성 YAML 파일을 편집하여 수동으로 이 액세스를 대화식으로 구성할 수 있습니다.

중요

시크릿 및 구성 맵에 액세스하려면 함수를 클러스터에 배포해야 합니다. 이 기능은 로컬에서 실행되는 함수에 사용할 수 없습니다.

시크릿 또는 구성 맵 값에 액세스할 수 없는 경우 액세스할 수 없는 값을 지정하는 오류 메시지와 함께 배포가 실패합니다.

6.10.1. 시크릿 및 구성 맵에 대한 함수 액세스의 상호 작용 변경

kn func config 대화형 유틸리티를 사용하여 함수에서 액세스하는 시크릿 및 구성 맵을 관리할 수 있습니다. 사용 가능한 작업에는 구성 맵 및 시크릿에 저장된 값 목록, 추가, 제거, 볼륨 나열, 추가, 제거 등이 포함됩니다. 이 기능을 사용하면 함수에서 액세스할 수 있는 클러스터에 저장된 데이터를 관리할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 기능을 생성했습니다.

절차

  1. 함수 프로젝트에서 다음 명령을 실행합니다.

    $ kn func config

    또는 --path 또는 -p 옵션을 사용하여 함수 프로젝트 디렉터리를 지정할 수 있습니다.

  2. 대화형 인터페이스를 사용하여 필요한 작업을 수행합니다. 예를 들어 유틸리티를 사용하여 구성된 볼륨을 나열하면 다음과 유사한 출력이 생성됩니다.

    $ kn func config
    ? What do you want to configure? Volumes
    ? What operation do you want to perform? List
    Configured Volumes mounts:
    - Secret "mysecret" mounted at path: "/workspace/secret"
    - Secret "mysecret2" mounted at path: "/workspace/secret2"

    이 스키마는 대화형 유틸리티에서 사용할 수 있는 모든 작업과 해당 유틸리티로 이동하는 방법을 보여줍니다.

    kn func config
       ├─> Environment variables
       │               ├─> Add
       │               │    ├─> ConfigMap: Add all key-value pairs from a config map
       │               │    ├─> ConfigMap: Add value from a key in a config map
       │               │    ├─> Secret: Add all key-value pairs from a secret
       │               │    └─> Secret: Add value from a key in a secret
       │               ├─> List: List all configured environment variables
       │               └─> Remove: Remove a configured environment variable
       └─> Volumes
               ├─> Add
               │    ├─> ConfigMap: Mount a config map as a volume
               │    └─> Secret: Mount a secret as a volume
               ├─> List: List all configured volumes
               └─> Remove: Remove a configured volume
  3. 선택 사항: 함수를 배포하여 변경 사항을 적용합니다.

    $ kn func deploy -p test

6.10.2. 특수 명령을 사용하여 시크릿 및 구성 맵에 대한 함수 액세스 수정

kn func config 유틸리티를 실행할 때마다 전체 대화 상자를 탐색하여 이전 섹션에서와 같이 필요한 작업을 선택해야 합니다. 단계를 저장하려면 kn func config 명령 보다 구체적인 양식을 실행하여 특정 작업을 직접 수행합니다.

  • 구성된 환경 변수를 나열하려면 다음을 수행합니다.

    $ kn func config envs [-p <function-project-path>]
  • 함수 구성에 환경 변수를 추가하려면 다음을 수행합니다.

    $ kn func config envs add [-p <function-project-path>]
  • 함수 구성에서 환경 변수를 제거하려면 다음을 수행합니다.

    $ kn func config envs remove [-p <function-project-path>]
  • 구성된 볼륨을 나열하려면 다음을 수행합니다.

    $ kn func config volumes [-p <function-project-path>]
  • 함수 구성에 볼륨을 추가하려면 다음을 수행합니다.

    $ kn func config volumes add [-p <function-project-path>]
  • 함수 구성에서 볼륨을 제거하려면 다음을 수행합니다.

    $ kn func config volumes remove [-p <function-project-path>]

6.10.3. 시크릿 및 구성 맵에 수동으로 함수 액세스 추가

시크릿 및 구성 맵에 액세스하는 구성을 함수에 수동으로 추가할 수 있습니다. kn func config 대화형 유틸리티 및 명령을 사용하는 것이 좋습니다(예: 기존 구성 스니펫이 있는 경우).

6.10.3.1. 시크릿을 볼륨으로 마운트

시크릿을 볼륨으로 마운트할 수 있습니다. 시크릿이 마운트되면 함수에서 일반 파일로 액세스할 수 있습니다. 이를 통해 함수에 필요한 클러스터 데이터(예: 함수에서 액세스해야 하는 URI 목록)에 저장할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 기능을 생성했습니다.

절차

  1. 함수에 사용할 func.yaml 파일을 엽니다.
  2. 볼륨으로 마운트하려는 각 시크릿에 대해 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
  3. 설정을 저장합니다.

6.10.3.2. 구성 맵을 볼륨으로 마운트

구성 맵을 볼륨으로 마운트할 수 있습니다. 구성 맵이 마운트되면 함수에서 일반 파일로 액세스할 수 있습니다. 이를 통해 함수에 필요한 클러스터 데이터(예: 함수에서 액세스해야 하는 URI 목록)에 저장할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 기능을 생성했습니다.

절차

  1. 함수에 사용할 func.yaml 파일을 엽니다.
  2. 볼륨으로 마운트하려는 각 구성 맵에 대해 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
  3. 설정을 저장합니다.

6.10.3.3. 시크릿에 정의된 키 값에서 환경 변수 설정

보안으로 정의된 키 값에서 환경 변수를 설정할 수 있습니다. 그런 다음 이전에 시크릿에 저장된 값에 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 사용자의 ID와 같이 시크릿에 저장된 값에 대한 액세스 권한을 얻는 데 유용할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 기능을 생성했습니다.

절차

  1. 함수에 사용할 func.yaml 파일을 엽니다.
  2. 환경 변수에 할당할 시크릿 키-값 쌍의 각 값에 대해 envs 섹션에 다음 YAML을 추가합니다.

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - name: EXAMPLE
      value: '{{ secret:mysecret:key }}'
    • EXAMPLE을 환경 변수 이름으로 대체합니다.
    • mysecret을 대상 시크릿의 이름으로 대체합니다.
    • key를 대상 값에 매핑된 키로 대체합니다.

      예를 들어 사용자 detailssecret에 저장된 사용자 ID에 액세스하려면 다음 YAML을 사용합니다.

      name: test
      namespace: ""
      runtime: go
      ...
      envs:
      - value: '{{ configMap:userdetailssecret:userid }}'
  3. 설정을 저장합니다.

6.10.3.4. 구성 맵에 정의된 키 값에서 환경 변수 설정

구성 맵으로 정의된 키 값에서 환경 변수를 설정할 수 있습니다. 그런 다음 이전에 구성 맵에 저장된 값에 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 사용자의 ID와 같이 구성 맵에 저장된 값에 대한 액세스 권한을 얻는 데 유용할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 기능을 생성했습니다.

절차

  1. 함수에 사용할 func.yaml 파일을 엽니다.
  2. 환경 변수에 할당할 구성 맵 키-값 쌍의 각 값에 대해 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 }}'
  3. 설정을 저장합니다.

6.10.3.5. 시크릿에 정의된 모든 값에서 환경 변수 설정

시크릿에 정의된 모든 값에서 환경 변수를 설정할 수 있습니다. 그런 다음 이전에 시크릿에 저장된 값에 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 비밀에 저장된 값 컬렉션에 동시에 액세스 권한을 얻는 데 유용할 수 있습니다(예: 사용자와 관련된 데이터 집합).

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 기능을 생성했습니다.

절차

  1. 함수에 사용할 func.yaml 파일을 엽니다.
  2. 모든 키-값 쌍을 환경 변수로 가져오려는 모든 시크릿에 다음 YAML을 envs 섹션에 추가합니다.

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - value: '{{ secret:mysecret }}' 1
    1
    mysecret을 대상 시크릿의 이름으로 대체합니다.

    예를 들어 사용자 detailssecret에 저장된 모든 사용자 데이터에 액세스하려면 다음 YAML을 사용합니다.

    name: test
    namespace: ""
    runtime: go
    ...
    envs:
    - value: '{{ configMap:userdetailssecret }}'
  3. 설정을 저장합니다.

6.10.3.6. 구성 맵에 정의된 모든 값에서 환경 변수 설정

구성 맵에 정의된 모든 값에서 환경 변수를 설정할 수 있습니다. 그런 다음 이전에 구성 맵에 저장된 값에 런타임 시 함수를 통해 환경 변수로 액세스할 수 있습니다. 이는 구성 맵에 저장된 값 컬렉션에 동시에 액세스 권한을 얻는 데 유용할 수 있습니다(예: 사용자와 관련된 데이터 집합).

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 기능을 생성했습니다.

절차

  1. 함수에 사용할 func.yaml 파일을 엽니다.
  2. 모든 키-값 쌍을 환경 변수로 가져오려는 모든 구성 맵에 대해 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 }}'
  3. 파일을 저장합니다.