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
네임스페이스에 설치되어 있는지 확인합니다.
절차
다음 예와 유사한
TektonHub
CR을 생성합니다.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
TektonHub
CR을 적용합니다.$ oc apply -f <TektonHub>.yaml 1
- 1
TektonHub
CR의 파일 이름 또는 경로입니다.
참고TektonHub
CR을 적용하면 Tekton Hub가openshift-pipelines
네임스페이스의 클러스터에 업스트림 Tekton Catalog 콘텐츠와 함께 설치됩니다.설치 상태를 확인합니다.
TektonHub
CR은 안정적인 상태를 유지하는 데 시간이 걸릴 수 있습니다.$ 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 리포지토리 호스팅 서비스 공급자에 대해 사용되지 않은 필드를 삭제할 수 있습니다.
다음 예와 유사한
TektonHub
CR을 생성합니다.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
TektonHub
CR을 적용합니다.$ oc apply -f <TektonHub>.yaml 1
- 1
TektonHub
CR의 파일 이름 또는 경로입니다.
참고TektonHub
CR을 적용하면 Tekton Hub가openshift-pipelines
네임스페이스의 클러스터에 업스트림 Tekton Catalog 콘텐츠와 함께 설치됩니다.설치 상태를 확인합니다.
TektonHub
CR은 안정적인 상태를 유지하는 데 시간이 걸릴 수 있습니다.$ 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
입니다.
-
TektonHub
CR에서 데이터베이스 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 ...
업데이트된
TektonHub
CR을 사용하여 사용자 지정 데이터베이스를 Tekton Hub와 연결합니다.클러스터에 Tekton Hub를 설치할 때 사용자 지정 데이터베이스를 연결하는 경우 업데이트된
TektonHub
CR을 적용합니다.$ oc apply -f <tekton-hub-cr>.yaml
또는 Tekton Hub 설치 완료 후 사용자 지정 데이터베이스를 연결하는 경우 기존 TektonHub CR을 업데이트된
TektonHub
$ oc replace -f <tekton-hub-cr>.yaml
설치 상태를 확인합니다.
TektonHub
CR은 안정적인 상태를 유지하는 데 시간이 걸릴 수 있습니다.$ 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 리소스 표시를 선택하려면
TektonConfig
CR(사용자 정의 리소스)의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" ...
기본적으로
TektonConfig
CR에는enable-devconsole-integration
필드가 포함되어 있지 않으며 Red Hat OpenShift Pipelines Operator는 해당 값이true
라고 가정합니다.
Tekton Hub UI를 완전히 비활성화하려면 개발자 화면에 Tekton Hub 리소스를 표시하는 대신 TektonHub
CR에서 enableUI
필드를 false
로 설정합니다.