Red Hat Advanced Cluster Management를 사용하는 다중 클러스터 엔진 Operator


Red Hat Advanced Cluster Management for Kubernetes 2.13

Red Hat Advanced Cluster Management 통합을 통한 멀티 클러스터 엔진 Operator

초록

다중 클러스터 엔진 Operator를 사용하고 Red Hat Advanced Cluster Management를 설치하는 경우 더 많은 다중 클러스터 관리 기능에 액세스할 수 있습니다.

다중 클러스터 엔진 Operator를 사용하는 경우 Red Hat Advanced Cluster Management를 설치하는 경우 ObservabilityPolicy 와 같은 다중 클러스터 관리 기능에 액세스할 수 있습니다.

통합 기능의 경우 다음 요구 사항을 참조하십시오.

다중 클러스터 엔진 Operator 및 Red Hat Advanced Cluster Management 멀티 클러스터 관리에 대한 다음 절차를 참조하십시오.

여러 호스팅 클러스터를 호스팅하는 다중 클러스터 엔진 Operator 클러스터가 있는 경우 해당 호스팅 클러스터를 Red Hat Advanced Cluster Management Hub 클러스터로 가져와 애플리케이션 라이프사이클거버넌스 와 같은 Red Hat Advanced Cluster Management 관리 구성 요소를 사용하여 관리할 수 있습니다.

이러한 호스팅된 클러스터는 관리 클러스터로 자동으로 검색 및 가져올 수 있습니다.

참고: 호스트된 컨트롤 플레인은 관리되는 다중 클러스터 엔진 Operator 클러스터 노드에서 실행되기 때문에 클러스터가 호스팅할 수 있는 호스팅된 컨트롤 플레인 수는 관리되는 다중 클러스터 엔진 Operator 클러스터 노드와 관리되는 다중 클러스터 엔진 Operator 클러스터 노드의 리소스 가용성에 따라 결정됩니다. 더 많은 호스팅 컨트롤 플레인을 호스팅하기 위해 더 많은 노드 또는 관리 클러스터를 추가할 수 있습니다.

필수 액세스: 클러스터 관리자

1.1.1. 사전 요구 사항

  • 하나 이상의 다중 클러스터 엔진 Operator 클러스터가 필요합니다.
  • 허브 클러스터로 설정된 Red Hat Advanced Cluster Management 클러스터가 필요합니다.
  • 다음 명령을 실행하여 clusteradm CLI를 설치합니다.

    curl -L https://raw.githubusercontent.com/open-cluster-management-io/clusteradm/main/install.sh | bash
    Copy to Clipboard Toggle word wrap

다중 클러스터 엔진 Operator에는 관리되는 허브 클러스터인 local-cluster 가 있습니다. open-cluster-management-agent-addon 네임스페이스의 이 local-cluster 에 대해 다음과 같은 기본 애드온이 활성화됩니다.

  • cluster-proxy
  • managed-serviceaccount
  • work-manager
1.1.2.1. 애드온 구성

멀티 클러스터 엔진 Operator를 Red Hat Advanced Cluster Management로 가져올 때 Red Hat Advanced Cluster Management는 동일한 애드온 세트를 사용하여 다중 클러스터 엔진 Operator를 관리할 수 있습니다.

다른 다중 클러스터 엔진 운영자 네임스페이스에 이러한 애드온을 설치하여 다중 클러스터 엔진 운영자가 로컬 클러스터 애드온 으로 자체 관리할 수 있는 반면 Red Hat Advanced Cluster Management는 다중 클러스터 엔진 Operator를 동시에 관리합니다. 다음 절차를 완료합니다.

  1. CLI를 사용하여 Red Hat Advanced Cluster Management에 로그인합니다.
  2. addonDeploymentConfig 리소스를 생성하여 다른 애드온 설치 네임스페이스를 지정합니다. agentInstallNamespaceopen-cluster-management-agent-addon-discovery 를 가리키는 다음 예제를 참조하십시오.

    apiVersion: addon.open-cluster-management.io/v1alpha1
    kind: addonDeploymentConfig
    metadata:
      name: addon-ns-config
      namespace: multicluster-engine
    spec:
      agentInstallNamespace: open-cluster-management-agent-addon-discovery
    Copy to Clipboard Toggle word wrap
  3. oc apply -f <filename>.yaml 을 실행하여 파일을 적용합니다.
  4. add-ons에 대한 기존 ClusterManagementAddOn 리소스를 업데이트하여 생성한 addonDeploymentConfig 리소스에 지정된 open-cluster-management-agent-addon-discovery 네임스페이스에 애드온을 설치합니다. open-cluster-management-global-set 을 네임스페이스로 사용하여 다음 예제를 참조하십시오.

    apiVersion: addon.open-cluster-management.io/v1alpha1
    kind: ClusterManagementAddOn
    metadata:
      name: work-manager
    spec:
      addonMeta:
        displayName: work-manager
      installStrategy:
        placements:
        - name: global
          namespace: open-cluster-management-global-set
          rolloutStrategy:
            type: All
        type: Placements
    Copy to Clipboard Toggle word wrap
    1. addonDeploymentConfigsClusterManagementAddOn 에 추가합니다. 다음 예제를 참조하십시오.

      apiVersion: addon.open-cluster-management.io/v1alpha1
      kind: ClusterManagementAddOn
      metadata:
        name: work-manager
      spec:
        addonMeta:
          displayName: work-manager
        installStrategy:
          placements:
          - name: global
            namespace: open-cluster-management-global-set
            rolloutStrategy:
              type: All
            configs:
            - group: addon.open-cluster-management.io
              name: addon-ns-config
              namespace: multicluster-engine
              resource: addondeploymentconfigs
          type: Placements
      Copy to Clipboard Toggle word wrap
    2. addonDeploymentConfigmanaged-serviceaccount 에 추가합니다. 다음 예제를 참조하십시오.

      apiVersion: addon.open-cluster-management.io/v1alpha1
      kind: ClusterManagementAddOn
      metadata:
        name: managed-serviceaccount
      spec:
        addonMeta:
          displayName: managed-serviceaccount
        installStrategy:
          placements:
          - name: global
            namespace: open-cluster-management-global-set
            rolloutStrategy:
              type: All
            configs:
            - group: addon.open-cluster-management.io
              name: addon-ns-config
              namespace: multicluster-engine
              resource: addondeploymentconfigs
          type: Placements
      Copy to Clipboard Toggle word wrap
    3. addondeploymentconfigs 값을 cluster-proxy 라는 ClusterManagementAddOn 리소스에 추가합니다. 다음 예제를 참조하십시오.
    apiVersion: addon.open-cluster-management.io/v1alpha1
    kind: ClusterManagementAddOn
    metadata:
      name: cluster-proxy
    spec:
      addonMeta:
        displayName: cluster-proxy
      installStrategy:
        placements:
        - name: global
          namespace: open-cluster-management-global-set
          rolloutStrategy:
            type: All
          configs:
          - group: addon.open-cluster-management.io
            name: addon-ns-config
            namespace: multicluster-engine
            resource: addondeploymentconfigs
        type: Placements
    Copy to Clipboard Toggle word wrap
  5. 다음 명령을 실행하여 Red Hat Advanced Cluster Management local-cluster 의 애드온이 지정한 네임스페이스에 다시 설치되어 있는지 확인합니다.

    oc get deployment -n open-cluster-management-agent-addon-discovery
    Copy to Clipboard Toggle word wrap

    다음 출력 예제를 참조하십시오.

    NAME                                 READY   UP-TO-DATE   AVAILABLE    AGE
    cluster-proxy-proxy-agent             1/1     1            1           24h
    klusterlet-addon-workmgr             1/1     1            1           24h
    managed-serviceaccount-addon-agent   1/1     1            1           24h
    Copy to Clipboard Toggle word wrap
1.1.2.2. KlusterletConfig 리소스 생성

다중 클러스터 엔진 Operator에는 관리되는 허브 클러스터인 로컬 클러스터가 있습니다. 이 local-cluster에 대해 klusterlet 이라는 리소스가 생성됩니다.

멀티 클러스터 엔진 Operator를 Red Hat Advanced Cluster Management로 가져올 때 Red Hat Advanced Cluster Management는 동일한 이름의 klusterlet 을 설치하여 다중 클러스터 엔진 Operator를 관리합니다. 이는 다중 클러스터 엔진 Operator local-cluster klusterlet과 충돌합니다.

충돌을 방지하기 위해 klusterletlet이 다른 이름으로 설치되도록 ManagedCluster 리소스에서 다중 클러스터 엔진 Operator 클러스터를 가져오는 데 사용하는 KlusterletConfig 리소스를 생성해야 합니다. 다음 절차를 완료합니다.

  1. 다음 예제를 사용하여 KlusterletConfig 리소스를 생성합니다. 관리 클러스터에서 이 KlusterletConfig 리소스를 참조하는 경우 spec.installMode.noOperator. Cryostat 필드의 값은 klusterlet-mce-import 와 같은 klusterlet 이름의 접미사로 사용됩니다.

    kind: KlusterletConfig
    apiVersion: config.open-cluster-management.io/v1alpha1
    metadata:
      name: mce-import-klusterlet-config
    spec:
      installMode:
        type: noOperator
        noOperator:
           postfix: mce-import
    Copy to Clipboard Toggle word wrap
  2. oc apply -f <filename>.yaml 을 실행하여 파일을 적용합니다.
