3.11. TektonConfig 사용자 정의 리소스에서 구성 사용자 정의

Red Hat OpenShift Pipelines에서는 TektonConfig CR(사용자 정의 리소스)을 사용하여 다음 구성을 사용자 지정할 수 있습니다.

  • Red Hat OpenShift Pipelines Control Plane 구성
  • 기본 서비스 계정 변경
  • 서비스 모니터 비활성화
  • 파이프라인 확인기 구성
  • 클러스터 작업 및 파이프라인 템플릿 비활성화
  • Tekton Hub 통합 비활성화
  • RBAC 리소스의 자동 생성 비활성화
  • 작업 실행 및 파이프라인 실행 정리

3.11.1. 사전 요구 사항

  • Red Hat OpenShift Pipelines Operator가 설치되어 있습니다.

3.11.2. Red Hat OpenShift Pipelines Control Plane 구성

TektonConfig CR(사용자 정의 리소스)에서 구성 필드를 편집하여 OpenShift Pipelines 컨트롤 플레인을 사용자 지정할 수 있습니다. Red Hat OpenShift Pipelines Operator는 OpenShift Pipelines 컨트롤 플레인을 사용할 수 있도록 기본값을 사용하여 구성 필드를 자동으로 추가합니다.

절차

  1. 웹 콘솔의 관리자 화면에서 AdministrationCustomResourceDefinitions 로 이동합니다.
  2. 이름으로 검색 상자를 사용하여 tektonconfigs.operator.tekton.dev CRD(사용자 정의 리소스 정의)를 검색합니다. TektonConfig 를 클릭하여 CRD 세부 정보 페이지를 확인합니다.
  3. Instances 탭을 클릭합니다.
  4. config 인스턴스를 클릭하여 TektonConfig CR 세부 정보를 확인합니다.
  5. YAML 탭을 클릭합니다.
  6. 요구 사항에 따라 TektonConfig YAML 파일을 편집합니다.

    기본값이 있는 TektonConfig CR의 예

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      pipeline:
        running-in-environment-with-injected-sidecars: true
        metrics.taskrun.duration-type: histogram
        metrics.pipelinerun.duration-type: histogram
        await-sidecar-readiness: true
        params:
          - name: enableMetrics
            value: 'true'
        default-service-account: pipeline
        require-git-ssh-secret-known-hosts: false
        enable-tekton-oci-bundles: false
        metrics.taskrun.level: task
        metrics.pipelinerun.level: pipeline
        enable-api-fields: stable
        enable-provenance-in-status: false
        enable-custom-tasks: true
        disable-creds-init: false
        disable-affinity-assistant: true

3.11.2.1. 기본값을 사용하여 수정 가능한 필드

다음 목록에는 TektonConfig CR에 기본값이 있는 모든 수정 가능한 필드가 포함되어 있습니다.

  • running-in-environment-with-injected-sidecars (기본값: true): Istio와 같은 삽입된 사이드카를 사용하지 않는 클러스터에서 파이프라인이 실행되는 경우 이 필드를 false 로 설정합니다. false 로 설정하면 파이프라인이 작업 실행을 시작하는 데 걸리는 시간이 줄어듭니다.

    참고

    삽입된 사이드카를 사용하는 클러스터의 경우 이 필드를 false 로 설정하면 예기치 않은 동작이 발생할 수 있습니다.

  • await-sidecar-readiness (기본값: true): OpenShift Pipelines가 작동을 시작하기 전에 TaskRun 사이드카 컨테이너가 실행될 때까지 대기하지 못하도록 이 필드를 false 로 설정합니다. 이를 통해 DownwardAPI 볼륨 유형을 지원하지 않는 환경에서 작업을 실행할 수 있습니다.
  • default-service-account (기본값: pipeline): 이 필드에는 TaskRunPipelineRun 리소스에 사용할 기본 서비스 계정 이름이 포함되어 있습니다.
  • require-git-ssh-secret-known-hosts (기본값: false): 이 필드를 true 로 설정하려면 Git SSH 시크릿에 known_hosts 필드를 포함해야 합니다.

    • Git SSH 시크릿 구성에 대한 자세한 내용은 추가 리소스 섹션에서 Git에 대한 SSH 인증 구성 을 참조하십시오.
  • enable-tekton-oci-bundles (기본값: false): Tekton OCI 번들이라는 실험적인 알파 기능을 사용할 수 있도록 이 필드를 true 로 설정합니다.
  • enable-api-fields (기본값: stable): 이 필드를 설정하면 활성화된 기능이 결정됩니다. 허용 가능한 값은 stable,beta 또는 alpha 입니다.

    참고

    Red Hat OpenShift Pipelines는 알파 값을 지원하지 않습니다.

  • enable-provenance-in-status (기본값: false): TaskRunPipelineRun 상태의 검증 필드를 채울 수 있도록 이 필드를 true 로 설정합니다. provenance 필드에 는 원격 작업 또는 파이프라인 정의가 가져온 소스의 소스와 같이 작업 실행 및 파이프라인 실행에 사용되는 리소스에 대한 메타데이터가 포함되어 있습니다.
  • enable-custom-tasks (기본값: true): 파이프라인에서 사용자 지정 작업 사용을 비활성화하려면 이 필드를 false 로 설정합니다.
  • disable-creds-init (기본값: false): OpenShift Pipelines에서 연결된 서비스 계정을 스캔하고 단계에 인증 정보를 삽입하지 못하도록 이 필드를 true 로 설정합니다.
  • disable-affinity-assistant (기본값: true): 영구 볼륨 클레임 작업 공간을 공유하는 각 TaskRun 리소스의 선호도 도우미를 활성화하려면 이 필드를 false 로 설정합니다.

