4장. GitOps
4.1. Red Hat OpenShift GitOps 릴리스 정보
Red Hat OpenShift GitOps는 클라우드 네이티브 애플리케이션에 대한 연속 배포를 구현하는 선언적 방법입니다. Red Hat OpenShift GitOps를 사용하면 개발, 스테이징, 프로덕션과 같은 다양한 환경의 다양한 클러스터에 애플리케이션을 배포할 때 애플리케이션의 일관성을 유지할 수 있습니다. Red Hat OpenShift GitOps는 다음 작업을 자동화하는 데 도움이 됩니다.
- 클러스터의 구성, 모니터링, 스토리지 상태가 비슷한지 확인
- 알려진 상태에서 클러스터 복구 또는 재생성
- 여러 OpenShift Container Platform 클러스터에 구성 변경 사항 적용 또는 되돌리기
- 템플릿 구성을 다른 환경과 연결
- 스테이징에서 프로덕션까지 클러스터 전체에서 애플리케이션 승격
Red Hat OpenShift GitOps 개요는 OpenShift GitOps 이해를 참조하십시오.
4.1.1. 보다 포괄적 수용을 위한 오픈 소스 용어 교체
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 향후 여러 릴리스에 대해 단계적으로 구현될 예정입니다. 자세한 내용은 Red Hat CTO Chris Wright의 메시지에서 참조하십시오.
4.1.2. Red Hat OpenShift GitOps 1.2.1 릴리스 노트
이제 OpenShift Container Platform 4.7 및 4.8에서 Red Hat OpenShift GitOps 1.2.1을 사용할 수 있습니다.
4.1.2.1. 지원 매트릭스
이 릴리스의 일부 기능은 현재 기술 프리뷰 단계에 있습니다. 이러한 실험적 기능은 프로덕션용이 아닙니다.
아래 표에서 기능은 다음 상태로 표시됩니다.
- TP: 기술 프리뷰
- GA: 정식 출시일 (GA)
해당 기능은 Red Hat Customer Portal의 지원 범위를 참조하십시오.
기능 | Red Hat OpenShift GitOps 1.2.1 |
---|---|
Argo CD | GA |
Argo CD ApplicationSet | TP |
Red Hat OpenShift GitOps Application Manager (kam) | TP |
4.1.2.2. 해결된 문제
현재 릴리스에서 다음 문제가 해결되었습니다.
-
이전에는 시작 시 애플리케이션 컨트롤러에서 대규모 메모리 스파이크를 관찰했습니다. 애플리케이션 컨트롤러의
--kubectl-parallelism-limit
플래그는 기본적으로 10으로 설정되어 있지만 Argo CD CR 사양에.spec.controller.kubeParallelismLimit
의 번호를 지정하여 이 값을 재정의할 수 있습니다. GITOPS-1255 -
최신 Triggers API로 인해
kam 부트스트랩
명령을 사용할 때 kustomization.yaml의 중복 항목으로 인해 Kubernetes 빌드가 실패했습니다. Pipelines 및 Tekton 트리거 구성 요소가 이제 이 문제를 해결하기 위해 각각 v0.24.2 및 v0.14.2로 업데이트되었습니다. GITOPS-1273 - 소스 네임스페이스의 Argo CD 인스턴스가 삭제될 때 대상 네임스페이스에서 RBAC 역할 및 바인딩을 유지하면 대상 네임스페이스에서 자동으로 제거됩니다. GITOPS-1228
- 이전 버전에서는 Argo CD 인스턴스를 네임스페이스에 배포할 때 Argo CD 인스턴스가 "managed-by" 라벨이 자체 네임스페이스로 변경되었습니다. 이번 수정을 통해 네임스페이스에 필요한 RBAC 역할 및 바인딩도 생성 및 삭제되는 동안 네임스페이스에 라벨이 지정되지 않았습니다. GITOPS-1247
- 이전에는 repo-server 및 애플리케이션 컨트롤러를 위한 Argo CD 워크로드에 대한 기본 리소스 요청 제한이 매우 제한적이었습니다. 이제 기존 리소스 할당량이 제거되었으며 리포지토리 서버에서 기본 메모리 제한이 1024M으로 증가했습니다. 이 변경 사항은 새 설치에만 영향을 미칩니다. 기존 Argo CD 인스턴스 워크로드는 영향을 받지 않습니다. GITOPS-1274
4.1.3. Red Hat OpenShift GitOps 1.2 릴리스 노트
Red Hat OpenShift GitOps 1.2는 이제 OpenShift Container Platform 4.7 및 4.8에서 사용할 수 있습니다.
4.1.3.1. 지원 매트릭스
이 릴리스의 일부 기능은 현재 기술 프리뷰 단계에 있습니다. 이러한 실험적 기능은 프로덕션용이 아닙니다.
아래 표에서 기능은 다음 상태로 표시됩니다.
- TP: 기술 프리뷰
- GA: 정식 출시일 (GA)
해당 기능은 Red Hat Customer Portal의 지원 범위를 참조하십시오.
기능 | Red Hat OpenShift GitOps 1.2 |
---|---|
Argo CD | GA |
Argo CD ApplicationSet | TP |
Red Hat OpenShift GitOps Application Manager (kam) | TP |
4.1.3.2. 새로운 기능
다음 섹션에서는 수정 및 안정성 개선 사항 외에 Red Hat OpenShift GitOps 1.2의 새로운 기능도 소개합니다.
-
openshift-gitops 네임스페이스에 대한 읽기 또는 쓰기 권한이 없는 경우 이제 GitOps Operator에서
DISABLE_DEFAULT_ARGOCD_INSTANCE
환경 변수를 사용하고 기본 Argo CD 인스턴스가openshift-gitops
네임스페이스에서 시작되지 않도록TRUE
로 설정할 수 있습니다. -
이제 리소스 요청 및 제한이 Argo CD 워크로드에서 구성됩니다.
openshift-gitops
네임스페이스에서 리소스 할당량이 활성화됩니다. 결과적으로 openshift-gitops 네임스페이스에 수동으로 배포된 대역 외 워크로드는 리소스 요청 및 제한을 사용하여 구성해야 하며 리소스 할당량을 늘려야 할 수 있습니다. Argo CD 인증은 이제 Red Hat SSO와 통합되며 클러스터의 OpenShift 4 ID 공급자로 자동으로 구성됩니다. 이 기능은 기본적으로 비활성화되어 있습니다. Red Hat SSO를 활성화하려면 다음과 같이
ArgoCD
CR에 SSO 구성을 추가합니다. 현재keycloak
은 지원되는 유일한 공급자입니다.apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: sso: provider: keycloak server: route: enabled: true
라우터 샤딩을 지원하기 위해 경로 레이블을 사용하여 호스트 이름을 정의할 수 있습니다. 이제
server
(argocd server),grafana
,prometheus
경로에서 레이블 설정 지원을 사용할 수 있습니다. 경로에 레이블을 설정하려면ArgoCD
CR의 서버에 대한 경로 구성 아래에labels
를 추가합니다.argocd 서버에 라벨을 설정하는
ArgoCD
CR YAML의 예apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: server: route: enabled: true labels: key1: value1 key2: value2
-
GitOps Operator는 레이블을 적용하여 대상 네임스페이스의 리소스를 관리할 수 있도록 Argo CD 인스턴스에 권한을 자동으로 부여합니다. 사용자는
argocd.argoproj.io/managed-by: <source-namespace>
라벨을 사용하여 대상 네임스페이스에 레이블을 지정할 수 있습니다. 여기서source-namespace
는 argocd 인스턴스가 배포된 네임스페이스입니다.
4.1.3.3. 해결된 문제
현재 릴리스에서 다음 문제가 해결되었습니다.
-
이전 버전에서는 사용자가 openshift-gitops 네임스페이스에서 기본 클러스터 인스턴스에서 관리하는 Argo CD의 추가 인스턴스를 생성한 경우 새 Argo CD 인스턴스를 담당하는 애플리케이션이
OutOfSync
상태로 중단되었습니다. 이 문제는 클러스터 시크릿에 소유자 참조를 추가하여 해결되었습니다. GITOPS-1025
4.1.3.4. 확인된 문제
이는 Red Hat OpenShift GitOps 1.2에서 알려진 문제입니다.
-
소스 네임스페이스에서 Argo CD 인스턴스가 삭제되면 대상 네임스페이스의
argocd.argoproj.io/managed-by
레이블이 제거되지 않습니다. GITOPS-1228 Red Hat OpenShift GitOps 1.2의 openshift-gitops 네임스페이스에서 리소스 할당량이 활성화되었습니다. 이는 수동으로 배포된 대역 외 워크로드 및
openshift-gitops
네임스페이스의 기본 Argo CD 인스턴스에서 배포한 워크로드에 영향을 미칠 수 있습니다. Red Hat OpenShift GitOpsv1.1.2
에서v1.2
로 업그레이드하는 경우 리소스 요청 및 제한을 사용하여 워크로드를 구성해야 합니다. 추가 워크로드가 있는 경우 openshift-gitops 네임스페이스의 리소스 할당량을 늘려야 합니다.openshift-gitops
네임스페이스의 현재 리소스 할당량입니다.리소스 요구 사항 제한 CPU
6688m
13750m
메모리
4544Mi
9070Mi
아래 명령을 사용하여 CPU 제한을 업데이트할 수 있습니다.
$ oc patch resourcequota openshift-gitops-compute-resources -n openshift-gitops --type='json' -p='[{"op": "replace", "path": "/spec/hard/limits.cpu", "value":"9000m"}]'
아래 명령을 사용하여 CPU 요청을 업데이트할 수 있습니다.
$ oc patch resourcequota openshift-gitops-compute-resources -n openshift-gitops --type='json' -p='[{"op": "replace", "path": "/spec/hard/cpu", "value":"7000m"}]
위의 명령의 경로를
cpu
에서memory
로 교체하여 메모리를 업데이트할 수 있습니다.
4.1.4. Red Hat OpenShift GitOps 1.1 릴리스 노트
Red Hat OpenShift GitOps 1.1은 이제 OpenShift 컨테이너 플랫폼 4.7에서 사용할 수 있습니다.
4.1.4.1. 지원 매트릭스
이 릴리스의 일부 기능은 현재 기술 프리뷰 단계에 있습니다. 이러한 실험적 기능은 프로덕션용이 아닙니다.
아래 표에서 기능은 다음 상태로 표시됩니다.
- TP: 기술 프리뷰
- GA: 정식 출시일 (GA)
해당 기능은 Red Hat Customer Portal의 지원 범위를 참조하십시오.
기능 | Red Hat OpenShift GitOps 1.1 |
---|---|
Argo CD | GA |
Argo CD ApplicationSet | TP |
Red Hat OpenShift GitOps Application Manager (kam) | TP |
4.1.4.2. 새로운 기능
다음 섹션에서는 수정 및 안정성 개선 사항 외에 Red Hat OpenShift GitOps 1.1의 새로운 기능도 소개합니다.
-
이제
ApplicationSet
기능이 추가되었습니다(기술 프리뷰).ApplicationSet
기능을 사용하면 Argo CD 애플리케이션을 다수의 클러스터와 monorepos 내에서 관리할 때 자동화와 유연성을 모두 사용할 수 있습니다. 또한 멀티테넌트 Kubernetes 클러스터에서 셀프 서비스를 사용할 수 있습니다. - Argo CD는 이제 클러스터 로깅 스택 및 OpenShift Container Platform 모니터링 및 경고 기능과 통합되었습니다.
- Argo CD 인증이 OpenShift Container Platform과 통합되었습니다.
- Argo CD 애플리케이션 컨트롤러는 이제 수평 크기 조정을 지원합니다.
- Argo CD Redis 서버는 이제 HA(고가용성)를 지원합니다.
4.1.4.3. 해결된 문제
현재 릴리스에서 다음 문제가 해결되었습니다.
- 이전에는 활성 글로벌 프록시 설정을 사용하여 프록시 서버 설정에서 Red Hat OpenShift GitOps가 예상대로 작동하지 않았습니다. 이 문제는 해결되었으며 이제 Red Hat OpenShift GitOps Operator가 Argo CD는 Pod에 FQDN(정규화된 도메인 이름)을 사용하여 구성 요소 간 통신을 활성화하도록 구성되어 있습니다. GITOPS-703
-
Red Hat OpenShift GitOps 백엔드는 Red Hat OpenShift GitOps URL의
?ref=
쿼리 매개 변수를 사용하여 API를 호출합니다. 이전에는 이 매개변수를 URL에서 읽지 않아 백엔드에서 항상 기본 참조를 고려했습니다. 이 문제는 해결되어 Red Hat OpenShift GitOps 백엔드에서 Red Hat OpenShift GitOps URL에서 참조 쿼리 매개 변수를 추출하고 입력 참조가 제공되지 않은 경우에만 기본 참조를 사용합니다. GITOPS-817 -
이전에는 Red Hat OpenShift GitOps 백엔드에서 유효한 GitLab 리포지토리를 찾지 못했습니다. 이는 Red Hat OpenShift GitOps 백엔드가 GitLab 리포지토리의
master
대신main
분기 참조로 확인되었기 때문입니다. 이 문제는 이제 해결되었습니다. GITOPS-768 -
OpenShift Container Platform 웹 콘솔의 개발자 화면에 있는 환경 페이지에 애플리케이션 목록과 환경 수가 표시됩니다. 이 페이지에는 모든 애플리케이션을 나열하는 Argo CD 애플리케이션 페이지로 이동하는 Argo CD 링크도 표시됩니다. Argo CD 애플리케이션 페이지에는 선택한 애플리케이션만 필터링할 수 있는 LABELS (예:
app.kubernetes.io/name=appName
)가 있습니다. GITOPS-544
4.1.4.4. 확인된 문제
이는 Red Hat OpenShift GitOps 1.1에서 알려진 문제입니다.
- Red Hat OpenShift GitOps는 Helm v2 및 ksonnet을 지원하지 않습니다.
- RH SSO(Red Hat SSO) Operator는 연결이 끊긴 클러스터에서 지원되지 않습니다. 결과적으로 연결이 끊긴 클러스터에서 Red Hat OpenShift GitOps Operator 및 RH SSO 통합이 지원되지 않습니다.
- OpenShift Container Platform 웹 콘솔에서 Argo CD 애플리케이션을 삭제하면 사용자 인터페이스에서 Argo CD 애플리케이션이 삭제되지만 배포는 여전히 클러스터에 있습니다. 해결 방법으로 Argo CD 콘솔에서 Argo CD 애플리케이션을 삭제합니다. GITOPS-830
4.1.4.5. 변경 사항 중단
4.1.4.5.1. Red Hat OpenShift GitOps v1.0.1에서 업그레이드
Red Hat OpenShift GitOps v1.0.1
에서 v1.1
으로 업그레이드하는 경우 Red Hat OpenShift GitOps Operator는 openshift-gitops
네임스페이스에 생성된 기본 Argo CD 인스턴스 이름을 argocd-cluster
에서 openshift-gitops
로 변경합니다.
이는 변경 사항이 중단되어 업그레이드 전에 수동으로 다음 단계를 수행해야 합니다.
OpenShift Container Platform 웹 콘솔로 이동하여
openshift-gitops
네임스페이스에 있는argocd-cm.yml
구성 맵 파일의 콘텐츠를 로컬 파일에 복사합니다. 내용은 다음 예와 같을 수 있습니다.argocd 구성 맵 YAML의 예
kind: ConfigMap apiVersion: v1 metadata: selfLink: /api/v1/namespaces/openshift-gitops/configmaps/argocd-cm resourceVersion: '112532' name: argocd-cm uid: f5226fbc-883d-47db-8b53-b5e363f007af creationTimestamp: '2021-04-16T19:24:08Z' managedFields: ... namespace: openshift-gitops labels: app.kubernetes.io/managed-by: argocd-cluster app.kubernetes.io/name: argocd-cm app.kubernetes.io/part-of: argocd data: "" 1 admin.enabled: 'true' statusbadge.enabled: 'false' resource.exclusions: | - apiGroups: - tekton.dev clusters: - '*' kinds: - TaskRun - PipelineRun ga.trackingid: '' repositories: | - type: git url: https://github.com/user-name/argocd-example-apps ga.anonymizeusers: 'false' help.chatUrl: '' url: >- https://argocd-cluster-server-openshift-gitops.apps.dev-svc-4.7-041614.devcluster.openshift.com "" 2 help.chatText: '' kustomize.buildOptions: '' resource.inclusions: '' repository.credentials: '' users.anonymous.enabled: 'false' configManagementPlugins: '' application.instanceLabelKey: ''
-
기본
argocd-cluster
인스턴스를 삭제합니다. -
새
argocd-cm.yml
구성 맵 파일을 편집하여 전체data
섹션을 수동으로 복원합니다. 구성 맵 항목의 URL 값을 새 인스턴스 이름
openshift-gitops
로 바꿉니다. 예를 들어 위 예제에서 URL 값을 다음 URL 값으로 바꿉니다.url: >- https://openshift-gitops-server-openshift-gitops.apps.dev-svc-4.7-041614.devcluster.openshift.com
- Argo CD 클러스터에 로그인하고 이전 구성이 있는지 확인합니다.