1.1.2.3. 백업 및 복원을 위한 구성

Red Hat Advanced Cluster Management를 설치한 후에는 백업 및 복원 기능을 사용할 수도 있습니다.

허브 클러스터가 재해 복구 시나리오에서 복원되면 가져온 다중 클러스터 엔진 Operator 클러스터 및 호스팅된 클러스터를 최신 Red Hat Advanced Cluster Management Hub 클러스터로 가져옵니다.

이 시나리오에서는 Red Hat Advanced Cluster Management Hub 클러스터 복원의 일부로 이전 구성을 복원해야 합니다.

backup=true 레이블을 추가하여 백업을 활성화합니다. 각 애드온에 대한 다음 단계를 참조하십시오.

  • addon-ns-config 의 경우 다음 명령을 실행합니다.

    oc label addondeploymentconfig addon-ns-config -n multicluster-engine cluster.open-cluster-management.io/backup=true
    Copy to Clipboard Toggle word wrap
  • hypershift-addon-deploy-config 의 경우 다음 명령을 실행합니다.

    oc label addondeploymentconfig hypershift-addon-deploy-config -n multicluster-engine cluster.open-cluster-management.io/backup=true
    Copy to Clipboard Toggle word wrap
  • work-manager 에서 다음 명령을 실행합니다.

    oc label clustermanagementaddon work-manager cluster.open-cluster-management.io/backup=true
    Copy to Clipboard Toggle word wrap
  • 'cluster-proxy'의 경우 다음 명령을 실행합니다.

    oc label clustermanagementaddon cluster-proxy cluster.open-cluster-management.io/backup=true
    Copy to Clipboard Toggle word wrap
  • managed-serviceaccount 의 경우 다음 명령을 실행합니다.

    oc label clustermanagementaddon managed-serviceaccount cluster.open-cluster-management.io/backup=true
    Copy to Clipboard Toggle word wrap
  • mce-import-klusterlet-config 의 경우 다음 명령을 실행합니다.

    oc label KlusterletConfig mce-import-klusterlet-config cluster.open-cluster-management.io/backup=true
    Copy to Clipboard Toggle word wrap

1.1.3. 다중 클러스터 엔진 Operator 가져오기

Red Hat Advanced Cluster Management 클러스터에서 다중 클러스터 엔진 Operator 클러스터를 수동으로 가져오려면 다음 절차를 완료하십시오.

  1. Red Hat Advanced Cluster Management 클러스터에서 ManagedCluster 리소스를 수동으로 생성하여 다중 클러스터 엔진 Operator 클러스터를 가져옵니다. 다음 파일 예제를 참조하십시오.

    apiVersion: cluster.open-cluster-management.io/v1
    kind: ManagedCluster
    metadata:
      annotations:
        agent.open-cluster-management.io/klusterlet-config: mce-import-klusterlet-config 
    1
    
      name: mce-a 
    2
    
    spec:
      hubAcceptsClient: true
      leaseDurationSeconds: 60
    Copy to Clipboard Toggle word wrap
    1
    mce-import-klusterlet-config 주석은 다중 클러스터 엔진 Operator의 다른 이름으로 Red Hat Advanced Cluster Management klusterlet을 설치하기 위해 이전 단계에서 생성한 KlusterletConfig 리소스를 참조합니다.
    2
    이 예제에서는 mce-a 라는 다중 클러스터 엔진 Operator 관리 클러스터를 가져옵니다.
  2. oc apply -f <filename>.yaml 을 실행하여 파일을 적용합니다.
  3. 다중 클러스터 엔진 Operator 클러스터의 kubeconfig 를 참조하는 auto-import-secret 시크릿을 생성합니다. CLI 를 사용하여 관리 클러스터 가져오기에서 자동 가져오기 보안을 사용하여 클러스터 가져오기로 이동하여 다중 클러스터 엔진 Operator 자동 가져오기 프로세스를 완료합니다.

    Red Hat Advanced Cluster Management 클러스터의 다중 클러스터 엔진 Operator 관리 클러스터 네임스페이스에 자동 가져오기 보안을 생성하면 관리 클러스터가 등록됩니다.

  4. 다음 명령을 실행하여 상태를 가져옵니다.

    oc get managedcluster
    Copy to Clipboard Toggle word wrap

    관리형 클러스터의 상태 및 예제 URL을 사용하여 다음 예제 출력을 참조하십시오.

    NAME           HUB ACCEPTED   MANAGED CLUSTER URLS            JOINED   AVAILABLE   AGE
    local-cluster  true           https://<api.acm-hub.com:port>  True     True        44h
    mce-a          true           https://<api.mce-a.com:port>    True     True        27s
    Copy to Clipboard Toggle word wrap

중요: 가져온 다중 클러스터 엔진 Operator에 대해 다른 Red Hat Advanced Cluster Management 애드온을 활성화하지 마십시오.

1.1.4. 호스트 클러스터 검색

모든 다중 클러스터 엔진 Operator 클러스터를 Red Hat Advanced Cluster Management로 가져온 후 해당 관리 다중 클러스터 엔진 Operator 클러스터에 대해 hypershift-addon 을 활성화하여 호스트 클러스터를 검색해야 합니다.

기본 애드온은 이전 절차의 다른 네임스페이스에 설치됩니다. 마찬가지로 다중 클러스터 엔진 Operator의 다른 네임스페이스에 hypershift-addon 을 설치하여 다중 클러스터 엔진 Operator의 애드온 에이전트와 Red Hat Advanced Cluster Management의 에이전트도 다중 클러스터 엔진 Operator에서 작동할 수 있습니다.

중요: 다음 명령을 모두 < managed-cluster-names >를 다중 클러스터 엔진 Operator의 쉼표로 구분된 관리 클러스터 이름으로 바꿉니다.

  1. 다음 명령을 실행하여 애드온의 agentInstallNamespace 네임스페이스를 open-cluster-management-agent-addon-discovery 로 설정합니다.

    oc patch addondeploymentconfig hypershift-addon-deploy-config -n multicluster-engine --type=merge -p '{"spec":{"agentInstallNamespace":"open-cluster-management-agent-addon-discovery"}}'
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 메트릭을 비활성화하고 HyperShift Operator 관리를 비활성화합니다.

    oc patch addondeploymentconfig hypershift-addon-deploy-config -n multicluster-engine --type=merge -p '{"spec":{"customizedVariables":[{"name":"disableMetrics","value": "true"},{"name":"disableHOManagement","value": "true"}]}}'
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 다중 클러스터 엔진 Operator에 대해 hypershift-addon 을 활성화합니다.

    clusteradm addon enable --names hypershift-addon --clusters <managed-cluster-names>
    Copy to Clipboard Toggle word wrap
  4. Red Hat Advanced Cluster Management에서 다음 명령을 실행하여 다중 클러스터 엔진 Operator 관리 클러스터 이름을 가져올 수 있습니다.

    oc get managedcluster
    Copy to Clipboard Toggle word wrap
  5. 다중 클러스터 엔진 Operator 클러스터에 로그인하고 hypershift-addon 이 사용자가 지정한 네임스페이스에 설치되어 있는지 확인합니다. 다음 명령을 실행합니다.

    oc get deployment -n open-cluster-management-agent-addon-discovery
    Copy to Clipboard Toggle word wrap

    애드온을 나열하는 다음 예제 출력을 참조하십시오.

    NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
    cluster-proxy-proxy-agent            1/1     1            1           24h
    klusterlet-addon-workmgr            1/1     1            1           24h
    hypershift-addon-agent              1/1     1            1           24h
    managed-serviceaccount-addon-agent  1/1     1            1           24h
    Copy to Clipboard Toggle word wrap

Red Hat Advanced Cluster Management는 다중 클러스터 엔진 Operator에서 호스트된 클러스터를 검색하는 검색 에이전트인 hypershift-addon 을 배포합니다. 이 에이전트는 호스팅된 클러스터 kube-apiserver 를 사용할 수 있게 되면 Red Hat Advanced Cluster Management Hub 클러스터의 다중 클러스터 엔진 Operator 관리 클러스터 네임스페이스에 해당 DiscoveredCluster 사용자 정의 리소스를 생성합니다.

콘솔에서 검색된 클러스터를 볼 수 있습니다.

  1. 허브 클러스터 콘솔에 로그인하고 모든 클러스터 > 인프라 > 클러스터로 이동합니다.
  2. MultiClusterEngineHCP 유형의 다중 클러스터 엔진 Operator에서 검색된 호스트 클러스터를 모두 보려면 Discovered clusters 탭을 찾습니다.

다음으로 검색된 호스팅 클러스터의 가져오기 자동화 를 방문하여 클러스터 자동 가져오기를 확인하십시오.

