검색

4.6. 클러스터 구성으로 애플리케이션을 배포하여 OpenShift 클러스터 구성

download PDF

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 인스턴스와 함께 컨트롤러는 이제 간단한 구성 토글을 설정하여 클러스터의 인프라 노드에서 실행할 수 있습니다.

절차

  1. 기존 노드에 레이블을 지정합니다.

    $ oc label node <node-name> node-role.kubernetes.io/infra=""
  2. 선택 사항: 필요한 경우 테인트를 적용하고 인프라 노드에 워크로드를 분리하고 다른 워크로드가 이러한 노드에서 예약되지 않도록 할 수도 있습니다.

    $ oc adm taint nodes -l node-role.kubernetes.io/infra \
    infra=reserved:NoSchedule infra=reserved:NoExecute
  3. GitOpsService 사용자 정의 리소스에 runOnInfra 토글을 추가합니다.

    apiVersion: pipelines.openshift.io/v1alpha1
    kind: GitopsService
    metadata:
      name: cluster
    spec:
      runOnInfra: true
  4. 선택 사항: 노드에 테인트가 추가된 경우 GitOpsService 사용자 정의 리소스에 허용 오차를 추가합니다. 예를 들면 다음과 같습니다.

      spec:
        runOnInfra: true
        tolerations:
        - effect: NoSchedule
          key: infra
          value: reserved
        - effect: NoExecute
          key: infra
          value: reserved
  5. 콘솔 UI에서 Pod Pod 세부 정보를 확인하여 openshift-gitops 네임스페이스의 워크로드가 인프라 노드에 예약되어 있는지 확인합니다.
참고

기본 Argo CD 사용자 정의 리소스에 수동으로 추가된 nodeSelector허용 오차GitOpsService 사용자 정의 리소스의 토글 및 허용 오차를 덮어씁니다.

4.6.2. Argo CD 대시보드를 사용하여 애플리케이션 생성

Argo CD는 애플리케이션을 만들 수 있는 대시보드를 제공합니다.

이 샘플 워크플로에서는 Argo CD를 구성하여 cluster 디렉터리의 콘텐츠를 cluster-configs 애플리케이션과 반복적으로 동기화하는 프로세스를 보여줍니다. 디렉터리는 웹 콘솔의 red hat applications menu icon 메뉴에 있는 Red Hat 개발자 블로그에 링크를 추가하는 OpenShift Container Platform 웹 콘솔 클러스터 구성을 정의하고 클러스터에 spring-petclinic 네임스페이스를 정의합니다.

절차

  1. Argo CD 대시보드에서 NEW APP 를 클릭하여 새 Argo CD 애플리케이션을 추가합니다.
  2. 이 워크플로의 경우 다음 구성을 사용하여 cluster-configs 애플리케이션을 생성합니다.

    애플리케이션 이름
    cluster-configs
    프로젝트
    default
    동기화 정책
    수동
    리포지터리 URL
    https://github.com/redhat-developer/openshift-gitops-getting-started
    버전
    HEAD
    경로
    cluster
    대상
    https://kubernetes.default.svc
    네임스페이스
    spring-petclinic
    디렉토리 반복
    checked
  3. CREATE 를 클릭하여 애플리케이션을 생성합니다.
  4. 웹 콘솔의 관리자 화면을 열고 왼쪽 메뉴에 있는 관리 네임스페이스 로 이동합니다.
  5. 레이블을 검색하고 선택한 다음 라벨 필드에 argocd.argoproj.io/managed-by=openshift-gitops 를 입력하여 openshift-gitops 네임스페이스의 Argo CD 인스턴스를 관리할 수 있습니다.

4.6.3. oc 툴을 사용하여 애플리케이션 생성

oc 툴을 사용하여 터미널에서 Argo CD 애플리케이션을 생성할 수 있습니다.

프로세스

  1. 샘플 애플리케이션을 다운로드합니다.

    $ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
  2. 애플리케이션을 생성합니다.

    $ oc create -f openshift-gitops-getting-started/argo/app.yaml
  3. oc get 명령을 실행하여 생성된 애플리케이션을 검토합니다.

    $ oc get application -n openshift-gitops
  4. openshift-gitops 네임스페이스의 Argo CD 인스턴스가 이를 관리할 수 있도록 애플리케이션이 배포된 네임스페이스에 레이블을 추가합니다.

    $ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops

