4.6. 클러스터 구성으로 애플리케이션을 배포하여 OpenShift 클러스터 구성
Red Hat OpenShift GitOps를 사용하면 Argo CD를 구성하여 Git 디렉터리의 콘텐츠를 클러스터의 사용자 지정 구성이 포함된 애플리케이션과 반복적으로 동기화할 수 있습니다.
사전 요구 사항
- Red Hat OpenShift GitOps가 클러스터에 설치되어 있습니다.
- Argo CD 인스턴스에 로그인했습니다.
4.6.1. 클러스터 수준에서 Argo CD 인스턴스 실행
Red Hat OpenShift GitOps Operator에서 설치한 기본 Argo CD 인스턴스와 함께 컨트롤러는 이제 간단한 구성 토글을 설정하여 클러스터의 인프라 노드에서 실행할 수 있습니다.
절차
기존 노드에 레이블을 지정합니다.
$ oc label node <node-name> node-role.kubernetes.io/infra=""
선택 사항: 필요한 경우 테인트를 적용하고 인프라 노드에 워크로드를 분리하고 다른 워크로드가 이러한 노드에서 예약되지 않도록 할 수도 있습니다.
$ oc adm taint nodes -l node-role.kubernetes.io/infra \ infra=reserved:NoSchedule infra=reserved:NoExecute
GitOpsService
사용자 정의 리소스에runOnInfra
토글을 추가합니다.apiVersion: pipelines.openshift.io/v1alpha1 kind: GitopsService metadata: name: cluster spec: runOnInfra: true
선택 사항: 노드에 테인트가 추가된 경우
GitOpsService
사용자 정의 리소스에허용 오차를
추가합니다. 예를 들면 다음과 같습니다.spec: runOnInfra: true tolerations: - effect: NoSchedule key: infra value: reserved - effect: NoExecute key: infra value: reserved
-
콘솔 UI에서 Pod
Pod 세부 정보를 확인하여 openshift-gitops
네임스페이스의 워크로드가 인프라 노드에 예약되어 있는지 확인합니다.
기본 Argo CD 사용자 정의 리소스에 수동으로 추가된 nodeSelector
및 허용 오차
는 GitOpsService
사용자 정의 리소스의 토글 및 허용 오차를
덮어씁니다.
4.6.2. Argo CD 대시보드를 사용하여 애플리케이션 생성
Argo CD는 애플리케이션을 만들 수 있는 대시보드를 제공합니다.
이 샘플 워크플로에서는 Argo CD를 구성하여 cluster
디렉터리의 콘텐츠를 cluster-configs
애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 웹 콘솔의
메뉴에 있는 Red Hat 개발자 블로그에 링크를 추가하는 OpenShift Container Platform 웹 콘솔 클러스터 구성을 정의하고 클러스터에 spring-petclinic
네임스페이스를 정의합니다.
절차
- Argo CD 대시보드에서 NEW APP 를 클릭하여 새 Argo CD 애플리케이션을 추가합니다.
이 워크플로의 경우 다음 구성을 사용하여 cluster-configs 애플리케이션을 생성합니다.
- 애플리케이션 이름
-
cluster-configs
- 프로젝트
-
default
- 동기화 정책
-
수동
- 리포지터리 URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- 버전
-
HEAD
- 경로
-
cluster
- 대상
-
https://kubernetes.default.svc
- 네임스페이스
-
spring-petclinic
- 디렉토리 반복
-
checked
- CREATE 를 클릭하여 애플리케이션을 생성합니다.
-
웹 콘솔의 관리자 화면을 열고 왼쪽 메뉴에 있는 관리
네임스페이스 로 이동합니다. -
레이블을 검색하고 선택한 다음 라벨 필드에
argocd.argoproj.io/managed-by=openshift-gitops
를 입력하여openshift-gitops
네임스페이스의 Argo CD 인스턴스를 관리할 수 있습니다.
4.6.3. oc
툴을 사용하여 애플리케이션 생성
oc
툴을 사용하여 터미널에서 Argo CD 애플리케이션을 생성할 수 있습니다.
프로세스
샘플 애플리케이션을 다운로드합니다.
$ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
애플리케이션을 생성합니다.
$ oc create -f openshift-gitops-getting-started/argo/app.yaml
oc get
명령을 실행하여 생성된 애플리케이션을 검토합니다.$ oc get application -n openshift-gitops
openshift-gitops
네임스페이스의 Argo CD 인스턴스가 이를 관리할 수 있도록 애플리케이션이 배포된 네임스페이스에 레이블을 추가합니다.$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
4.6.4. Git 리포지토리와 애플리케이션 동기화
프로세스
- Argo CD 대시보드에서 cluster-configs Argo CD 애플리케이션은 Missing 및 OutOfSync 상태입니다. 애플리케이션이 수동 동기화 정책으로 구성되었으므로 Argo CD는 자동으로 동기화되지 않습니다.
- cluster-configs 타일에서databindC를 클릭하고 변경 사항을 검토한 다음 periodCHRONIZE 를 클릭합니다. Argo CD는 Git 리포지토리의 모든 변경 사항을 자동으로 감지합니다. 구성이 변경되면 Argo CD는 cluster-configs의 상태를 OutOfSync로 변경합니다. Argo CD의 동기화 정책을 수정하여 Git 리포지토리에서 클러스터에 변경 사항을 자동으로 적용할 수 있습니다.
- cluster-configs Argo CD 애플리케이션이 이제 Healthy 및 Synced 상태가 됩니다. cluster-configs 타일을 클릭하여 동기화된 리소스의 세부 정보와 클러스터의 상태를 확인합니다.
- OpenShift Container Platform 웹 콘솔로 이동하여 을 클릭하여 Red Hat 개발자 블로그 - Kubernetes 에 대한 링크가 있는지 확인합니다.
프로젝트 페이지로 이동하여
spring-petclinic
네임스페이스를 검색하여 클러스터에 추가되었는지 확인합니다.클러스터 구성이 클러스터에 성공적으로 동기화됩니다.
4.6.5. 클러스터 구성에 대한 내장 권한
기본적으로 Argo CD 인스턴스에는 클러스터 Operator, 선택적 OLM Operator 및 사용자 관리와 같은 특정 클러스터 범위 리소스를 관리할 수 있는 권한이 있습니다.
Argo CD에는 cluster-admin 권한이 없습니다.
Argo CD 인스턴스에 대한 권한:
리소스 | 설명 |
리소스 그룹 | 사용자 또는 관리자 구성 |
| OLM에서 관리하는 선택적 Operator |
| 그룹, 사용자 및 권한 |
| 클러스터 전체 빌드 구성, 레지스트리 구성 및 스케줄러 정책을 구성하는 데 사용되는 CVO에서 관리하는 컨트롤 플레인 Operator |
| 스토리지 |
| 콘솔 사용자 지정 |
4.6.6. 클러스터 구성에 대한 권한 추가
Argo CD 인스턴스에 대한 권한을 부여하여 클러스터 구성을 관리할 수 있습니다. 추가 권한으로 클러스터 역할을 생성한 다음 새 클러스터 역할 바인딩을 생성하여 클러스터 역할을 서비스 계정과 연결합니다.
절차
- OpenShift Container Platform 웹 콘솔에 관리자로 로그인합니다.
웹 콘솔에서 사용자 관리
역할 역할 생성을 선택합니다. 다음 ClusterRole
YAML 템플릿을 사용하여 추가 권한을 지정하는 규칙을 추가합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: secrets-cluster-role rules: - apiGroups: [""] resources: ["secrets"] verbs: ["*"]
- 생성을 클릭하여 클러스터 역할을 추가합니다.
-
이제 클러스터 역할 바인딩을 생성합니다. 웹 콘솔에서 사용자 관리
역할 바인딩 바인딩 생성을 선택합니다. - 프로젝트 드롭다운에서 모든 프로젝트를 선택합니다.
- 바인딩 생성을 클릭합니다.
- 바인딩 유형을 클러스터 전체 역할 바인딩(ClusterRoleBinding) 으로 선택합니다.
- RoleBinding 이름의 고유한 값을 입력합니다.
- 새로 생성된 클러스터 역할 또는 드롭다운 목록에서 기존 클러스터 역할을 선택합니다.
ServiceAccount 로 주체 를 선택하고 주체 네임스페이스 및 이름을 제공합니다.
-
제목 네임스페이스:
openshift-gitops
-
제목 이름:
openshift-gitops-argocd-application-controller
-
제목 네임스페이스:
생성을 클릭합니다.
ClusterRoleBinding
오브젝트의 YAML 파일은 다음과 같습니다.kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: cluster-role-binding subjects: - kind: ServiceAccount name: openshift-gitops-argocd-application-controller namespace: openshift-gitops roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: admin