1.2. 검색된 호스팅 클러스터에 대한 가져오기 자동화

개별 클러스터를 수동으로 가져오지 않고도 DiscoveredCluster 리소스를 사용하여 호스트 클러스터 가져오기를 자동화합니다.

검색된 호스팅 클러스터를 Red Hat Advanced Cluster Management로 자동으로 가져오는 경우 모든 Red Hat Advanced Cluster Management 애드온이 활성화되므로 사용 가능한 관리 툴로 호스팅된 클러스터 관리를 시작할 수 있습니다.

또한 호스트된 클러스터는 다중 클러스터 엔진 Operator로 자동 가져옵니다. 멀티 클러스터 엔진 Operator 콘솔을 통해 호스트된 클러스터 라이프사이클을 관리할 수 있습니다. 그러나 Red Hat Advanced Cluster Management 콘솔에서 호스팅되는 클러스터 라이프사이클을 관리할 수 없습니다.

필수 액세스: 클러스터 관리자

1.2.1. 사전 요구 사항

  • Red Hat Advanced Cluster Management가 설치되어 있어야 합니다. Red Hat Advanced Cluster Management 설치 및 업그레이드 설명서를 참조하십시오.
  • 정책에 대해 배울 필요가 있습니다. Red Hat Advanced Cluster Management 설명서에서 Governance 소개를 참조하십시오.

1.2.2. 자동 가져오기를 위한 설정 구성

관리형 다중 클러스터 엔진 Operator 클러스터에서 검색된 호스트 클러스터는 Red Hat Advanced Cluster Management의 관리형 다중 클러스터 엔진 Operator 클러스터 네임스페이스에 있는 DiscoveredCluster 사용자 정의 리소스에 표시됩니다. 다음 DiscoveredCluster 리소스 및 네임스페이스 예제를 참조하십시오.

apiVersion: discovery.open-cluster-management.io/v1
kind: DiscoveredCluster
metadata:
  creationTimestamp: "2024-05-30T23:05:39Z"
  generation: 1
  labels:
    hypershift.open-cluster-management.io/hc-name: hosted-cluster-1
    hypershift.open-cluster-management.io/hc-namespace: clusters
  name: hosted-cluster-1
  namespace: mce-1
  resourceVersion: "1740725"
  uid: b4c36dca-a0c4-49f9-9673-f561e601d837
spec:
  apiUrl: https://a43e6fe6dcef244f8b72c30426fb6ae3-ea3fec7b113c88da.elb.us-west-1.amazonaws.com:6443
  cloudProvider: aws
  creationTimestamp: "2024-05-30T23:02:45Z"
  credential: {}
  displayName: mce-1-hosted-cluster-1
  importAsManagedCluster: false
  isManagedCluster: false
  name: hosted-cluster-1
  openshiftVersion: 0.0.0
  status: Active
  type: MultiClusterEngineHCP
Copy to Clipboard Toggle word wrap

검색된 호스트 클러스터는 spec.importAsManagedCluster 필드가 true 로 설정될 때까지 Red Hat Advanced Cluster Management로 자동 가져오지 않습니다. Red Hat Advanced Cluster Management 정책을 사용하여 모든 유형에 대해 이 필드를 자동으로 true 로 설정하는 방법을 알아보십시오. DiscoveredCluster 리소스 내에서MultiClusterEngineHCP 가 검색된 호스팅 클러스터를 즉시 Red Hat Advanced Cluster Management로 자동으로 가져옵니다.

검색된 호스팅 클러스터를 모두 자동으로 가져오도록 정책을 구성합니다. CLI에서 hub 클러스터에 로그인하여 다음 절차를 완료합니다.

  1. DiscoveredCluster 사용자 정의 리소스에 대한 YAML 파일을 생성하고 다음 예제에서 참조하는 구성을 편집합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-mce-hcp-autoimport
      namespace: open-cluster-management-global-set
      annotations:
        policy.open-cluster-management.io/standards: NIST SP 800-53
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
        policy.open-cluster-management.io/description: Discovered clusters that are of
          type MultiClusterEngineHCP can be automatically imported into ACM as managed clusters.
          This policy configure those discovered clusters so they are automatically imported.
          Fine tuning MultiClusterEngineHCP clusters to be automatically imported
          can be done by configure filters at the configMap or add annotation to the discoverd cluster.
    spec:
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: mce-hcp-autoimport-config
            spec:
              object-templates:
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: v1
                    kind: ConfigMap
                    metadata:
                      name: discovery-config
                      namespace: open-cluster-management-global-set
                    data:
                      rosa-filter: ""
              remediationAction: enforce 
    1
    
              severity: low
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: policy-mce-hcp-autoimport
            spec:
              remediationAction: enforce
              severity: low
              object-templates-raw: |
                {{- /* find the MultiClusterEngineHCP DiscoveredClusters */ -}}
                {{- range $dc := (lookup "discovery.open-cluster-management.io/v1" "DiscoveredCluster" "" "").items }}
                  {{- /* Check for the flag that indicates the import should be skipped */ -}}
                  {{- $skip := "false" -}}
                  {{- range $key, $value := $dc.metadata.annotations }}
                    {{- if and (eq $key "discovery.open-cluster-management.io/previously-auto-imported")
                               (eq $value "true") }}
                      {{- $skip = "true" }}
                    {{- end }}
                  {{- end }}
                  {{- /* if the type is MultiClusterEngineHCP and the status is Active */ -}}
                  {{- if and (eq $dc.spec.status "Active")
                             (contains (fromConfigMap "open-cluster-management-global-set" "discovery-config" "mce-hcp-filter") $dc.spec.displayName)
                             (eq $dc.spec.type "MultiClusterEngineHCP")
                             (eq $skip "false") }}
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: discovery.open-cluster-management.io/v1
                    kind: DiscoveredCluster
                    metadata:
                      name: {{ $dc.metadata.name }}
                      namespace: {{ $dc.metadata.namespace }}
                    spec:
                      importAsManagedCluster: true 
    2
    
                  {{- end }}
                {{- end }}
    Copy to Clipboard Toggle word wrap
    1
    자동 가져오기를 활성화하려면 spec.remediationAction 을 변경하여 다음을 적용합니다.
    2
    자동 가져오기를 활성화하려면 spec.importAsManagedClustertrue 로 변경합니다.
  2. oc apply -f <filename>.yaml -n <namespace >를 실행하여 파일을 적용합니다.

1.2.3. 배치 정의 생성

정책 배포를 위해 관리 클러스터를 지정하는 배치 정의를 생성해야 합니다. 다음 절차를 완료합니다.

  1. 관리되는 허브 클러스터인 local-cluster 만 선택하는 배치 정의를 생성합니다. 다음 YAML 샘플을 사용합니다.

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: policy-mce-hcp-autoimport-placement
      namespace: open-cluster-management-global-set
    spec:
      tolerations:
        - key: cluster.open-cluster-management.io/unreachable
          operator: Exists
        - key: cluster.open-cluster-management.io/unavailable
          operator: Exists
      clusterSets:
        - global
      predicates:
        - requiredClusterSelector:
            labelSelector:
              matchExpressions:
                - key: local-cluster
                  operator: In
                  values:
                    - "true"
    Copy to Clipboard Toggle word wrap
  2. oc apply -f placement.yaml -n <namespace > 실행합니다. 여기서 namespace는 이전에 생성한 정책에 사용한 네임스페이스와 일치합니다.

1.2.4. 배치 정의에 가져오기 정책 바인딩

정책과 배치를 생성한 후 두 리소스를 연결해야 합니다. 다음 단계를 완료합니다.

  1. PlacementBinding 리소스를 사용하여 리소스를 연결합니다. placementRef 가 사용자가 생성한 배치를 가리키고 주체 가 생성한 정책을 가리키는 다음 예제를 참조하십시오.

    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: policy-mce-hcp-autoimport-placement-binding
      namespace: open-cluster-management-global-set
    placementRef:
      name: policy-mce-hcp-autoimport-placement
      apiGroup: cluster.open-cluster-management.io
      kind: Placement
    subjects:
      - name: policy-mce-hcp-autoimport
        apiGroup: policy.open-cluster-management.io
        kind: Policy
    Copy to Clipboard Toggle word wrap
  2. 확인하려면 다음 명령을 실행합니다.

    oc get policy policy-mce-hcp-autoimport -n <namespace>
    Copy to Clipboard Toggle word wrap

중요: Red Hat Advanced Cluster Management 콘솔에서 Detach 옵션을 사용하거나 명령줄에서 해당 ManagedCluster 사용자 정의 리소스를 제거하여 Red Hat Advanced Cluster Management에서 호스트된 클러스터를 분리 할 수 있습니다.

최상의 결과를 얻으려면 호스트 클러스터를 제거하기 전에 관리형 호스트 클러스터를 분리하십시오.

검색된 클러스터가 분리되면 정책이 검색된 클러스터를 다시 가져오지 못하도록 DiscoveredCluster 리소스에 다음 주석이 추가됩니다.

  annotations:
    discovery.open-cluster-management.io/previously-auto-imported: "true"
