8.3.6. 입력 보안 및 ConfigMap
일부 시나리오에서는 빌드 작업을 수행하려면 종속 리소스에 액세스하기 위해 자격 증명 또는 기타 구성 데이터가 필요합니다. 그러나 이러한 정보가 소스 제어에 배치되는 것은 바람직하지 않습니다. 이러한 목적으로 입력 보안 및 입력 ConfigMap을 정의할 수 있습니다.
예를 들어 Maven을 통해 Java 애플리케이션을 빌드할 때 개인 키를 통해 액세스하는 Maven Central 또는 JCenter의 개인 미러를 설정할 수 있습니다. 프라이빗 미러에서 라이브러리를 다운로드하려면 다음을 제공해야 합니다.
- 미러의 URL 및 연결 설정으로 구성된 settings.xml 파일입니다.
- 설정 파일에서 참조하는 개인 키(예: ~/.ssh/id_rsa ).
보안상의 이유로 애플리케이션 이미지에 자격 증명을 노출해서는 안 됩니다.
이 예제에서는 Java 애플리케이션을 설명하지만 /etc/ssl/certs 디렉터리, API 키 또는 토큰, 라이센스 파일 등에 SSL 인증서를 추가하는 데 동일한 접근 방식을 사용할 수 있습니다.
8.3.6.1. 입력 보안 및 ConfigMap 추가
입력 보안 및/또는 ConfigMap을 기존 BuildConfig
에 추가하려면 다음을 수행합니다.
ConfigMap이 없는 경우 생성합니다.
$ oc create configmap settings-mvn \ --from-file=settings.xml=<path/to/settings.xml>
이렇게 하면 settings-mvn 이라는 새 ConfigMap이 생성됩니다. 이 ConfigMap에는 settings.xml 파일의 일반 텍스트 내용이 포함됩니다.
보안이 없으면 다음과 같이 생성합니다.
$ oc create secret generic secret-mvn \ --from-file=id_rsa=<path/to/.ssh/id_rsa>
이렇게 하면 secret-mvn 라는 새 보안이 생성됩니다. 이 보안에는 id_rsa 개인 키의 base64 인코딩 콘텐츠가 포함됩니다.
기존
BuildConfig
의source
섹션에 ConfigMap 및 보안을 추가합니다.source: git: uri: https://github.com/wildfly/quickstart.git contextDir: helloworld configMaps: - configMap: name: settings-mvn secrets: - secret: name: secret-mvn
새 BuildConfig
에 시크릿 및 ConfigMap을 포함하려면 다음 명령을 실행합니다.
$ oc new-build \ openshift/wildfly-101-centos7~https://github.com/wildfly/quickstart.git \ --context-dir helloworld --build-secret “secret-mvn” \ --build-config-map "settings-mvn"
빌드하는 동안 settings.xml 및 id_rsa 파일이 소스 코드가 있는 디렉터리로 복사됩니다. OpenShift Container Platform S2I 빌더 이미지에서 이 디렉터리는 Dockerfile 의 WORKDIR
명령을 사용하여 설정하는 이미지 작업 디렉터리입니다. 다른 디렉터리를 지정하려면 정의에 destinationDir
을 추가합니다.
source: git: uri: https://github.com/wildfly/quickstart.git contextDir: helloworld configMaps: - configMap: name: settings-mvn destinationDir: ".m2" secrets: - secret: name: secret-mvn destinationDir: ".ssh"
새 BuildConfig
를 생성할 때 대상 디렉터리를 지정할 수도 있습니다.
$ oc new-build \ openshift/wildfly-101-centos7~https://github.com/wildfly/quickstart.git \ --context-dir helloworld --build-secret “secret-mvn:.ssh” \ --build-config-map "settings-mvn:.m2"
두 경우 모두 settings.xml 파일이 빌드 환경의 ./.m2 디렉터리에 추가되고 id_rsa 키는 ./.ssh 디렉터리에 추가됩니다. Docker 전략 의 경우 대상 디렉터리는 상대 경로여야 합니다.