Delivery Pipeline의 문제점 해결
Delivery Pipeline 사용 중에 발생할 수 있는 일반 문제점에는 파이프라인 작성 또는 도구 통합 구성 문제가 포함됩니다. 대부분의 경우 몇 가지 간단한 단계를 수행하여 이러한 문제점에서 복구할 수 있습니다.
도구 체인을 작성했지만 Delivery Pipeline 서비스가 초기화되지 않습니다. 파이프라인 초기화가 완료되지 않는 이유는 무엇입니까?
GitHub 도구 통합을 다시 구성하고 저장해야 할 수도 있습니다.
도구 체인의 GitHub 도구 통합이 잘못 구성되어, 파이프라인 초기화가 완료되지 않을 수 있습니다.
GitHub 도구 통합의 실패를 초래하는 이벤트 문제점이 발생했습니다.
GitHub 도구 통합을 다시 구성하고 저장하십시오.
- IBM Cloud 콘솔에서 메뉴 아이콘
> 플랫폼 자동화 > 툴체인을 클릭합니다. 도구 체인 페이지에서 작성한 도구 체인을 클릭하여 해당 개요 페이지를 여십시오. 또는 사용자 앱의 앱 세부사항 페이지에서 도구 체인 이름을 클릭하십시오.
- 도구 체인의 개요 페이지에 있는 저장소 카드에서 GitHub 도구 통합을 찾으십시오.
- 메뉴를 클릭하여 구성 옵션에 액세스하고, 설정을 업데이트한 후 통합 저장을 클릭하십시오.
- Delivery Pipeline 카드에서 Delivery Pipeline 도구 통합을 클릭하여 파이프라인 설정을 확인하십시오.
작성 중인 템플리트로부터 도구 체인을 작성할 때 파이프라인이 올바르게 작성되지 않는 이유는 무엇입니까?
pipeline.yaml 정의의 오류로 인해 파이프라인에서 작업 및 단계와 같은 리소스가 누락되었을 수 있습니다.
작성하고 있는 템플리트로부터 도구 체인을 작성하려고 시도하면 파이프라인 페이지에서 다음 오류 메시지가 수신됩니다.
This pipeline was created, but might be missing jobs, stages, or other resources. You can use this pipeline, or if you prefer, you can delete it and create another pipeline.
일반적으로 이 문제는 pipeline.yaml 정의의 오류로 인해 발생합니다.
다음 방법을 사용하여 이 오류를 디버그할 수 있습니다.
-
파이프라인 사용자 인터페이스를 사용하여, 현재 템플리트로 빌드하려고 시도 중인 파이프라인을 복제하는 예제 파이프라인을 작성하십시오. 파이프라인 URL에
/yaml을 추가하여, 명백한 차이점을 찾기 위해 사용할 수 있는 유사한 pipeline.yaml 파일을 생성하십시오. 예를 들어,https://cloud.ibm.com/devops/pipelines/<your pipeline id>/yaml?env_id=<your region>입니다. -
명령행 모드 도구 체인 작성 메커니즘을 사용하십시오. 도구 체인 작성 페이지에서 디버거를 열고
window.Testflags = {nocreate: 1}표현식을 평가하십시오. 이 모드에서 도구 체인 작성을 클릭하는 경우에는 도구 체인이 작성되지 않습니다. 대신, API에 전달되는 정보가 검토할 수 있도록 콘솔에 리턴됩니다.
파이프라인을 실행하려고 했는데, Git 저장소 액세스에 대한 오류가 발생한 이유는 무엇입니까?
파이프라인은 액세스 토큰을 사용하여 Git 저장소를 복제합니다. 액세스 토큰이 유효하지 않을 경우 Git 통합 소유자가 Git 저장소에 액세스할 수 없습니다.
지원되는 Git 통합은 GitHub, GitLab, Bitbucket 또는 Git Repos and Issue Tracking 도구 통합입니다.
파이프라인을 실행하려고 하면 다음 오류 메시지가 수신됩니다.
The access token for this git repository is no longer valid. Please reconfigure the git integration to ensure the integration owner has access to this repository.
파이프라인이 Git 저장소를 복제하는 데 사용하는 액세스 토큰이 더 이상 유효하지 않습니다. 이 문제는 토큰이 무효화되었기 때문에 발생할 수 있습니다. 권한 변경으로 인해 Git 통합의 소유자가 저장소 액세스 권한을 상실한 경우에도 액세스 토큰이 유효하지 않을 수 있습니다.
Git 통합을 다시 구성하고 저장하십시오.
- IBM Cloud 콘솔에서 메뉴 아이콘
> 플랫폼 자동화 > 툴체인을 클릭합니다. 도구 체인 페이지에서 업데이트할 Git 통합이 포함된 도구 체인을 클릭하여 해당 개요 페이지를 여십시오. 또는 사용자 앱의 앱 세부사항 페이지에서 도구 체인 이름을 클릭하십시오.
- 도구 체인의 개요 페이지에 있는 저장소 카드에서 Git 도구 통합을 찾으십시오.
- 메뉴를 클릭하여 구성 옵션에 액세스하고, Git 통합 소유자에 대해 권한이 부여된 Git 계정을 선택한 후 통합 저장을 클릭하십시오.
- 파이프라인을 다시 실행하십시오.
Delivery Pipeline을 사용하여 Kubernetes에 배치하려고 했으나 올바르지 않은 오브젝트에 대한 오류가 발생한 이유는 무엇입니까?
1.0 파이프라인 기본 이미지에는 kubectl v1.14.2가 포함됩니다. 연결되는 Kubernetes 클러스터가 최신 버전의 Kubernetes를 실행하는 경우 오류를 수신할 수 있습니다.
Delivery Pipeline을 사용하여 Kubernetes에 배치하려는 경우 다음 오류 메시지를 수신합니다.
error:SchemaeError(io.k8s.api.core.v1.SecretProjection): invalid object doesn't have additional properties
일반적으로 이 문제는 파이프라인 기본 이미지의 kubectl 명령 버전이 클러스터에서 실행 중인 Kubernetes 버전과 호환되지 않을 때 발생합니다.
다음 방법을 사용하여 이 문제점을 해결할 수 있습니다.
-
최신 파이프라인 기본 이미지 버전을 사용하십시오. 이 이미지에는 작성될 때 현재 릴리스된 버전의 kubectl이 포함됩니다. 최신 이미지 버전을 지정하는 방법에 대한 정보는 이미지 버전 지정을 참조하십시오.
-
파이프라인 작업이 올바른 kubectl 버전을 실행하는지 확인하십시오. 예를 들어, 파이프라인 작업의 처음에 다음 행을 추가하여 kubectl v1.14.2를 실행하십시오.
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
1.0 파이프라인 기본 이미지에서 kubectl v1.14.2를 실행하는 경우 sudo 옵션을 사용할 수 없습니다. sudo 행을 다음 명령으로 바꿔 경로에 kubectl을 추가하십시오.
mkdir ~/.bin && export PATH=~/.bin:$PATH && mv ./kubectl ~/.bin/kubectl
필요한 정확한 버전의 kubectl에 액세스하는 방법에 대한 자세한 내용은 kubectl 설치 및 설정을 참조한다.
파이프라인을 실행하려고 했는데, IBM Cloud Container Registry에서 403 오류가 발생한 이유는 무엇입니까?
IBM Cloud® Container Registry 파이프라인은 IBM Cloud Container Registry로(에서) 이미지를 푸시하고 가져옵니다. IBM Cloud Container Registry 서비스 요금제는 저장 용량을 결정하고 비공개 이미지에 사용할 수 있는 트래픽을 가져옵니다.
파이프라인을 실행하려고 하면 다음 오류 메시지가 수신됩니다.
Failed to pull image "us.icr.io/sdl-ns/achilles:a100-p203-6-20190717161046-78fbc8a3a0fbc8571d887e57499642e0326e7035": rpc error: code = Unknown desc = failed to pull and unpack image "us.icr.io/sdl-ns/achilles:a100-p203-6-20190717161046-78fbc8a3a0fbc8571d887e57499642e0326e7035": failed to copy: httpReaderSeeker: failed open: unexpected status code https://us.icr.io/v2/sdl-ns/achilles/blobs/sha256:365b19774a508fd998bc636981cb9869a406786ad811e51937fa6fb089c86005: 403 Forbidden
Docker 이미지가 페치되지 않도록 가져오기 트래픽 할당량 한계가 초과될 수 있습니다.
이미지를 저장하고 가져오려면 할당량 한계 및 사용량을 검토하십시오. 사용된 스토리지를 비우고 서비스 플랜을 변경하거나 할당량 한계를 변경하여 지정된 할당량 한계를 유지하십시오.
내 앱을 단일 파이프라인 작업으로 컴파일하려고 시도했습니다. 실패한 이유는 무엇인가요?
단일 파이프라인 작업으로 앱을 빌드하려면 (파일 저장소가 아닌) 4GB의 메모리가 필요합니다.
내 앱을 단일 파이프라인 작업으로 컴파일하려고 시도하는 경우 빌드 작업이 예상치 못한 오류로 실패합니다.
단일 파이프라인 작업으로 컴파일하려면 앱에 4GB 이상의 메모리가 필요합니다.
단일 파이프라인 작업으로 앱을 빌드하려면 다음을 수행하십시오.
- IBM Cloud® Continuous Delivery Pipeline Private Worker를 작성하십시오.
- Private Worker를 사용하도록 빌드 작업을 구성하십시오.
Delivery Pipeline이 방화벽을 통해 통신할 수 없는 이유는 무엇입니까?
방화벽 구성으로 인해 Delivery Pipeline이 방화벽 뒤에 있는 환경과 통신할 수 없습니다.
Delivery Pipeline을 사용하려는 경우 내 방화벽을 통해 통신할 수 없습니다.
방화벽은 Delivery Pipeline이 방화벽 뒤에 있는 환경과 통신할 수 있도록 구성되어야 합니다.
Delivery Pipeline이 방화벽 뒤에 있는 리소스에 액세스할 수 있도록 방화벽 구성을 업데이트할 수 있습니다. 해당 지역에 맞게 허용 목록 CIS (allowlist)과 서브넷 범위를 사용하십시오.
내 파이프라인 트리거 또는 정의에 저장소 참조가 고정되어 있다는 알림을 받은 이유는 무엇입니까?
파이프라인 트리거 또는 정의에 저장된 통합에 대한 참조가 올바르지 않게 만드는 사용자의 도구 체인에서 저장소 통합을 변경, 추가 또는 제거했습니다.
내 도구 체인에서 저장소 통합을 변경, 추가 또는 제거하는 경우, 경고 아이콘 및 유효성 검증 오류가 내 파이프라인 구성에 표시됩니다.
특정 시나리오에서는 사용자의 도구 체인에서 저장소 통합을 변경, 추가 또는 제거할 때 파이프라인 트리거 또는 정의에 저장된 이러한 통합에 대한 참조가 유효하지 않을 수 있습니다.
일치하는 저장소 통합이 도구 체인에 있는 경우 파이프라인은 이러한 참조를 자동으로 업데이트하여 올바르지 않은 통합 참조를 수정합니다. 알림은 다음 메시지 중 하나와 함께 UI에 표시됩니다.
Repository reference fixed in the following triggers: [list of triggers]Repository reference fixed in the following definitions: [list of definitions]
이러한 알림 중 하나가 표시되지만 구성에 경고 또는 오류가 표시되지 않으면 추가 조치가 필요하지 않습니다. 경고 또는 오류가 계속 표시되는 경우, 트리거 또는 정의를 다시 업데이트하거나 작성해야 합니다.
파이프라인이 IBM Cloud Object Storage 비공개 엔드포인트에 연결하려고 할 때 시간 초과가 발생하는 이유는 무엇인가요?
파이프라인을 실행할 때, 비공개 엔드포인트를 IBM Cloud Object Storage 사용하는 요청은 응답 없이 시간 초과됩니다. 이 시간 초과로 인해 파이프라인이 실패할 수 있습니다.
IBM Cloud Object Storage 모든 IBM Cloud 클러스터 유형에서 사설 엔드포인트에 접근할 수 있는 것은 아닙니다. 프라이빗 IBM Cloud Object Storage 엔드포인트는 프라이빗 VPC( IBM Cloud® Virtual Private Cloud 가상 사설 클라우드) 내 클러스터에서 실행되는 프라이빗 워커에서는 접근할 수 없습니다.
모든 s3.private.*IBM Cloud Object Storage 엔드포인트를 s3.direct.* 엔드포인트로 교체하십시오. s3.direct.* 엔드포인트는 모든 IBM Cloud 클러스터 유형에서 IBM Cloud Object Storage 와 통신하는 직접 엔드포인트입니다.
보안 특성과 관련된 오류로 인해 파이프라인이 실패하는 이유는 무엇입니까?
PipelineRuns 파이프라인 실행 시작 시 파이프라인 내 보안 속성 중 하나라도 해결되지 않으면 오류가 발생합니다.
시크릿 저장소 또는 Secrets Manager, Key Protect 또는 HashiCorp Vault 에서 시크릿 값을 검색할 수 없는 파이프라인은 어떤 속성을 확인할 수 없는지 나타내는 오류 메시지와 함께 실패합니다. 특성이 트리거된 실행에서 직접 사용되지 않는 경우에도 해결 실패가 발생할 수 있습니다. 예를 들어, 저장소의 시크릿에 대한 경로가 더 이상 올바르지 않거나 시크릿 저장소에 액세스할 수 없거나 권한 문제가 있는 경우 해결 실패가 발생할 수 있습니다.
파이프라인에 현재 해결되지 않는 보안 속성이 포함된 경우 Secrets Manager, Key Protect 또는 HashiCorp Vault 에 있는 유효하고 검색 가능한 비밀을 참조하도록 이러한 속성을 업데이트하세요.
파이프라인이 파이프라인 레벨 환경 특성이 아닌 파이프라인 트리거 특성으로 트리거된 PipelineRun 의 성공적인 완료에 필요한 보안 특성만 지정하는지 확인하십시오. 필요한 경우에만 파이프라인 레벨 환경 특성을 사용하십시오.
파이프라인 정의를 페치하는 중에 파이프라인에서 오류를 보고하는 이유는 무엇입니까?
파이프라인 정의 가져오기와 관련하여 페이지에 Delivery Pipeline 오류가 발생합니다. 또는,. PipelineRun 을 트리거하려고 할 때 오류가 발생합니다.
파이프라인에 대한 정의를 페치할 때 실패가 발생할 수 있는 여러 가지 이유가 있습니다. 예를 들어 정의가 대용량 리포지토리에 정의되어 있는 경우 정의를 빌드하기 전에 대용량 리포지토리를 복제하는 데 시간이 지연되어 정의 가져오기 요청이 시간 초과될 수 있습니다. 다른 예로는 정의 입력이 저장소에 더 이상 존재하지 않는 분기 또는 경로를 대상으로 하는 경우입니다.
다음 옵션 중 하나를 사용하여 문제점을 해결하십시오.
- 정의를 페치하기 위한 새 요청을 시작하려면 페이지를 다시 로드하십시오. 이 작업이 반복적으로 실패하는 경우 다음 옵션을 사용하여 계속하십시오.
- 정의 입력의 모든 참조된 분기 및 경로가 저장소에 있는 자원과 일치하는지 유효성 검증하십시오.
- Tekton 정의를 포함하는 저장소의 크기를 줄이십시오. 저장소에서 불필요한 파일을 제거하고
.gitignore를 업데이트하여 불필요한 파일 업로드를 제외하십시오. - 파이프라인 정의의 최소 필수 파일만 포함하십시오. 전체 저장소를 대상으로 하지 마십시오. 모든 텍톤 정의 관련 파일을 리포지토리의 하위 폴더로 이동한 다음 Delivery Pipeline 설정에서 정의 입력을 편집하여 하위 폴더의 경로를 대상으로 지정하세요. 이 옵션은 저장소에서 정의 파일을 복제하는 데 필요한 시간을 줄입니다.
- 규모가 큰 텍톤 정의의 경우 정의를 여러 폴더 또는 여러 리포지토리로 분할하는 것을 고려해 보세요. 그런 다음 필요한 폴더 또는 리포지토리를 타겟팅하도록 Delivery Pipeline 정의 입력을 업데이트합니다.
계산된 파이프라인 정의 크기 한계는 1MB입니다. 파이프라인을 저장하거나 실행할 때 오류가 발생하면 파이프라인 정의의 크기를 줄이거나 다중 파이프라인으로 분할해야 합니다.
내 파이프라인이 Red Hat OpenShift on IBM Cloud 클러스터에 연결하는 데 실패하는 이유는 무엇입니까?
버전 4.13 10 Red Hat OpenShift on IBM Cloud 이상을 실행 중인 대상 클러스터에 로그인할 수 없는 파이프라인은 를 시도할 수 oc login 없습니다.
이 문제는 4.13 버전에 도입된 변경 사항으로 인해 발생합니다 Red Hat OpenShift on IBM Cloud.
문제를 해결하려면 다음 프로세스를 사용하십시오.
ibmcloud login --apikey "${IBMCLOUD_API_KEY}" -r "${REGION}" -g "${RESOURCE_GROUP}"
ibmcloud oc cluster config --cluster "${CLUSTER_NAME}" --endpoint private --admin
kubectl config current-context
oc version
oc get pods -A # To verify connection
Git 복제 명령을 실행할 때 파이프라인이 실패하는 이유는 무엇인가요?
' git-clone-repo ' 명령 작업을 사용하는 Tekton 파이프라인은 다음 오류가 표시되며 실패할 수 있습니다:
Clone was not successful. Code 128 - Retrying shortly...
fatal: destination path '.' already exists and is not an empty directory.
이 문제는 공개적으로 관리되는 파이프라인 작업자의 인프라 성능 변경으로 인해 발생합니다.
이 문제를 해결하려면 다음과 같이 하십시오.
- 파이프라인의 설정에서 텍톤 정의를 찾은 다음 경로에서 '
git'에 대한 항목을 찾습니다. 리포지토리 링크를 클릭하여 엽니다. 'git/task-clone-repo.yaml'로 이동한 다음 해당 파일 내에서 'clone-repo' 단계를 찾습니다. 최신 코드는 Tekton 카탈로그 예시를 참조하세요. git clone호출 전에 정의에rm -rf "lost+found"을 추가합니다. 이렇게 하면 복제를 위한 디렉터리가 비어 있습니다.- 파이프라인을 다시 실행하십시오.
평가판 계정에서 실행할 때 관리되는 작업자에서 파이프라인이 시작되지 않는 이유는 무엇인가요?
평가판 계정에서 실행되는 클래식 파이프라인은 다음 오류로 인해 시작되지 않습니다:
This type of account is not entitled to use managed workers. Private workers can be used instead or to gain access managed worker capability the account must be upgraded to a paid plan.
이 동작은 평가판 계정에 대한 권한의 개정으로 인해 발생합니다.
이 문제를 해결하려면 다음 옵션을 시도하십시오.
- 자체 클러스터에서 실행되는 프라이빗 워커를 사용하여 파이프라인을 실행하세요.
- Lite 플랜을 사용하여 평가판 계정을 종량과금제 계정으로 업그레이드하십시오.
왜 내 파이프라인에서 포크된 리포지토리의 풀 리퀘스트 이벤트가 트리거되지 않나요?
기본적으로 파이프라인은 포크된 리포지토리의 풀 리퀘스트 이벤트에 응답하지 않습니다
이 동작은 의도치 않게 파이프라인이 실행되는 것을 방지하기 위해 설계되었습니다.
포크된 리포지토리의 이벤트에 대해 파이프라인을 실행하려면 다음과 같이 하세요:
- 텍톤 파이프라인: Git 트리거 창에서
Include pull request events from forks토글을 활성화합니다 - 클래식 파이프라인: 스테이지 구성의 입력 탭에서 '
Include pull request events from forks토글을 활성화합니다
파이프라인 실행을 위한 파드 이벤트에 ExceededNodeResources 가 가끔 표시되는 이유는 무엇인가요?
때로는 작업이 예상보다 오래 걸려 시작될 때, 작업의 세부 정보 pipelineRun 페이지에 있는 포드 이벤트 보기에서 값이 reason 인 메시지를 확인할 ExceededNodeResources 수 있습니다.
이는 일반적으로 과부하가 걸린 노드에 이미 마운트된 볼륨을 사용하려고 하는 작업에서 발생합니다. 클러스터에 과부하가 걸려 클러스터 자동 확장 이벤트 중에 새 노드를 불러오는 데 시간이 걸릴 때도 이 문제가 발생할 수 있습니다.
이러한 메시지는 Kubernetes 클러스터의 정상적인 운영 메시지일 가능성이 높습니다. 이러한 유형의 메시지에는 일반적으로 사용자 개입이 필요하지 않습니다. 이는 자동 확장 이벤트가 발생하여 리소스를 사용할 수 있는 여유가 생기거나 이후에 리소스를 사용할 수 있게 될 때 발생합니다. 따라서 파드가 예약되면 파이프라인이 진행됩니다. 기본적으로 파이프라인은 자동 확장 또는 기타 수단을 통해 필요한 리소스를 사용할 수 있게 될 때까지 기다렸다가 파드를 배포하고 파이프라인을 계속할 수 있습니다.
사이드카를 DockerPodman 사용할 때 네트워크 오류가 발생하는 이유는 무엇인가요?
텍톤 파이프라인을 또는 Podman Docker 사이드카와 함께 실행할 때 다음과 같은 증상 중 하나 이상이 나타납니다:
- 간헐적인 연결 시간 초과
- 대규모 요청/응답은 실패하는 반면 소규모 요청/응답은 성공함
- 로컬에서는 서비스가 정상적으로 작동하지만 클러스터에서는 실패합니다
- TLS 핸드셰이크 실패
Docker 데몬과 호스트 네트워크 간에 MTU 불일치가 발생했습니다. 내부 DockerPodman 데몬은 기본 MTU 1500으로 자체 브리지 네트워크를 생성하지만, 오버레이 캡슐화로 인해 포드의 네트워크 인터페이스는 1450바이트만 지원할 수 있습니다. 바로 이러한 불일치가 네트워크 장애를 유발합니다.
파이프라인 정의를 업데이트하여 Docker의 값을 mtu 다음과 같이 명시적으로 설정하십시오:
- Docker:
com.docker.network.driver.mtu: 1400 - Podman:
podman network create --opt mtu=1400또는 경우에 따라 설정--network=host