Copy to Clipboard Toggle word wrap

검색된 클러스터를 다시 가져오려면 이 주석을 제거합니다.

1.3. AWS 클러스터에서 검색된 OpenShift Service에 대한 가져오기 자동화

개별 클러스터를 수동으로 가져오지 않고 클러스터 관리를 위해 Red Hat Advanced Cluster Management 정책 시행을 사용하여 AWS 클러스터에서 OpenShift Service 가져오기를 자동화합니다.

필수 액세스: 클러스터 관리자

1.3.1. 사전 요구 사항

  • Red Hat Advanced Cluster Management가 설치되어 있어야 합니다. Red Hat Advanced Cluster Management 설치 및 업그레이드 설명서를 참조하십시오.
  • 정책에 대해 배울 필요가 있습니다. Red Hat Advanced Cluster Management 설명서에서 Governance 소개를 참조하십시오.

1.3.2. 자동 가져오기 정책 생성

다음 정책 및 절차는 AWS 클러스터에서 검색된 모든 OpenShift 서비스를 자동으로 가져오는 방법의 예입니다.

CLI에서 hub 클러스터에 로그인하여 다음 절차를 완료합니다.

  1. 다음 예제를 사용하여 YAML 파일을 생성하고 참조되는 변경 사항을 적용합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-rosa-autoimport
      annotations:
        policy.open-cluster-management.io/standards: NIST SP 800-53
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
        policy.open-cluster-management.io/description: OpenShift Service on AWS discovered clusters can be automatically imported into
    Red Hat Advanced Cluster Management as managed clusters with this policy. You can select and configure those managed clusters so you can import. Configure filters or add an annotation if you do not want all of your OpenShift Service on AWS clusters to be automatically imported.
    spec:
      remediationAction: inform 
    1
    
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: rosa-autoimport-config
            spec:
              object-templates:
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: v1
                    kind: ConfigMap
                    metadata:
                      name: discovery-config
                      namespace: open-cluster-management-global-set
                    data:
                      rosa-filter: "" 
    2
    
              remediationAction: enforce
              severity: low
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: policy-rosa-autoimport
            spec:
              remediationAction: enforce
              severity: low
              object-templates-raw: |
                {{- /* find the ROSA DiscoveredClusters */ -}}
                {{- range $dc := (lookup "discovery.open-cluster-management.io/v1" "DiscoveredCluster" "" "").items }}
                  {{- /* Check for the flag that indicates the import should be skipped */ -}}
                  {{- $skip := "false" -}}
                  {{- range $key, $value := $dc.metadata.annotations }}
                    {{- if and (eq $key "discovery.open-cluster-management.io/previously-auto-imported")
                               (eq $value "true") }}
                      {{- $skip = "true" }}
                    {{- end }}
                  {{- end }}
                  {{- /* if the type is ROSA and the status is Active */ -}}
                  {{- if and (eq $dc.spec.status "Active")
                             (contains (fromConfigMap "open-cluster-management-global-set" "discovery-config" "rosa-filter") $dc.spec.displayName)
                             (eq $dc.spec.type "ROSA")
                             (eq $skip "false") }}
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: discovery.open-cluster-management.io/v1
                    kind: DiscoveredCluster
                    metadata:
                      name: {{ $dc.metadata.name }}
                      namespace: {{ $dc.metadata.namespace }}
                    spec:
                      importAsManagedCluster: true
                  {{- end }}
                {{- end }}
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: policy-rosa-managedcluster-status
            spec:
              remediationAction: enforce
              severity: low
              object-templates-raw: |
                {{- /* Use the same DiscoveredCluster list to check ManagedCluster status */ -}}
                {{- range $dc := (lookup "discovery.open-cluster-management.io/v1" "DiscoveredCluster" "" "").items }}
                  {{- /* Check for the flag that indicates the import should be skipped */ -}}
                  {{- $skip := "false" -}}
                  {{- range $key, $value := $dc.metadata.annotations }}
                    {{- if and (eq $key "discovery.open-cluster-management.io/previously-auto-imported")
                               (eq $value "true") }}
                      {{- $skip = "true" }}
                    {{- end }}
                  {{- end }}
                  {{- /* if the type is ROSA and the status is Active */ -}}
                  {{- if and (eq $dc.spec.status "Active")
                             (contains (fromConfigMap "open-cluster-management-global-set" "discovery-config" "rosa-filter") $dc.spec.displayName)
                             (eq $dc.spec.type "ROSA")
                             (eq $skip "false") }}
                - complianceType: musthave
                  objectDefinition:
                    apiVersion: cluster.open-cluster-management.io/v1
                    kind: ManagedCluster
                    metadata:
                      name: {{ $dc.spec.displayName }}
                      namespace: {{ $dc.spec.displayName }}
                    status:
                      conditions:
                        - type: ManagedClusterConditionAvailable
                          status: "True"
                  {{- end }}
                {{- end }}
    Copy to Clipboard Toggle word wrap
    1
    자동 가져오기를 활성화하려면 spec.remediationAction 을 변경하여 다음을 적용합니다.
    2
    선택 사항: 여기에서 값을 지정하여 검색된 클러스터 이름을 기반으로 하는 AWS 클러스터에서 일치하는 OpenShift Service의 하위 집합을 선택합니다. rosa-filter 는 기본적으로 값이 없으므로 필터는 하위 집합 값 없이 클러스터 이름을 제한하지 않습니다.
  2. oc apply -f <filename>.yaml -n <namespace >를 실행하여 파일을 적용합니다.

1.3.3. 배치 정의 생성

정책 배포를 위해 관리 클러스터를 지정하는 배치 정의를 생성해야 합니다.

  1. 관리되는 허브 클러스터인 local-cluster 만 선택하는 배치 정의를 생성합니다. 다음 YAML 샘플을 사용합니다.

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: Placement
    metadata:
      name: placement-openshift-plus-hub
    spec:
      predicates:
      - requiredClusterSelector:
          labelSelector:
            matchExpressions:
            - key: name
          	    operator: In
          	    values:
          	    - local-cluster
    Copy to Clipboard Toggle word wrap
  2. oc apply -f placement.yaml -n <namespace > 실행합니다. 여기서 namespace는 이전에 생성한 정책에 사용한 네임스페이스와 일치합니다.

1.3.4. 배치 정의에 가져오기 정책 바인딩

정책과 배치를 생성한 후 두 리소스를 연결해야 합니다.

  1. PlacementBinding 을 사용하여 리소스를 연결합니다. placementRef 가 사용자가 생성한 배치를 가리키고 주체 가 생성한 정책을 가리키는 다음 예제를 참조하십시오.

    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-policy-rosa-autoimport
    placementRef:
      apiGroup: cluster.open-cluster-management.io
      kind: Placement
      name: placement-policy-rosa-autoimport
    subjects:
    - apiGroup: policy.open-cluster-management.io
      kind: Policy
      name: policy-rosa-autoimport
    Copy to Clipboard Toggle word wrap
  2. 확인하려면 다음 명령을 실행합니다.

    oc get policy policy-rosa-autoimport -n <namespace>
    Copy to Clipboard Toggle word wrap

1.4. 관찰 기능 통합

Red Hat Advanced Cluster Management Observability 기능을 사용하면 플릿 전체에서 클러스터의 상태 및 사용률을 볼 수 있습니다. Red Hat Advanced Cluster Management를 설치하고 Observability를 활성화할 수 있습니다.

1.4.1. 호스트된 컨트롤 플레인 관찰

multicluster-observability Pod를 활성화한 후 Red Hat Advanced Cluster Management Observability Grafana 대시보드를 사용하여 호스팅된 컨트롤 플레인에 대한 다음 정보를 볼 수 있습니다.

  • ACM > 호스팅 컨트롤 플레인 개요 대시보드를 통해 호스팅되는 컨트롤 플레인, 관련 클러스터 리소스 및 기존 호스팅 컨트롤 플레인의 목록 및 상태에 대한 클러스터 용량 추정치를 확인할 수 있습니다. 자세한 내용은 호스트 컨트롤 플레인 소개를 참조하십시오.
  • ACM > Resources > Hosted Control Plane Dashboard that you can access from the Overview page to see the resource utilization of the selected hosted control plane. 자세한 내용은 호스팅된 컨트롤 플레인 명령줄 인터페이스 설치를 참조하십시오.

활성화하려면 Observability 서비스를 참조하십시오.

2장. SiteConfig

SiteConfig Operator는 템플릿 기반 클러스터 프로비저닝 솔루션을 제공하므로 다양한 설치 방법을 사용하여 클러스터를 프로비저닝할 수 있습니다.

SiteConfig Operator는 SiteConfig 생성기 kustomize 플러그인의 SiteConfig API에서 제공되는 통합 ClusterInstance API를 도입합니다.

ClusterInstance API는 클러스터가 배포되는 방식에서 클러스터를 정의하는 매개변수를 분리합니다.

