3.7. OpenShift Pipelines에서 Tekton Hub 사용
Tekton Hub는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
Tekton Hub를 사용하면 CI/CD 워크플로를 위한 재사용 가능한 작업 및 파이프라인을 검색, 검색 및 공유할 수 있습니다. Tekton Hub의 공용 인스턴스는 hub.tekton.dev 에서 사용할 수 있습니다. 클러스터 관리자는 엔터프라이즈를 위해 Tekton Hub의 사용자 지정 인스턴스를 설치하고 배포할 수도 있습니다.
3.7.1. OpenShift Container Platform 클러스터에 Tekton Hub 설치 및 배포
Tekton Hub는 선택적 구성 요소이며 클러스터 관리자는 TektonConfig CR(사용자 정의 리소스)을 사용하여 설치할 수 없습니다. Tekton Hub를 설치 및 관리하려면 TektonHub CR을 사용합니다.
다음 두 가지 모드를 사용하여 클러스터에 Tekton Hub를 설치할 수 있습니다.
- Tekton Hub 아티팩트에 대한 로그인 권한 부여 및 평가 없음
- Tekton Hub 아티팩트에 대한 로그인 자동 생성 및 등급 사용
Github Enterprise 또는 Gitlab Enterprise를 사용하는 경우 엔터프라이즈 서버와 동일한 네트워크에 Tekton Hub를 설치 및 배포합니다. 예를 들어 엔터프라이즈 서버가 VPN 뒤에서 실행 중인 경우 VPN에도 있는 클러스터에 Tekton Hub를 배포합니다.
3.7.1.1. 로그인 및 등급 없이 Tekton Hub 설치
기본 구성으로 클러스터에 Tekton Hub를 자동으로 설치할 수 있습니다. 기본 구성을 사용하는 경우 Tekton Hub는 Tekton Hub 아티팩트에 대한 권한 부여 및 등급으로 로그인을 지원하지 않습니다.
사전 요구 사항
-
Red Hat OpenShift Pipelines Operator가 클러스터의 기본
openshift-pipelines네임스페이스에 설치되어 있는지 확인합니다.
절차
다음 예와 유사한
TektonHubCR을 생성합니다.apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml 2 catalogRefreshInterval: 30m 3
TektonHubCR을 적용합니다.$ oc apply -f <TektonHub>.yaml 1- 1
TektonHubCR의 파일 이름 또는 경로입니다.
참고TektonHubCR을 적용하면 Tekton Hub가openshift-pipelines네임스페이스의 클러스터에 업스트림 Tekton Catalog 콘텐츠와 함께 설치됩니다.설치 상태를 확인합니다.
TektonHubCR은 안정적인 상태를 유지하는 데 시간이 걸릴 수 있습니다.$ oc get tektonhub.operator.tekton.dev
샘플 출력
NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.1.2. 로그인 및 등급을 사용하여 Tekton Hub 설치
Tekton Hub 아티팩트에 대한 권한 부여 및 등급으로 로그인을 지원하는 사용자 지정 구성으로 클러스터에 Tekton Hub를 설치할 수 있습니다.
사전 요구 사항
-
Red Hat OpenShift Pipelines Operator가 클러스터의 기본
openshift-pipelines네임스페이스에 설치되어 있는지 확인합니다.
절차
- Tekton Hub 리포지토리의 포크를 생성합니다.
- 분기된 리포지토리를 복제합니다.
Git 리포지토리 호스팅 공급자를 사용하여 OAuth 애플리케이션을 생성하고 클라이언트 ID 및 클라이언트 보안을 기록해 둡니다. 지원되는 공급자는 GitHub, GitLab, BitBucket입니다.
-
GitHub OAuth 애플리케이션 의 경우 Homepage URL 및 Authorization 콜백 URL을 <
auth-route>로 설정합니다. -
GitLab OAuth 애플리케이션 의 경우
REDIRECT_URI를 <auth-route>/auth/gitlab/callback으로 설정합니다. -
BitBucket OAuth 애플리케이션 의 경우
callback URL을 <auth-route>로 설정합니다.
-
GitHub OAuth 애플리케이션 의 경우 Homepage URL 및 Authorization 콜백 URL을 <
Tekton Hub API 시크릿을 포함하도록 복제된
리포지토리의 <tekton_hub_repository>/config/02-api/20-api-secret.yaml파일을 편집합니다.apiVersion: v1 kind: Secret metadata: name: tekton-hub-api namespace: openshift-pipelines type: Opaque stringData: GH_CLIENT_ID: 1 GH_CLIENT_SECRET: 2 GL_CLIENT_ID: 3 GL_CLIENT_SECRET: 4 BB_CLIENT_ID: 5 BB_CLIENT_SECRET: 6 JWT_SIGNING_KEY: 7 ACCESS_JWT_EXPIRES_IN: 8 REFRESH_JWT_EXPIRES_IN: 9 AUTH_BASE_URL: 10 GHE_URL: 11 GLE_URL: 12
- 1
- GitHub OAuth 애플리케이션의 클라이언트 ID입니다.
- 2
- GitHub OAuth 애플리케이션의 클라이언트 시크릿.
- 3
- GitLab OAuth 애플리케이션의 클라이언트 ID.
- 4
- GitLab OAuth 애플리케이션의 클라이언트 시크릿.
- 5
- BitBucket OAuth 애플리케이션의 클라이언트 ID입니다.
- 6
- BitBucket OAuth 애플리케이션의 클라이언트 시크릿.
- 7
- 사용자가 생성한 JSON 웹 토큰(JWT)에 서명하는 데 사용되는 긴 임의 문자열입니다.
- 8
- 액세스 토큰이 만료된 후 시간 제한을 추가합니다. 예를 들어
1m. 여기서 m은 분을 나타냅니다. 지원되는 시간 단위는 초(s), 분(m), 시간(h), 일(d), 주(w)입니다. - 9
- 새로 고침 토큰이 만료된 후 시간 제한을 추가합니다. 예를 들어
1m. 여기서m은 분을 나타냅니다. 지원되는 시간 단위는 초(s), 분(m), 시간(h), 일(d), 주(w)입니다. 토큰 새로 고침에 설정된 만료 시간이 토큰 액세스에 설정된 만료 시간보다 큰지 확인합니다. - 10
- OAuth 애플리케이션의 경로 URL입니다.
- 11
- GitHub Enterprise URL: GitHub Enterprise를 사용하여 인증하는 경우. 카탈로그에 대한 URL을 이 필드의 값으로 제공하지 마십시오.
- 12
- GitLab Enterprise URL: GitLab Enterprise를 사용하여 인증하는 경우. 카탈로그에 대한 URL을 이 필드의 값으로 제공하지 마십시오.
참고배포에 관련이 없는 Git 리포지토리 호스팅 서비스 공급자에 대해 사용되지 않은 필드를 삭제할 수 있습니다.
다음 예와 유사한
TektonHubCR을 생성합니다.apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml 2 catalogRefreshInterval: 30m 3
TektonHubCR을 적용합니다.$ oc apply -f <TektonHub>.yaml 1- 1
TektonHubCR의 파일 이름 또는 경로입니다.
참고TektonHubCR을 적용하면 Tekton Hub가openshift-pipelines네임스페이스의 클러스터에 업스트림 Tekton Catalog 콘텐츠와 함께 설치됩니다.설치 상태를 확인합니다.
TektonHubCR은 안정적인 상태를 유지하는 데 시간이 걸릴 수 있습니다.$ oc get tektonhub.operator.tekton.dev NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.2. 선택 사항: Tekton Hub 구성에 새 사용자 추가
절차
클러스터 관리자는 원하는 범위에 따라
config.yaml파일에 새 사용자를 추가할 수 있습니다.... scopes: - name: agent:create users: [<username_1>, <username_2>] 1 - name: catalog:refresh users: [<username_3>, <username_4>] - name: config:refresh users: [<username_5>, <username_6>] default: scopes: - rating:read - rating:write ...- 1
- Git 리포지토리 호스팅 서비스 공급자에 등록된 사용자 이름.
참고사용자가 처음 로그인하면
config.yaml에 추가되는 경우에도 기본 범위만 있습니다. 추가 범위를 활성화하려면 사용자가 한 번 이상 로그인했는지 확인합니다.-
config.yaml파일에서config-refresh범위가 있는지 확인합니다. 구성을 새로 고칩니다.
$ curl -X POST -H "Authorization: <access-token>" \ 1 --header "Content-Type: application/json" \ --data '{"force": true} \ <api-route>/system/config/refresh- 1
- JWT 토큰입니다.
3.7.3. 선택 사항: Tekton Hub에서 사용자 지정 데이터베이스 사용
클러스터 관리자는 Operator가 설치한 기본 PostgreSQL 데이터베이스 대신 Tekton Hub에서 사용자 지정 데이터베이스를 사용할 수 있습니다. 설치 시 사용자 지정 데이터베이스를 연결하고 Tekton Hub에서 제공하는 db-migration,api, ui 인터페이스와 함께 사용할 수 있습니다. 또는 기본 데이터베이스와 함께 설치가 완료된 후에도 사용자 지정 데이터베이스를 Tekton Hub와 연결할 수 있습니다.
절차
다음 키를 사용하여 대상 네임스페이스에
tekton-hub-db라는 시크릿을 생성합니다.-
POSTGRES_HOST -
POSTGRES_DB -
POSTGRES_USER -
POSTGRES_PASSWORD POSTGRES_PORT예: 사용자 정의 데이터베이스 보안
apiVersion: v1 kind: Secret metadata: name: tekton-hub-db labels: app: tekton-hub-db type: Opaque stringData: POSTGRES_HOST: <The name of the host of the database> POSTGRES_DB: <Name of the database> POSTGRES_USER: <The name of user account> POSTGRES_PASSWORD: <The password of user account> POSTGRES_PORT: <The port that the database is listening on> ...참고기본 대상 네임스페이스는
openshift-pipelines입니다.
-
TektonHubCR에서 데이터베이스 secret 특성 값을tekton-hub-db로 설정합니다.예: 사용자 정의 데이터베이스 시크릿 추가
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines db: secret: tekton-hub-db api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml catalogRefreshInterval: 30m ...업데이트된
TektonHubCR을 사용하여 사용자 지정 데이터베이스를 Tekton Hub와 연결합니다.클러스터에 Tekton Hub를 설치할 때 사용자 지정 데이터베이스를 연결하는 경우 업데이트된
TektonHubCR을 적용합니다.$ oc apply -f <tekton-hub-cr>.yaml
또는 Tekton Hub 설치 완료 후 사용자 지정 데이터베이스를 연결하는 경우 기존 TektonHub CR을 업데이트된
CR로 교체합니다.TektonHub$ oc replace -f <tekton-hub-cr>.yaml
설치 상태를 확인합니다.
TektonHubCR은 안정적인 상태를 유지하는 데 시간이 걸릴 수 있습니다.$ oc get tektonhub.operator.tekton.dev
샘플 출력
NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.4. Red Hat OpenShift Pipelines Operator를 1.7에서 1.8로 업그레이드한 후 Tekton Hub 권한 비활성화
Red Hat OpenShift Pipelines Operator 1.8을 사용하여 Tekton Hub를 설치하면 기본 설치에 대해 Tekton Hub 아티팩트에 대한 로그인 권한 부여 및 등급이 비활성화됩니다. 그러나 Operator를 1.7에서 1.8로 업그레이드할 때 클러스터의 Tekton Hub 인스턴스에서 로그인 권한 부여 및 등급이 자동으로 비활성화되지 않습니다.
Operator를 1.7에서 1.8로 업그레이드한 후 Tekton Hub에 대한 로그인 권한 부여 및 등급을 비활성화하려면 다음 절차의 단계를 수행합니다.
사전 요구 사항
-
Red Hat OpenShift Pipelines Operator가 클러스터의 기본
openshift-pipelines네임스페이스에 설치되어 있는지 확인합니다.
절차
Operator 1.7용 Tekton Hub를 수동으로 설치하는 동안 생성한 기존 Tekton Hub API 시크릿을 삭제합니다.
$ oc delete secret tekton-hub-api -n <targetNamespace> 1- 1
- Tekton Hub API 시크릿 및 Tekton Hub CR의 공통 네임스페이스입니다. 기본적으로 대상 네임스페이스는
openshift-pipelines입니다.
Tekton Hub API의
TektonInstallerSet오브젝트를 삭제합니다.$ oc get tektoninstallerset -o name | grep tekton-hub-api | xargs oc delete
참고삭제 후 Operator는 새 Tekton Hub API 설치 프로그램이 자동으로 설정됩니다.
기다린 후 Tekton Hub의 상태를 확인합니다.
READY열에True가 표시되면 다음 단계를 진행합니다.$ oc get tektonhub hub
샘플 출력
NAME VERSION READY REASON APIURL UIURL hub 1.8.0 True https://tekton-hub-api-openshift-pipelines.apps.example.com https://tekton-hub-ui-openshift-pipelines.apps.example.com
Tekton Hub UI의
ConfigMap오브젝트를 삭제합니다.$ oc delete configmap tekton-hub-ui -n <targetNamespace> 1- 1
- Tekton Hub UI 및 Tekton Hub CR의 공통 네임스페이스입니다. 기본적으로 대상 네임스페이스는
openshift-pipelines입니다.
Tekton Hub UI의
TektonInstallerSet오브젝트를 삭제합니다.$ oc get tektoninstallerset -o name | grep tekton-hub-ui | xargs oc delete
참고삭제 후 Operator는 새 Tekton Hub UI 설치 프로그램이 설정된 새 Tekton Hub UI 설치 프로그램을 자동으로 생성합니다.
기다린 후 Tekton Hub의 상태를 확인합니다.
READY열에True가 표시되면 다음 단계를 진행합니다.$ oc get tektonhub hub
샘플 출력
NAME VERSION READY REASON APIURL UIURL hub 1.8.0 True https://tekton-hub-api-openshift-pipelines.apps.example.com https://tekton-hub-ui-openshift-pipelines.apps.example.com
3.7.5. 개발자 화면에서 Tekton Hub 비활성화
클러스터 관리자는 OpenShift Container Platform 클러스터의 개발자 관점의 파이프라인 빌더 페이지에서 작업 및 파이프라인과 같은 Tekton Hub 리소스를 표시하지 않도록 선택할 수 있습니다.
사전 요구 사항
-
Red Hat OpenShift Pipelines Operator가 클러스터에 설치되어 있고
oc명령줄 툴을 사용할 수 있는지 확인합니다.
절차
개발자 화면에서 Tekton Hub 리소스 표시를 선택하려면
TektonConfigCR(사용자 정의 리소스)의enable-devconsole-integration필드 값을false로 설정합니다.apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: targetNamespace: openshift-pipelines ... hub: params: - name: enable-devconsole-integration value: "false" ...기본적으로
TektonConfigCR에는enable-devconsole-integration필드가 포함되어 있지 않으며 Red Hat OpenShift Pipelines Operator는 해당 값이true라고 가정합니다.
Tekton Hub UI를 완전히 비활성화하려면 개발자 화면에 Tekton Hub 리소스를 표시하는 대신 TektonHub CR에서 enableUI 필드를 false 로 설정합니다.