메트릭 옵션

TektonConfig CR에서 다음 메트릭 필드의 기본값을 수정할 수 있습니다.

  • metrics.taskrun.duration-typemetrics.pipelinerun.duration-type (기본값: 히스토그램): 이러한 필드를 설정하면 작업 또는 파이프라인 실행의 기간 유형이 결정됩니다. 허용 가능한 값은 게이지 또는 히스토그램입니다.
  • metrics.taskrun.level (기본값: 작업): 이 필드는 작업 실행 메트릭의 수준을 결정합니다. 허용 가능한 값은 taskrun,task 또는 namespace 입니다.
  • metrics.pipelinerun.level (기본값: pipeline): 이 필드는 파이프라인 실행 메트릭의 수준을 결정합니다. 허용되는 값은 pipelinerun,pipeline 또는 namespace 입니다.

3.11.2.2. 선택적 구성 필드

다음 필드에는 기본값이 없으며 구성하는 경우에만 간주됩니다. 기본적으로 Operator는 TektonConfig CR(사용자 정의 리소스)에서 이러한 필드를 추가하고 구성하지 않습니다.

  • default-timeout-minutes: 이 필드는 생성할 때 지정되지 않은 경우 TaskRunPipelineRun 리소스에 대한 기본 시간 초과를 설정합니다. 작업 실행 또는 파이프라인 실행이 설정된 시간(분)보다 더 많은 시간이 걸리면 작업 실행 또는 파이프라인 실행이 시간 초과되고 취소됩니다. 예를 들어 default-timeout-minutes: 60 은 60분을 기본값으로 설정합니다.
  • default-managed-by-label-value: 이 필드에는 모든 TaskRun Pod에 적용되는 app.kubernetes.io/managed-by 라벨에 지정된 기본값이 포함되어 있습니다. 예: default-managed-by-label-value: tekton-pipelines.
  • default-pod-template: 이 필드는 지정되지 않은 경우 기본 TaskRunPipelineRun Pod 템플릿을 설정합니다.
  • default-cloud-events-sink: 이 필드는 지정되지 않은 경우 TaskRunPipelineRun 리소스에 사용되는 기본 CloudEvents 싱크를 설정합니다.
  • default-task-run-workspace-binding: 이 필드에는 Task 리소스에서 선언하는 작업 공간에 대한 기본 작업 공간 구성이 포함되어 있지만 TaskRun 리소스는 명시적으로 선언하지 않습니다.
  • default-affinity-assistant-pod-template: 이 필드는 유사성 도우미 Pod에 사용되는 기본 PipelineRun Pod 템플릿을 설정합니다.
  • default-max-matrix-combinations-count: 이 필드에는 매트릭스에서 생성된 기본 최대 조합 수가 포함됩니다.

3.11.3. OpenShift Pipelines의 기본 서비스 계정 변경

.spec.pipeline.spec.trigger 사양에서 default-service-account 필드를 편집하여 OpenShift Pipelines의 기본 서비스 계정을 변경할 수 있습니다. 기본 서비스 계정 이름은 pipeline 입니다.

예제

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  pipeline:
    default-service-account: pipeline
  trigger:
    default-service-account: pipeline
    enable-api-fields: stable