이러한 분리는 Argo CD와 관련된 에이전트 클러스터 설치 및 확장성 제한과 같은 현재 GitOps ZTP(ZTP) 흐름SiteConfig kustomize 플러그인에서 제공하는 특정 제한 사항을 제거합니다.

통합 ClusterInstance API를 사용하여 SiteConfig Operator는 다음과 같은 향상된 기능을 제공합니다.

격리
클러스터 정의를 설치 방법과 분리합니다. ClusterInstance 사용자 정의 리소스는 클러스터 정의를 캡처하는 반면 설치 템플릿은 클러스터 아키텍처 및 설치 방법을 캡처합니다.
통합
SiteConfig Operator는 Git 및 비Git 워크플로를 모두 통합합니다. hub 클러스터에 직접 ClusterInstance 사용자 정의 리소스를 적용하거나 ArgoCD와 같은 GitOps 솔루션을 통해 리소스를 동기화할 수 있습니다.
일관성
지원 설치 관리자, Image Based Install Operator 또는 기타 사용자 정의 템플릿 기반 접근 방식을 사용하든 관계없이 설치 방법 간에 일관된 API를 유지 관리합니다.
확장성
SiteConfig kustomize 플러그인보다 각 클러스터에 대한 확장성이 향상됩니다.
유연성
사용자 지정 템플릿을 사용하여 클러스터를 배포하고 설치할 수 있는 더 많은 기능을 제공합니다.
문제 해결
클러스터 배포 상태 및 렌더링된 매니페스트에 대한 통찰력 있는 정보를 제공하여 문제 해결 환경을 크게 향상시킵니다.

Image Based Install Operator에 대한 자세한 내용은 Image Based Install Operator 를 참조하십시오.

지원 설치 관리자에 대한 자세한 내용은 지원 설치 관리자를 사용하여 온프레미스 클러스터 설치를참조하십시오.

2.1. siteConfig Operator 흐름

SiteConfig Operator는 ClusterInstance 사용자 정의 리소스의 데이터에서 인스턴스화되는 사용자 정의 템플릿을 기반으로 설치 매니페스트를 동적으로 생성합니다.

ArgoCD를 통해 Git 리포지토리에서 ClusterInstance 사용자 정의 리소스를 소싱하거나 허브 클러스터에서 수동으로 또는 외부 툴 및 워크플로우를 통해 직접 생성할 수 있습니다.

다음은 프로세스에 대한 고급 개요입니다.

  1. hub 클러스터에 하나 이상의 설치 템플릿 세트를 생성합니다.
  2. 해당 설치 템플릿을 참조하고 매니페스트를 지원하는 ClusterInstance 사용자 정의 리소스를 생성합니다.
  3. 리소스가 생성되면 SiteConfig Operator가 사용자 정의 리소스에서 참조되는 templated 필드를 채워 ClusterInstance 사용자 정의 리소스를 조정합니다.
  4. SiteConfig Operator는 설치 매니페스트의 유효성을 검사하고 렌더링한 다음 Operator는 예행 실행을 수행합니다.
  5. 예행 실행이 성공하면 매니페스트가 생성된 다음 기본 Operator에서 매니페스트를 사용하고 처리합니다.
  6. 설치가 시작됩니다.
  7. SiteConfig Operator는 연결된 ClusterDeployment 리소스의 변경 사항을 지속적으로 모니터링하고 그에 따라 ClusterInstance 사용자 지정 리소스의 상태 필드를 업데이트합니다.

SiteConfig Operator 사용 방법에 대한 자세한 내용은 다음 설명서를 참조하십시오.

고급 주제는 다음 설명서를 참조하십시오.

2.2. 설치 템플릿 개요

설치 템플릿은 설치 아티팩트 세트를 생성하는 데 사용되는 데이터 기반 템플릿입니다. 이러한 템플릿은 Golang 텍스트/템플릿 형식을 따르고 ClusterInstance 사용자 정의 리소스의 데이터를 사용하여 인스턴스화됩니다. 이를 통해 유사한 구성이 있지만 값이 다른 각 대상 클러스터에 대해 동적 설치 매니페스트를 생성할 수 있습니다.

다양한 설치 방법 또는 클러스터 토폴로지를 기반으로 여러 세트를 생성할 수도 있습니다. SiteConfig Operator는 다음 유형의 설치 템플릿을 지원합니다.

클러스터 수준
클러스터별 필드만 참조해야 하는 템플릿입니다.
노드 수준
클러스터별 필드와 노드별 필드를 모두 참조할 수 있는 템플릿입니다.

설치 템플릿에 대한 자세한 내용은 다음 설명서를 참조하십시오.

2.2.1. 템플릿 함수

templated 필드를 사용자 지정할 수 있습니다. SiteConfig Operator는 모든 sprig 라이브러리 함수 를 지원합니다.

또한 ClusterInstance API는 사용자 정의 매니페스트를 생성하는 동안 사용할 수 있는 다음 기능을 제공합니다.

toYaml
toYaml 함수는 항목을 YAML 문자열로 인코딩합니다. 항목을 YAML로 변환할 수 없는 경우 함수는 빈 문자열을 반환합니다.

ClusterInstance.Spec.Proxy 필드에서 .toYaml 사양의 다음 예제를 참조하십시오.

{{ if .Spec.Proxy }}
  proxy:
{{ .Spec.Proxy | toYaml | indent 4 }}
{{ end }}
Copy to Clipboard Toggle word wrap

2.2.2. 기본 템플릿 세트

SiteConfig Operator는 Operator가 설치된 동일한 네임스페이스에 있는 다음과 같은 기본, 유효성 검사 및 변경 불가능한 템플릿 세트를 제공합니다.

Expand
설치 방법템플릿 유형파일 이름템플릿 콘텐츠

지원되는 설치 관리자

클러스터 수준 템플릿

ai-cluster-templates-v1.yaml

AgentClusterInstall
ClusterDeployment
InfraEnv
KlusterletAddonConfig
ManagedCluster

노드 수준 템플릿

ai-node-templates-v1.yaml

BareMetalHost
NMStateConfig

이미지 기반 Install Operator

클러스터 수준 템플릿

ibi-cluster-templates-v1.yaml

ClusterDeployment
KlusterletAddonConfig
ManagedCluster

노드 수준 템플릿

ibi-node-templates-v1.yaml

BareMetalHost
ImageClusterInstall
NetworkSecret

ClusterInstance API에 대한 자세한 내용은 ClusterInstance API 를 참조하십시오.

2.2.3. 특수 템플릿 변수

SiteConfig Operator는 템플릿에서 사용할 수 있는 특수 템플릿 변수 집합을 제공합니다. 다음 목록을 참조하십시오.

CurrentNode
SiteConfig Operator는 노드 개체의 반복을 명시적으로 제어하고 이 변수를 노출하여 템플릿에서 처리되는 현재 노드의 모든 콘텐츠에 액세스합니다.
InstallConfigOverrides
병합된 networkType,cpu CryostatingModeinstallConfigOverrides 콘텐츠를 포함합니다.
ControlPlaneAgents
컨트롤 플레인 에이전트 수로 구성되며 ClusterInstance 노드 오브젝트에서 자동으로 파생됩니다.
WorkerAgents
작업자 에이전트 수로 구성되며 ClusterInstance 노드 오브젝트에서 자동으로 파생됩니다.

텍스트 템플릿에서 필드 이름을 대문자로 지정하여 사용자 지정 템플릿 필드를 생성합니다.

예를 들어 ClusterInstance spec 필드는 .Spec 접두사를 사용하여 참조합니다. 그러나 .SpecialVars 접두사를 사용하여 특수 변수 필드를 참조해야 합니다.

중요: spec.nodes 필드에 .Spec.Nodes 접두사를 사용하는 대신 .SpecialVars.CurrentNode 특수 템플릿 변수로 참조해야 합니다.

예를 들어 CurrentNode 특수 템플릿 변수를 사용하여 현재 노드의 이름과 네임스페이스 를 지정하려면 다음 양식에서 필드 이름을 사용합니다.

name: "{{ .SpecialVars.CurrentNode.HostName }}"
namespace: "{{ .Spec.ClusterName }}"
Copy to Clipboard Toggle word wrap

2.2.4. 매니페스트 순서 사용자 정의

siteconfig.open-cluster-management.io/sync- ECDSA 주석을 사용하여 매니페스트가 생성, 업데이트 및 삭제된 순서를 제어할 수 있습니다. 주석은 정수를 값으로 사용하고 해당 정수는 웨이브 로 구성됩니다.

단일 웨이브에 하나 또는 여러 매니페스트를 추가할 수 있습니다. 값을 지정하지 않으면 주석에서 기본값인 0 을 사용합니다.

SiteConfig Operator는 리소스를 생성하거나 업데이트할 때 오름차순으로 매니페스트를 오름차순으로 조정하고 내림차순으로 리소스를 삭제합니다.

다음 예에서 SiteConfig Operator가 매니페스트를 생성하거나 업데이트하면 AgentClusterInstallClusterDeployment 사용자 정의 리소스가 첫 번째 웨이브에서 조정되는 반면 KlusterletAddonConfigManagedCluster 사용자 정의 리소스는 세 번째 파동에서 조정됩니다.