4.6.4. Git 리포지토리와 애플리케이션 동기화

프로세스

  1. Argo CD 대시보드에서 cluster-configs Argo CD 애플리케이션은 MissingOutOfSync 상태입니다. 애플리케이션이 수동 동기화 정책으로 구성되었으므로 Argo CD는 자동으로 동기화되지 않습니다.
  2. cluster-configs 타일에서databindC를 클릭하고 변경 사항을 검토한 다음 periodCHRONIZE 클릭합니다. Argo CD는 Git 리포지토리의 모든 변경 사항을 자동으로 감지합니다. 구성이 변경되면 Argo CD는 cluster-configs의 상태를 OutOfSync로 변경합니다. Argo CD의 동기화 정책을 수정하여 Git 리포지토리에서 클러스터에 변경 사항을 자동으로 적용할 수 있습니다.
  3. cluster-configs Argo CD 애플리케이션이 이제 HealthySynced 상태가 됩니다. cluster-configs 타일을 클릭하여 동기화된 리소스의 세부 정보와 클러스터의 상태를 확인합니다.
  4. OpenShift Container Platform 웹 콘솔로 이동하여 red hat applications menu icon 을 클릭하여 Red Hat 개발자 블로그 - Kubernetes 에 대한 링크가 있는지 확인합니다.
  5. 프로젝트 페이지로 이동하여 spring-petclinic 네임스페이스를 검색하여 클러스터에 추가되었는지 확인합니다.

    클러스터 구성이 클러스터에 성공적으로 동기화됩니다.

4.6.5. 클러스터 구성에 대한 내장 권한

기본적으로 Argo CD 인스턴스에는 클러스터 Operator, 선택적 OLM Operator 및 사용자 관리와 같은 특정 클러스터 범위 리소스를 관리할 수 있는 권한이 있습니다.

참고

Argo CD에는 cluster-admin 권한이 없습니다.

Argo CD 인스턴스에 대한 권한:

리소스

설명

리소스 그룹

사용자 또는 관리자 구성

operators.coreos.com

OLM에서 관리하는 선택적 Operator

user.openshift.io , rbac.authorization.k8s.io

그룹, 사용자 및 권한

config.openshift.io

클러스터 전체 빌드 구성, 레지스트리 구성 및 스케줄러 정책을 구성하는 데 사용되는 CVO에서 관리하는 컨트롤 플레인 Operator

storage.k8s.io

스토리지

console.openshift.io

콘솔 사용자 지정

4.6.6. 클러스터 구성에 대한 권한 추가

Argo CD 인스턴스에 대한 권한을 부여하여 클러스터 구성을 관리할 수 있습니다. 추가 권한으로 클러스터 역할을 생성한 다음 새 클러스터 역할 바인딩을 생성하여 클러스터 역할을 서비스 계정과 연결합니다.

절차

  1. OpenShift Container Platform 웹 콘솔에 관리자로 로그인합니다.
  2. 웹 콘솔에서 사용자 관리 역할 역할 생성을 선택합니다. 다음 ClusterRole YAML 템플릿을 사용하여 추가 권한을 지정하는 규칙을 추가합니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: secrets-cluster-role
    rules:
    - apiGroups: [""]
      resources: ["secrets"]
      verbs: ["*"]
  3. 생성을 클릭하여 클러스터 역할을 추가합니다.
  4. 이제 클러스터 역할 바인딩을 생성합니다. 웹 콘솔에서 사용자 관리 역할 바인딩 바인딩 생성을 선택합니다.
  5. 프로젝트 드롭다운에서 모든 프로젝트를 선택합니다.
  6. 바인딩 생성을 클릭합니다.
  7. 바인딩 유형을 클러스터 전체 역할 바인딩(ClusterRoleBinding) 으로 선택합니다.
  8. RoleBinding 이름의 고유한 값을 입력합니다.
  9. 새로 생성된 클러스터 역할 또는 드롭다운 목록에서 기존 클러스터 역할을 선택합니다.
  10. ServiceAccount주체 를 선택하고 주체 네임스페이스이름을 제공합니다.

    1. 제목 네임스페이스:openshift-gitops
    2. 제목 이름:openshift-gitops-argocd-application-controller
  11. 생성을 클릭합니다. 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
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.