3.11.4. 서비스 모니터 비활성화

OpenShift Pipelines의 일부인 서비스 모니터를 비활성화하여 Telemetry 데이터를 노출할 수 있습니다. 서비스 모니터를 비활성화하려면 TektonConfig CR(사용자 정의 리소스)의 .spec.pipeline 사양에서 enableMetrics 매개변수를 false 로 설정합니다.

예제

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  pipeline:
    params:
       - name: enableMetrics
         value: 'false'

3.11.5. 파이프라인 확인기 구성

TektonConfig CR(사용자 정의 리소스)에서 파이프라인 해석기를 구성할 수 있습니다. 이러한 파이프라인 확인기를 활성화하거나 비활성화할 수 있습니다.

  • enable-bundles-resolver
  • enable-cluster-resolver
  • enable-git-resolver
  • enable-hub-resolver

예제

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  pipeline:
    enable-bundles-resolver: true
    enable-cluster-resolver: true
    enable-git-resolver: true
    enable-hub-resolver: true

TektonConfig CR에 해결자 특정 구성을 제공할 수도 있습니다. 예를 들어 map[string]string 형식으로 다음 필드를 정의하여 각 파이프라인 확인자에 대한 구성을 설정합니다.

예제

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  pipeline:
    bundles-resolver-config:
      default-service-account: pipelines
    cluster-resolver-config:
      default-namespace: test
    git-resolver-config:
      server-url: localhost.com
    hub-resolver-config:
      default-tekton-hub-catalog: tekton

3.11.6. 클러스터 작업 및 파이프라인 템플릿 비활성화

기본적으로 TektonAddon CR(사용자 정의 리소스)은 클러스터의 OpenShift Pipelines와 함께 clusterTaskspipelineTemplates 리소스를 설치합니다.

.spec.addon 사양에서 매개변수 값을 false 로 설정하여 clusterTaskspipelineTemplates 리소스 설치를 비활성화할 수 있습니다. 또한 communityClusterTasks 매개변수를 비활성화할 수 있습니다.

예제

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  addon:
    params:
      - name: clusterTasks
        value: 'false'
      - name: pipelineTemplates
        value: 'false'
      - name: communityClusterTasks
        value: 'true'

3.11.7. Tekton Hub 통합 비활성화

TektonConfig CR(사용자 정의 리소스)에서 enable-devconsole-integration 매개변수를 false 로 설정하여 웹 콘솔 개발자 화면에서 Tekton Hub의 통합을 비활성화할 수 있습니다.

Tekton Hub 비활성화 예

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  hub:
    params:
      - name: enable-devconsole-integration
        value: false

3.11.8. RBAC 리소스의 자동 생성 비활성화

Red Hat OpenShift Pipelines Operator의 기본 설치는 ^(openshift|kube)-* 정규식 패턴과 일치하는 네임스페이스를 제외하고 클러스터의 모든 네임스페이스에 대해 여러 개의 RBAC(역할 기반 액세스 제어) 리소스를 생성합니다. 이러한 RBAC 리소스 중에서 pipelines-scc-rolebinding SCC(보안 컨텍스트 제약 조건) 역할 바인딩 리소스는 연결된 pipelines-scc SCC에 RunAsAny 권한이 있으므로 잠재적인 보안 문제입니다.

Red Hat OpenShift Pipelines Operator가 설치된 후 클러스터 전체 RBAC 리소스의 자동 생성을 비활성화하려면 클러스터 관리자가 클러스터 수준 TektonConfig CR(사용자 정의 리소스)에서 createRbacResource 매개변수를 false 로 설정할 수 있습니다.

TektonConfig CR의 예

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
spec:
  params:
  - name: createRbacResource
    value: "false"
...

주의

클러스터 관리자 또는 적절한 권한이 있는 사용자는 모든 네임스페이스에 대한 RBAC 리소스 자동 생성을 비활성화하면 기본 ClusterTask 리소스가 작동하지 않습니다. ClusterTask 리소스가 작동하려면 의도한 각 네임스페이스에 대해 RBAC 리소스를 수동으로 생성해야 합니다.

3.11.9. 작업 실행 및 파이프라인 실행 자동 정리

오래된 TaskRunPipelineRun 오브젝트와 실행된 인스턴스는 활성 실행에 사용할 수 있는 물리적 리소스를 차지합니다. 이러한 리소스를 최적으로 사용하기 위해 Red Hat OpenShift Pipelines는 다양한 네임스페이스에서 사용하지 않는 오브젝트와 해당 인스턴스를 자동으로 제거하는 정리기 구성 요소를 제공합니다.