apiVersion: v1
data:
  AgentClusterInstall: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "1"
    ...
  ClusterDeployment: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "1"
    ...
  InfraEnv: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "2"
    ...
  KlusterletAddonConfig: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "3"
    ...
  ManagedCluster: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "3"
    ...
kind: ConfigMap
metadata:
  name: assisted-installer-templates
  namespace: example-namespace
Copy to Clipboard Toggle word wrap

SiteConfig Operator가 리소스를 삭제하는 경우 KlusterletAddonConfigManagedCluster 사용자 정의 리소스가 가장 먼저 삭제되는 반면 AgentClusterInstallClusterDeployment 사용자 정의 리소스가 마지막입니다.

2.2.5. 추가 주석 및 라벨 구성

ClusterInstance API에서 extraAnnotationsextraLabels 필드를 사용하여 클러스터 수준 및 노드 수준 설치 매니페스트 모두에 추가 주석 및 레이블을 구성할 수 있습니다. SiteConfig Operator는 ClusterInstance 리소스에서 지정하는 매니페스트에 추가 주석 및 레이블을 적용합니다.

추가 주석 및 레이블을 생성할 때 SiteConfig 운영자가 일치하는 모든 매니페스트에 적용할 수 있도록 매니페스트 유형을 지정해야 합니다. 그러나 주석과 레이블은 임의의 것이며 애플리케이션에 의미 있는 모든 키 및 값 쌍을 설정할 수 있습니다.

참고: 추가 주석 및 레이블은 참조된 템플릿을 통해 렌더링된 리소스에만 적용됩니다.

추가 주석 및 extra Labels 의 다음 예제 애플리케이션을 확인합니다.

추가 주석 및 extra Labels애플리케이션 예

apiVersion: siteconfig.open-cluster-management.io/v1alpha1
kind: ClusterInstance
metadata:
  name: "example-sno"
  namespace: "example-sno"
spec:
  [...]
  clusterName: "example-sno"
  extraAnnotations: 
1

    ClusterDeployment:
      myClusterAnnotation: success
  extraLabels: 
2

    ManagedCluster:
      common: "true"
      group-du: ""
  nodes:
    - hostName: "example-sno.example.redhat.com"
      role: "master"
      extraAnnotations: 
3

        BareMetalHost:
          myNodeAnnotation: success
      extraLabels: 
4

        BareMetalHost:
          "testExtraLabel": "success"
Copy to Clipboard Toggle word wrap

1 2
이 필드는 SiteConfig Operator가 ManagedClusterClusterDeployment 매니페스트에 적용하는 클러스터 수준 주석 및 레이블을 지원합니다.
3 4
이 필드는 SiteConfig Operator가 BareMetalHost 매니페스트에 적용하는 노드 수준 주석 및 레이블을 지원합니다.
  • 다음 명령을 실행하여 추가 레이블이 적용되었는지 확인할 수 있습니다.

    oc get managedclusters example-sno -ojsonpath='{.metadata.labels}' | jq
    Copy to Clipboard Toggle word wrap

    적용된 라벨의 다음 예제를 확인합니다.

    적용된 라벨 예

    {
      "common": "true",
      "group-du": "",
      ...
    }
    Copy to Clipboard Toggle word wrap

  • 다음 명령을 실행하여 추가 주석이 적용되었는지 확인할 수 있습니다.
oc get bmh example-sno.example.redhat.com -n example-sno -ojsonpath='{.metadata.annotations}' | jq
Copy to Clipboard Toggle word wrap

적용된 주석의 다음 예제를 확인합니다.

적용된 주석 예

{
  "myNodeAnnotation": "success",
  ...
}
Copy to Clipboard Toggle word wrap

2.3. siteConfig Operator 활성화

SiteConfig Operator가 기본 설치 템플릿을 사용하고 규모에 따라 단일 노드 OpenShift 클러스터를 설치할 수 있도록 활성화합니다.

필수 액세스: 클러스터 관리자

2.3.1. 사전 요구 사항

  • Red Hat Advanced Cluster Management 버전 2.12 hub 클러스터가 필요합니다.

2.3.2. MultiClusterHub 리소스에서 SiteConfig Operator 활성화

MultiClusterHub 리소스를 패치한 다음 SiteConfig Operator가 활성화되어 있는지 확인합니다. 다음 절차를 완료합니다.

  1. 다음 명령을 실행하여 Multiclusterhub 리소스에서 spec.overrides.componentssiteconfig 항목에서 enabled 필드를 true 로 설정합니다.

    oc patch multiclusterhubs.operator.open-cluster-management.io multiclusterhub -n rhacm --type json --patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"siteconfig","enabled": true}}]'
    Copy to Clipboard Toggle word wrap
  2. hub 클러스터에서 다음 명령을 실행하여 SiteConfig Operator가 활성화되어 있는지 확인합니다.

    oc -n rhacm get po | grep siteconfig
    Copy to Clipboard Toggle word wrap

    다음 예제 출력을 참조하십시오.

    siteconfig-controller-manager-6fdd86cc64-sdg87                    2/2     Running   0             43s
    Copy to Clipboard Toggle word wrap
  3. 선택 사항: hub 클러스터에서 다음 명령을 실행하여 기본 설치 템플릿이 있는지 확인합니다.

    oc -n rhacm get cm
    Copy to Clipboard Toggle word wrap

    출력 예에서 다음 템플릿 목록을 참조하십시오.

    NAME                                DATA   AGE
    ai-cluster-templates-v1             5      97s
    ai-node-templates-v1                2      97s
    ...
    ibi-cluster-templates-v1            3      97s
    ibi-node-templates-v1               3      97s
    ...
    Copy to Clipboard Toggle word wrap

2.4. 이미지 기반 설치 Operator

기존 설치 방법과 동일한 API를 사용하여 이미지 기반 클러스터 설치를 완료하고 관리할 수 있도록 Image Based Install Operator를 설치합니다.

Image Based Install Operator에 대한 자세한 내용은 단일 노드 OpenShift의 이미지 기반 설치를 참조하십시오.

2.5. SiteConfig Operator를 사용하여 단일 노드 OpenShift 클러스터 설치

기본 설치 템플릿을 사용하여 SiteConfig Operator로 클러스터를 설치합니다. Image-Based Install Operator의 설치 템플릿을 사용하여 절차를 완료합니다.

필수 액세스: 클러스터 관리자

2.5.1. 사전 요구 사항

SiteConfig Operator를 사용하여 클러스터를 설치하려면 다음 단계를 완료합니다.

2.5.2. 대상 네임스페이스 생성

가져오기 보안, BMC 시크릿, 추가 매니페스트 ConfigMap 오브젝트 및 ClusterInstance 사용자 정의 리소스를 생성할 때 대상 네임스페이스가 필요합니다.

대상 네임스페이스를 생성하려면 다음 단계를 완료합니다.

  1. 대상 네임스페이스에 대한 YAML 파일을 생성합니다. clusterinstance-namespace.yaml 이라는 다음 예제 파일을 참조하십시오.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: example-sno
    Copy to Clipboard Toggle word wrap
  2. 파일을 적용하여 리소스를 생성합니다. hub 클러스터에서 다음 명령을 실행합니다.

    oc apply -f clusterinstance-namespace.yaml
    Copy to Clipboard Toggle word wrap

2.5.3. 풀 시크릿 생성

클러스터가 컨테이너 레지스트리에서 이미지를 가져올 수 있도록 하려면 풀 시크릿이 필요합니다. 풀 시크릿을 생성하려면 다음 단계를 완료합니다.

  1. YAML 파일을 생성하여 이미지를 가져옵니다. pull-secret.yaml 이라는 파일의 다음 예제를 참조하십시오.

    apiVersion: v1
    kind: Secret
    metadata:
      name: pull-secret
      namespace: example-sno 
    1
    
    data:
      .dockerconfigjson: <encoded_docker_configuration> 
    2
    
    type: kubernetes.io/dockerconfigjson
    Copy to Clipboard Toggle word wrap
    1
    네임스페이스 값이 대상 네임스페이스 와 일치하는지 확인합니다.
    2
    base64로 인코딩된 구성 파일을 값으로 지정합니다.
  2. 파일을 적용하여 리소스를 생성합니다. hub 클러스터에서 다음 명령을 실행합니다.

    oc apply -f pull-secret.yaml
    Copy to Clipboard Toggle word wrap

2.5.4. BMC 시크릿 생성

BMC(Baseboard Management Controller)에 연결하려면 시크릿이 필요합니다. 보안을 생성하려면 다음 단계를 완료합니다.

  1. BMC 시크릿에 대한 YAML 파일을 생성합니다. 이름이 example-bmc-secret.yaml 인 다음 샘플 파일을 참조하십시오.

    apiVersion: v1
    data:
      password: <password>
      username: <username>
    kind: Secret
    metadata:
      name: example-bmh-secret
      namespace: "example-sno" 
    1
    
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    네임스페이스 값이 대상 네임스페이스 와 일치하는지 확인합니다.
  2. 파일을 적용하여 리소스를 생성합니다. hub 클러스터에서 다음 명령을 실행합니다.

    oc apply -f example-bmc-secret.yaml
    Copy to Clipboard Toggle word wrap

