OpenShift Git Secrets 생성 (1)
페이지 정보
본문
운영환경에서 OpenShift 애플리케이션 빌드 시 개인용 Git인 GitLab, Gogs 를 사용합니다.
Git의 Public Repository를 사용하면 인증 정보 없이 애플리케이션이 빌드가 되지만, Private Repository 및 SSH를 이용하여 빌드 시에는 인증 정보를 요구하게 되는데
인증 정보를 비밀(Secrets) 값으로 생성해 빌드 구성에 추가하게 되면 별도의 인증 없이 애플리케이션 빌드를 할 수 있습니다.
Secret을 생성해 애플리케이션을 빌드하는 방법에 대해 공유 하려고 합니다.
OpenShift Version : 3~4 (방법 동일)
* Secrets 없이 프라이빗 저장소로 애플리케이션 배포 시
1. 템플릿을 이용해 애플리케이션을 빌드합니다.
$ oc new-app openshift/httpd~http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git
2. 애플리케이션이 정상적으로 배포가 되었는지 확인합니다.
$ oc get pods
NAME READY STATUS RESTARTS AGE
qwer-1-build 0/1 Init:Error 0 28m
3. build의 로그를 확인합니다.
$ oc logs build/qwer-1-build
Cloning "http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git" ...
error: failed to fetch requested repository "http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git" with provided credentials
파드가 정상적으로 빌드가 되지 않는걸 볼 수 있는데, 빌드 로그를 확인해보면 Git에 Repository에 대한 인증이 되지 않아,
Source를 갖고오지 못해서 발생한 에러를 확인할 수 있습니다.
Git에 대한 인증을 포함한 Secret을 생성하게 되면 정상적으로 애플리케이션이 빌드가 되는지 확인해보겠습니다.
1. Git ID/PW에 대한 Secret 생성
$ oc create secret generic <SECRET_NAME> --from-file=/root/.gitconfig --from-literal=username=<GIT_USER_ID> --from-literal=password=<GIT_PASSWORD>
Git의 로그인 아이디 및 패스워드를 넣어 Secret을 생성합니다.
2. Secret에 'build.openshift.io/source-secret-match-uri-1' 주석(annotation)을 생성합니다.
oc annotate secrets <SECRET_NAME> 'build.openshift.io/source-secret-match-uri-1=<GIT_URL>/*'
시크릿에 주석을 달게 되면 애플리케이션 빌드 시 Git URI와 일치하게 되면 BuildConfig에 Secret 값이 정의가 됩니다.
3. 기존에 생성한 애플리케이션에 수동으로 Secret 값 추가
$ oc edit buildconfig <BUILDCONFIG_NAME>
...
git:
uri: http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git
sourceSecret:
name: <SECRET_NAME>
...
빌드 컨피그에 sourceSecret 필드를 추가 후 생성한 Secret을 빌드 구성에 추가합니다.
4. 애플리케이션 재빌드
$ oc start-build <BUILDCONFIG_NAME>
5. 애플리케이션 빌드 확인 및 파드 상태 체크
$ oc get pods
NAME READY STATUS RESTARTS AGE
qwer-2-build 0/1 Completed 0 28m
qwer-5fbcfddfd8-swdnn 1/1 Running 0 27m
BuildConfig에 Secret을 추가한 후 애플리케이션 정상적으로 빌드가 완료되며 파드가 배포된걸 확인할 수 있습니다.
Git의 Public Repository를 사용하면 인증 정보 없이 애플리케이션이 빌드가 되지만, Private Repository 및 SSH를 이용하여 빌드 시에는 인증 정보를 요구하게 되는데
인증 정보를 비밀(Secrets) 값으로 생성해 빌드 구성에 추가하게 되면 별도의 인증 없이 애플리케이션 빌드를 할 수 있습니다.
Secret을 생성해 애플리케이션을 빌드하는 방법에 대해 공유 하려고 합니다.
OpenShift Version : 3~4 (방법 동일)
* Secrets 없이 프라이빗 저장소로 애플리케이션 배포 시
1. 템플릿을 이용해 애플리케이션을 빌드합니다.
$ oc new-app openshift/httpd~http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git
2. 애플리케이션이 정상적으로 배포가 되었는지 확인합니다.
$ oc get pods
NAME READY STATUS RESTARTS AGE
qwer-1-build 0/1 Init:Error 0 28m
3. build의 로그를 확인합니다.
$ oc logs build/qwer-1-build
Cloning "http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git" ...
error: failed to fetch requested repository "http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git" with provided credentials
파드가 정상적으로 빌드가 되지 않는걸 볼 수 있는데, 빌드 로그를 확인해보면 Git에 Repository에 대한 인증이 되지 않아,
Source를 갖고오지 못해서 발생한 에러를 확인할 수 있습니다.
Git에 대한 인증을 포함한 Secret을 생성하게 되면 정상적으로 애플리케이션이 빌드가 되는지 확인해보겠습니다.
1. Git ID/PW에 대한 Secret 생성
$ oc create secret generic <SECRET_NAME> --from-file=/root/.gitconfig --from-literal=username=<GIT_USER_ID> --from-literal=password=<GIT_PASSWORD>
Git의 로그인 아이디 및 패스워드를 넣어 Secret을 생성합니다.
2. Secret에 'build.openshift.io/source-secret-match-uri-1' 주석(annotation)을 생성합니다.
oc annotate secrets <SECRET_NAME> 'build.openshift.io/source-secret-match-uri-1=<GIT_URL>/*'
시크릿에 주석을 달게 되면 애플리케이션 빌드 시 Git URI와 일치하게 되면 BuildConfig에 Secret 값이 정의가 됩니다.
3. 기존에 생성한 애플리케이션에 수동으로 Secret 값 추가
$ oc edit buildconfig <BUILDCONFIG_NAME>
...
git:
uri: http://gogs-gogs.apps.okd46.lds.co.kr/jmlee/qwer.git
sourceSecret:
name: <SECRET_NAME>
...
빌드 컨피그에 sourceSecret 필드를 추가 후 생성한 Secret을 빌드 구성에 추가합니다.
4. 애플리케이션 재빌드
$ oc start-build <BUILDCONFIG_NAME>
5. 애플리케이션 빌드 확인 및 파드 상태 체크
$ oc get pods
NAME READY STATUS RESTARTS AGE
qwer-2-build 0/1 Completed 0 28m
qwer-5fbcfddfd8-swdnn 1/1 Running 0 27m
BuildConfig에 Secret을 추가한 후 애플리케이션 정상적으로 빌드가 완료되며 파드가 배포된걸 확인할 수 있습니다.
- 이전글OpenShift - Maven Build 학습 1 21.03.04
- 다음글OpenShift_Registry_Storage 21.02.04
댓글목록
등록된 댓글이 없습니다.