참고

TektonConfig 사용자 정의 리소스를 사용하여 전체 설치에 대한 정리기를 구성하고 네임스페이스 주석을 사용하여 네임스페이스 구성을 수정할 수 있습니다. 그러나 네임스페이스에서 개별 작업 실행 또는 파이프라인 실행을 선택적으로 자동 실행할 수 없습니다.

3.11.9.1. pruner 구성

TektonConfig 사용자 지정 리소스를 사용하여 파이프라인 실행 및 작업 실행과 관련된 리소스의 주기적 정리를 구성할 수 있습니다.

다음 예제는 기본 구성에 해당합니다.

정리기 구성의 예

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
# ...
spec:
  pruner:
    resources:
      - taskrun
      - pipelinerun
    keep: 100
    prune-per-resource: false
    schedule: "* 8 * * *"
# ...

표 3.18. 정리기 구성에 지원되는 매개변수

매개변수설명

스케줄

정리 프로세스 실행을 위한 Cron 스케줄입니다. 기본 일정은 매일 08:00에 프로세스를 실행합니다. Cron 일정 구문에 대한 자세한 내용은 Kubernetes 문서의 Cron schedule 구문을 참조하십시오.

resources

pruner가 적용되는 리소스 유형입니다. 사용 가능한 리소스 유형은 taskrunpipelinerun입니다.

keep

유지할 모든 유형의 최근 리소스 수입니다.

prune-per-resource

false 로 설정하면 keep 매개변수의 값이 총 작업 실행 또는 파이프라인 실행 수를 나타냅니다. 예를 들어 keep100 으로 설정된 경우 pruner는 최신 작업 실행 및 100개의 최신 파이프라인 실행과 기타 모든 리소스를 제거합니다.

true 로 설정하면 각 파이프라인을 참조하는 파이프라인 실행과 각 작업을 참조하는 작업 실행에 대해 keep 매개변수의 값이 별도로 계산됩니다. 예를 들어 keep100 으로 설정된 경우 pruner는 Pipeline1 에 대해 최신 파이프라인 실행 100개, Pipeline2 용 최신 파이프라인 실행, Task1 에 대한 최신 작업 실행 100개를 유지하고 다른 모든 리소스를 제거합니다.

keep-since

리소스를 유지할 최대 시간(분)입니다. 예를 들어 5일 전에 생성된 리소스를 유지하려면 keep-since7200 으로 설정합니다.

참고

keepkeep-since 매개변수는 함께 사용할 수 없습니다. 구성에 해당 중 하나만 사용합니다.

3.11.9.2. 작업 실행 및 파이프라인 실행을 자동으로 정리하기 위한 주석

네임스페이스에서 작업 실행 및 파이프라인 실행 자동 정리 구성을 수정하려면 네임스페이스에 주석을 설정할 수 있습니다.

다음 namespace 주석은 TektonConfig 사용자 정의 리소스의 해당 키와 동일한 의미를 갖습니다.

  • operator.tekton.dev/prune.schedule
  • operator.tekton.dev/prune.resources
  • operator.tekton.dev/prune.keep
  • operator.tekton.dev/prune.prune-per-resource
  • operator.tekton.dev/prune.keep-since
참고

operator.tekton.dev/prune.resources 주석은 쉼표로 구분된 목록을 허용합니다. 작업 실행 및 파이프라인 실행을 모두 정리하려면 이 주석을 "taskrun, pipelinerun" 으로 설정합니다.

다음과 같은 추가 네임스페이스 주석을 사용할 수 있습니다.

  • operator.tekton.dev/prune.skip: true 로 설정하면 주석이 구성된 네임스페이스가 정리되지 않습니다.
  • operator.tekton.dev/prune.strategy: 이 주석의 값을 keep 또는 keep-since 로 설정합니다.

예를 들어 다음 주석은 지난 5일 동안 생성된 모든 작업 실행 및 파이프라인 실행을 유지하고 이전 리소스를 삭제합니다.

자동 실행 주석의 예

kind: Namespace
apiVersion: v1
# ...
spec:
  annotations:
    operator.tekton.dev/prune.resources: "taskrun, pipelinerun"
    operator.tekton.dev/prune.keep-since: 7200
# ...

3.11.10. 추가 리소스