2.5.5. 선택 사항: 추가 매니페스트 생성

ClusterInstance 사용자 정의 리소스에서 참조해야 하는 추가 매니페스트를 생성할 수 있습니다. 추가 매니페스트를 생성하려면 다음 단계를 완료합니다.

  1. 추가 매니페스트 ConfigMap 오브젝트에 대한 YAML 파일을 생성합니다(예: enable-crun.yaml ):

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: enable-crun
      namespace: example-sno 
    1
    
    data:
      enable-crun-master.yaml: |
        apiVersion: machineconfiguration.openshift.io/v1
        kind: ContainerRuntimeConfig
        metadata:
          name: enable-crun-master
        spec:
          machineConfigPoolSelector:
            matchLabels:
              pools.operator.machineconfiguration.openshift.io/master: ""
          containerRuntimeConfig:
            defaultRuntime: crun
      enable-crun-worker.yaml: |
        apiVersion: machineconfiguration.openshift.io/v1
        kind: ContainerRuntimeConfig
        metadata:
          name: enable-crun-worker
        spec:
          machineConfigPoolSelector:
            matchLabels:
              pools.operator.machineconfiguration.openshift.io/worker: ""
          containerRuntimeConfig:
            defaultRuntime: crun
    Copy to Clipboard Toggle word wrap
    1
    네임스페이스 값이 대상 네임스페이스 와 일치하는지 확인합니다.
  2. hub 클러스터에서 다음 명령을 실행하여 리소스를 생성합니다.

    oc apply -f enable-crun.yaml
    Copy to Clipboard Toggle word wrap

2.5.6. 설치 매니페스트 렌더링

ClusterInstance 사용자 정의 리소스의 템플릿 및 지원 매니페스트를 참조합니다. 기본 클러스터 및 노드 템플릿을 사용하여 설치 매니페스트를 렌더링하려면 다음 단계를 완료합니다.

  1. example-sno 네임스페이스에서 다음 예제에서 clusterinstance-ibi.yaml 이라는 ClusterInstance 사용자 정의 리소스를 생성합니다.

    apiVersion: siteconfig.open-cluster-management.io/v1alpha1
    kind: ClusterInstance
    metadata:
      name: "example-clusterinstance"
      namespace: "example-sno" 
    1
    
    spec:
      holdInstallation: false
      extraManifestsRefs: 
    2
    
        - name: extra-machine-configs
        - name: enable-crun
      pullSecretRef:
        name: "pull-secret" 
    3
    
      [...]
      clusterName: "example-sno" 
    4
    
      [...]
      templateRefs: 
    5
    
        - name: ibi-cluster-templates-v1
          namespace: rhacm
      [...]
      nodes:
          [...]
          bmcCredentialsName: 
    6
    
            name: "example-bmh-secret"
          [...]
          templateRefs: 
    7
    
            - name: ibi-node-templates-v1
              namespace: rhacm
          [...]
    Copy to Clipboard Toggle word wrap
    1
    ClusterInstance 사용자 정의 리소스의 네임스페이스 가 사용자가 정의한 대상 네임스페이스와 일치하는지 확인합니다.
    2
    하나 이상의 추가 매니페스트 ConfigMap 오브젝트 이름을 참조합니다.
    3
    풀 시크릿의 이름을 참조합니다.
    4
    ClusterInstance 사용자 정의 리소스의 clusterName 필드 값이 namespace 필드의 값과 일치하는지 확인합니다.
    5
    spec.templateRefs 필드에서 클러스터 수준 템플릿의 이름을 참조합니다. 기본 설치 템플릿을 사용하는 경우 네임스페이스 가 Operator가 설치된 네임스페이스와 일치해야 합니다.
    6
    BMC 시크릿의 이름을 참조합니다.
    7
    spec.nodes.templateRefs 필드에서 노드 수준 템플릿의 이름을 참조합니다. 기본 설치 템플릿을 사용하는 경우 네임스페이스 가 Operator가 설치된 네임스페이스와 일치해야 합니다.
  2. 다음 명령을 실행하여 파일을 적용하고 리소스를 생성합니다.

    oc apply -f clusterinstance-ibi.yaml
    Copy to Clipboard Toggle word wrap

    사용자 지정 리소스를 생성한 후 SiteConfig Operator가 ClusterInstance 사용자 정의 리소스를 조정한 다음 설치 매니페스트를 검증하고 렌더링합니다.

    SiteConfig Operator는 해당 ClusterInstance 사용자 정의 리소스의 클러스터 설치 진행 상황을 업데이트하기 위해 ClusterDeployment 사용자 지정 리소스의 변경 사항을 계속 모니터링합니다.

  3. 다음 명령을 실행하여 프로세스를 모니터링합니다.

    oc get clusterinstance <cluster_name> -n <target_namespace> -o yaml
    Copy to Clipboard Toggle word wrap

    매니페스트 생성에 성공하려면 status.conditions 섹션의 다음 예제 출력을 참조하십시오.

    message: Applied site config manifests
    reason: Completed
    status: "True"
    type: RenderedTemplatesApplied
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 SiteConfig Operator가 렌더링한 매니페스트를 확인합니다.

    oc get clusterinstance <cluster_name> -n <target_namespace> -o jsonpath='{.status.manifestsRendered}'
    Copy to Clipboard Toggle word wrap

상태 조건에 대한 자세한 내용은 ClusterInstance API 를 참조하십시오.

SiteConfig operator로 클러스터를 프로비저닝 해제하여 해당 클러스터와 연결된 모든 리소스 및 액세스를 삭제합니다.

필수 액세스: 클러스터 관리자

2.6.1. 사전 요구 사항

  • 기본 설치 템플릿을 사용하여 SiteConfig Operator로 클러스터를 배포합니다.

2.6.2. 단일 노드 OpenShift 클러스터 프로비저닝 해제

클러스터를 삭제하려면 다음 단계를 완료합니다.

  1. 다음 명령을 실행하여 ClusterInstance 사용자 정의 리소스를 삭제합니다.

    oc delete clusterinstance <cluster_name> -n <target_namespace>
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 삭제에 성공했는지 확인합니다.

    oc get clusterinstance <cluster_name> -n <target_namespace>
    Copy to Clipboard Toggle word wrap

(NotFound) 오류가 클러스터가 프로비저닝 해제되었음을 나타내는 다음 예제 출력을 참조하십시오.

Error from server (NotFound): clusterinstances.siteconfig.open-cluster-management.io "<cluster_name>" not found
Copy to Clipboard Toggle word wrap

2.7. SiteConfig Operator를 사용하여 사용자 지정 템플릿 생성

기본 템플릿 세트에 제공되지 않는 사용자 정의 템플릿을 만듭니다.

필수 액세스: 클러스터 관리자

사용자 지정 템플릿을 생성하려면 다음 단계를 완료합니다.

  1. ConfigMap 오브젝트에 클러스터 수준 템플릿이 포함된 my-custom-secret.yaml 이라는 YAML 파일을 생성합니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: my-custom-secret
      namespace: rhacm
    data:
      MySecret: |-
        apiVersion: v1
        kind: Secret
        metadata:
          name: "{{ .Spec.ClusterName }}-my-custom-secret-key"
          namespace: "clusters"
          annotations:
            siteconfig.open-cluster-management.io/sync-wave: "1" 
    1
    
        type: Opaque
        data:
          key: <key>
    Copy to Clipboard Toggle word wrap
    1
    siteconfig.open-cluster-management.io/sync- ECDHE 주석은 주문 매니페스트가 생성, 업데이트 또는 삭제되는 것을 제어합니다.
  2. 다음 명령을 실행하여 hub 클러스터에 사용자 지정 템플릿을 적용합니다.

    oc apply -f my-custom-secret.yaml
    Copy to Clipboard Toggle word wrap
  3. clusterinstance-my-custom-secret.yaml 이라는 ClusterInstance 사용자 정의 리소스에서 템플릿을 참조합니다.

    spec:
        ...
      templateRefs:
        - name: ai-cluster-templates-v1.yaml
          namespace: rhacm
        - name: my-custom-secret.yaml
          namespace: rhacm
        ...
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 ClusterInstance 사용자 정의 리소스를 적용합니다.

    oc apply -f clusterinstance-my-custom-secret.yaml
    Copy to Clipboard Toggle word wrap

SiteConfig Operator가 설치한 관리형 클러스터의 규모를 조정합니다. 작업자 노드를 제거하여 클러스터에서 확장할 수 있습니다.

필수 액세스: 클러스터 관리자

2.8.1. 사전 요구 사항

2.8.2. 작업자 노드에 주석 추가

제거를 위해 작업자 노드에 주석을 추가합니다.

