Kubernetes 에이전트 인스턴스 관리
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Kubernetes 에이전트를 사용할 때 다음 작업을 사용합니다. 설치된 agentk 버전이 Agent 탭에 표시됩니다. 이 페이지에서 다음을 볼 수 있습니다: 에이전트 목록에서 에이전트 구성 파일을 빠르게 찾을 수 있습니다.
Kubernetes 에이전트를 사용할 때 다음 작업을 사용합니다.
에이전트 보기#
설치된 agentk 버전이 Agent 탭에 표시됩니다.
사전 요구사항:
- Developer, Maintainer, 또는 Owner 권한이 있어야 합니다.
에이전트 목록을 보려면:
- 상단 바에서 Search or go to를 선택하고 에이전트 구성 파일이 있는 프로젝트를 찾습니다. 에이전트 구성 파일이 없는 프로젝트에서는 등록된 에이전트를 볼 수 없습니다.
- Operate > Kubernetes clusters를 선택합니다.
- Agent 탭을 선택하여 에이전트를 통해 GitLab에 연결된 클러스터를 봅니다.
이 페이지에서 다음을 볼 수 있습니다:
- 현재 프로젝트에 대해 등록된 모든 에이전트.
- 연결 상태.
- 클러스터에 설치된
agentk의 버전. - 각 에이전트 구성 파일의 경로.
에이전트 구성#
에이전트를 구성하려면:
- 설치 중에 선택적으로 생성된
config.yaml파일에 내용을 추가합니다.
에이전트 목록에서 에이전트 구성 파일을 빠르게 찾을 수 있습니다.
Configuration 열은 config.yaml 파일의 위치를 나타내거나
파일을 생성하는 방법을 보여줍니다.
에이전트 구성 파일은 다양한 에이전트 기능을 관리합니다:
- GitLab CI/CD 워크플로의 경우. 에이전트가 프로젝트에 접근하도록 인증한 다음
.gitlab-ci.yml파일에kubectl명령어를 추가해야 합니다. - GitLab UI 또는 로컬 터미널에서 클러스터에 대한 사용자 접근의 경우.
- 운영 컨테이너 스캐닝 구성의 경우.
- 원격 워크스페이스 구성의 경우.
사용 가능한 구성 파일 필드#
에이전트의 구성 파일 형식은 소스 리포지터리의 프로토콜 버퍼 메시지로 정의됩니다.
사용 가능한 모든 구성 파일 필드를 보려면:
- 생성된 문서의
ConfigurationFile로 이동하여 전체 에이전트 구성 파일의 필드를 봅니다. - 필드 유형을 선택하면 필드 구조에 대한 자세한 정보를 볼 수 있습니다.
공유 에이전트 보기#
히스토리
- GitLab 16.1에서 도입되었습니다.
프로젝트가 소유한 에이전트 외에도 ci_access 및 user_access 키워드로 공유된 에이전트를 볼 수 있습니다. 에이전트가 프로젝트와 공유되면 프로젝트 에이전트 탭에 자동으로 표시됩니다.
공유 에이전트 목록을 보려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Operate > Kubernetes clusters를 선택합니다.
- Agent 탭을 선택합니다.
공유 에이전트와 해당 클러스터 목록이 표시됩니다.
에이전트 활동 정보 보기#
활동 로그는 문제를 식별하고 트러블슈팅에 필요한 정보를 얻는 데 도움이 됩니다. 현재 날짜의 일주일 전 이벤트를 볼 수 있습니다. 에이전트의 활동을 보려면:
- 상단 바에서 Search or go to를 선택하고 에이전트 구성 파일이 있는 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Operate > Kubernetes clusters를 선택합니다.
- 활동을 보고 싶은 에이전트를 선택합니다.
활동 목록에 포함되는 내용:
- 에이전트 등록 이벤트: 새 토큰이 생성될 때.
- 연결 이벤트: 에이전트가 클러스터에 성공적으로 연결될 때.
처음으로 에이전트를 연결하거나 1시간 이상 비활성 상태 후에 연결 상태가 로그에 기록됩니다.
이 에픽에서 UI에 대한 피드백을 보거나 제공하세요.
에이전트 디버그#
히스토리
grpc_level이 GitLab 15.1에서 도입되었습니다.
에이전트의 클러스터 측 구성 요소(agentk)를 디버그하려면 사용 가능한 옵션에 따라 로그 수준을 설정합니다:
errorinfodebug
에이전트에는 두 가지 로거가 있습니다:
- 기본값이
info인 범용 로거. - 기본값이
error인 gRPC 로거.
에이전트 구성 파일의 최상위 observability 섹션을 사용하여 로그 수준을 변경할 수 있습니다. 예를 들어 수준을 debug 및 warn으로 설정합니다:
observability:
logging:
level: debug
grpc_level: warn
grpc_level이 info 이하로 설정되면 많은 gRPC 로그가 생성됩니다.
구성 변경 사항을 커밋하고 에이전트 서비스 로그를 검사합니다:
kubectl logs -f -l=app=gitlab-agent -n gitlab-agent
디버깅에 대한 자세한 내용은 트러블슈팅 문서를 참조하세요.
에이전트 토큰 초기화#
히스토리
에이전트는 한 번에 두 개의 활성 토큰만 가질 수 있습니다.
다운타임 없이 에이전트 토큰을 초기화하려면:
- 새 토큰을 생성합니다:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Operate > Kubernetes clusters를 선택합니다.
- 토큰을 생성할 에이전트를 선택합니다.
- Access tokens 탭에서 Create token을 선택합니다.
- 토큰의 이름과 설명(선택 사항)을 입력하고 Create token을 선택합니다.
- 생성된 토큰을 안전하게 저장합니다.
- 토큰을 사용하여 클러스터에 에이전트를 설치하고 에이전트를 다른 버전으로 업데이트합니다.
- 더 이상 사용하지 않는 토큰을 삭제하려면 토큰 목록으로 돌아가 Revoke ([remove])를 선택합니다.
에이전트 제거#
GitLab UI 또는 GraphQL API를 사용하여 에이전트를 제거할 수 있습니다. 에이전트와 관련 토큰이 GitLab에서 제거되지만 Kubernetes 클러스터에는 변경 사항이 적용되지 않습니다. 해당 리소스는 수동으로 정리해야 합니다.
GitLab UI를 통한 에이전트 제거#
UI에서 에이전트를 제거하려면:
- 상단 바에서 Search or go to를 선택하고 에이전트 구성 파일이 있는 프로젝트를 찾습니다.
- Operate > Kubernetes clusters를 선택합니다.
- 테이블에서 에이전트 행의 Options 열에서 세로 줄임표 (⋮)를 선택합니다.
- Delete agent를 선택합니다.
GitLab GraphQL API를 사용한 에이전트 제거#
-
대화형 GraphQL 탐색기의 쿼리에서
<cluster-agent-token-id>를 가져옵니다.- GitLab.com의 경우 https://gitlab.com/-/graphql-explorer로 이동하여 GraphQL 탐색기를 엽니다.
- GitLab Self-Managed의 경우
https://gitlab.example.com/-/graphql-explorer로 이동하고gitlab.example.com을 인스턴스 URL로 교체합니다.
query{ project(fullPath: "<full-path-to-agent-configuration-project>") { clusterAgent(name: "<agent-name>") { id tokens { edges { node { id } } } } } } -
clusterAgentToken을 삭제하여 GraphQL로 에이전트 레코드를 제거합니다.mutation deleteAgent { clusterAgentDelete(input: { id: "<cluster-agent-id>" } ) { errors } } mutation deleteToken { clusterAgentTokenDelete(input: { id: "<cluster-agent-token-id>" }) { errors } } -
제거가 성공적으로 이루어졌는지 확인합니다. Pod 로그의 출력에
unauthenticated가 포함되면 에이전트가 성공적으로 제거된 것입니다:{ "level": "warn", "time": "2021-04-29T23:44:07.598Z", "msg": "GetConfiguration.Recv failed", "error": "rpc error: code = Unauthenticated desc = unauthenticated" } -
클러스터에서 에이전트를 삭제합니다:
kubectl delete -n gitlab-kubernetes-agent -f ./resources.yml