관리 클러스터에서 작업자 노드에 주석을 달려면 다음 단계를 완료합니다.

  1. 클러스터를 프로비저닝하는 데 사용되는 ClusterInstance 사용자 정의 리소스에 있는 작업자 노드 항목의 추가 주석 필드에 주석을 추가합니다.

    spec:
       ...
       nodes:
       - hostName: "worker-node2.example.com"
          role: "worker"
          ironicInspect: ""
          extraAnnotations:
            BareMetalHost:
              bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: "true"
    ...
    Copy to Clipboard Toggle word wrap
  2. 변경 사항을 적용합니다. 다음 옵션을 참조하십시오.

    1. Red Hat OpenShift GitOps 없이 Red Hat Advanced Cluster Management를 사용하는 경우 hub 클러스터에서 다음 명령을 실행합니다.
    oc apply -f <clusterinstance>.yaml
    Copy to Clipboard Toggle word wrap
    1. GitOps ZTP를 사용하는 경우 Git 리포지토리로 푸시하고 Argo CD가 변경 사항을 동기화할 때까지 기다립니다.
  3. hub 클러스터에서 다음 명령을 실행하여 주석이 BaremetalHost 작업자 리소스에 적용되었는지 확인합니다.

    oc get bmh -n <clusterinstance_namespace> worker-node2.example.com -ojsonpath='{.metadata.annotations}' | jq
    Copy to Clipboard Toggle word wrap

    주석 적용에 성공하려면 다음 예제 출력을 참조하십시오.

{
  "baremetalhost.metal3.io/detached": "assisted-service-controller",
  "bmac.agent-install.openshift.io/hostname": "worker-node2.example.com",
  "bmac.agent-install.openshift.io/remove-agent-and-node-on-delete": "true"
  "bmac.agent-install.openshift.io/role": "master",
  "inspect.metal3.io": "disabled",
  "siteconfig.open-cluster-management.io/sync-wave": "1",
}
Copy to Clipboard Toggle word wrap

2.8.3. 작업자 노드의 BareMetalHost 리소스 삭제

제거하려는 작업자 노드의 BareMetalHost 리소스를 삭제합니다.

관리 클러스터에서 작업자 노드를 제거하려면 다음 단계를 완료합니다.

  1. 다음 구성으로 기존 ClusterInstance 사용자 정의 리소스에서 삭제할 노드 오브젝트를 업데이트합니다.

    ...
    spec:
       ...
       nodes:
         - hostName: "worker-node2.example.com"
           ...
           pruneManifests:
             - apiVersion: metal3.io/v1alpha1
               kind: BareMetalHost
    ...
    Copy to Clipboard Toggle word wrap
  2. 변경 사항을 적용합니다. 다음 옵션을 참조하십시오.

    1. Red Hat OpenShift GitOps 없이 Red Hat Advanced Cluster Management를 사용하는 경우 hub 클러스터에서 다음 명령을 실행합니다.
    oc apply -f <clusterinstance>.yaml
    Copy to Clipboard Toggle word wrap
    1. GitOps ZTP를 사용하는 경우 Git 리포지토리로 푸시하고 Argo CD가 변경 사항을 동기화할 때까지 기다립니다.
  3. hub 클러스터에서 다음 명령을 실행하여 BareMetalHost 리소스가 제거되었는지 확인합니다.

    oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    다음 예제 출력을 참조하십시오.

    NAME                        STATE                        CONSUMER         ONLINE   ERROR   AGE
    master-node1.example.com    provisioned                  true             81m
    worker-node2.example.com    deprovisioning               true             44m
    worker-node2.example.com    powering off before delete   true             20h
    worker-node2.example.com    deleting                     true             50m
    Copy to Clipboard Toggle word wrap
  4. hub 클러스터에서 다음 명령을 실행하여 에이전트 리소스가 제거되었는지 확인합니다.

    oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    다음 예제 출력을 참조하십시오.

    NAME                       CLUSTER                  APPROVED   ROLE     STAGE
    master-node1.example.com   <managed_cluster_name>   true       master   Done
    master-node2.example.com   <managed_cluster_name>   true       master   Done
    master-node3.example.com   <managed_cluster_name>   true       master   Done
    worker-node1.example.com   <managed_cluster_name>   true       worker   Done
    Copy to Clipboard Toggle word wrap
  5. 관리 클러스터에서 다음 명령을 실행하여 노드 리소스가 제거되었는지 확인합니다.

    oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    다음 예제 출력을 참조하십시오.

    NAME                       STATUS                        ROLES                  AGE   VERSION
    worker-node2.example.com   NotReady,SchedulingDisabled   worker                 19h   v1.30.5
    worker-node1.example.com   Ready                         worker                 19h   v1.30.5
    master-node1.example.com   Ready                         control-plane,master   19h   v1.30.5
    master-node2.example.com   Ready                         control-plane,master   19h   v1.30.5
    master-node3.example.com   Ready                         control-plane,master   19h   v1.30.5
    Copy to Clipboard Toggle word wrap

2.9. SiteConfig Operator를 사용하여 단일 노드 OpenShift 클러스터 확장

SiteConfig Operator가 설치한 관리형 클러스터를 확장합니다. 작업자 노드를 추가하여 클러스터를 확장할 수 있습니다.

필수 액세스: 클러스터 관리자

2.9.1. 사전 요구 사항

2.9.2. 작업자 노드 추가

클러스터를 프로비저닝하는 데 사용되는 ClusterInstance 사용자 정의 리소스를 업데이트하여 작업자 노드를 추가합니다.

관리 클러스터에 작업자 노드를 추가하려면 다음 단계를 완료합니다.

  1. 기존 ClusterInstance 사용자 정의 리소스에서 새 노드 오브젝트를 정의합니다.

    spec:
      ...
      nodes:
        - hostName: "<host_name>"
          role: "worker"
          templateRefs:
            - name: ai-node-templates-v1
              namespace: rhacm
          bmcAddress: "<bmc_address>"
          bmcCredentialsName:
            name: "<bmc_credentials_name>"
          bootMACAddress: "<boot_mac_address>"
    ...
    Copy to Clipboard Toggle word wrap
  2. 변경 사항을 적용합니다. 다음 옵션을 참조하십시오.

    1. Red Hat OpenShift GitOps 없이 Red Hat Advanced Cluster Management를 사용하는 경우 hub 클러스터에서 다음 명령을 실행합니다.
    oc apply -f <clusterinstance>.yaml
    Copy to Clipboard Toggle word wrap
    1. GitOps ZTP를 사용하는 경우 Git 리포지토리로 푸시하고 Argo CD가 변경 사항을 동기화할 때까지 기다립니다.
  3. hub 클러스터에서 다음 명령을 실행하여 새 BareMetalHost 리소스가 추가되었는지 확인합니다.

    oc get bmh -n <clusterinstance_namespace> --watch --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    다음 예제 출력을 참조하십시오.

    NAME                        STATE          CONSUMER   ONLINE   ERROR   AGE
    master-node1.example.com    provisioned               true             81m
    worker-node2.example.com    provisioning              true             44m
    Copy to Clipboard Toggle word wrap
  4. hub 클러스터에서 다음 명령을 실행하여 새 에이전트 리소스가 추가되었는지 확인합니다.

    oc get agents -n <clusterinstance_namespace> --kubeconfig <hub_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    다음 예제 출력을 참조하십시오.

    NAME                       CLUSTER                   APPROVED    ROLE     STAGE
    master-node1.example.com   <managed_cluster_name>    true        master   Done
    master-node2.example.com   <managed_cluster_name>    true        master   Done
    master-node3.example.com   <managed_cluster_name>    true        master   Done
    worker-node1.example.com   <managed_cluster_name>    false       worker
    worker-node2.example.com   <managed_cluster_name>    true        worker   Starting installation
    worker-node2.example.com   <managed_cluster_name>    true        worker   Installing
    worker-node2.example.com   <managed_cluster_name>    true        worker   Writing image to disk
    worker-node2.example.com   <managed_cluster_name>    true        worker   Waiting for control plane
    worker-node2.example.com   <managed_cluster_name>    true        worker   Rebooting
    worker-node2.example.com   <managed_cluster_name>    true        worker   Joined
    worker-node2.example.com   <managed_cluster_name>    true        worker   Done
    Copy to Clipboard Toggle word wrap
  5. 관리 클러스터에서 다음 명령을 실행하여 새 Node 리소스가 추가되었는지 확인합니다.

    oc get nodes --kubeconfig <managed_cluster_kubeconfig_filename>
    Copy to Clipboard Toggle word wrap

    다음 예제 출력을 참조하십시오.

    NAME                       STATUS    ROLES                  AGE   VERSION
    worker-node2.example.com   Ready     worker                 1h    v1.30.5
    worker-node1.example.com   Ready     worker                 19h   v1.30.5
    master-node1.example.com   Ready     control-plane,master   19h   v1.30.5
    master-node2.example.com   Ready     control-plane,master   19h   v1.30.5
    master-node3.example.com   Ready     control-plane,master   19h   v1.30.5
    Copy to Clipboard Toggle word wrap

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동