19.5. ZTP로 단일 노드 OpenShift 클러스터 수동 설치


RHACM(Red Hat Advanced Cluster Management) 및 지원 서비스를 사용하여 관리형 단일 노드 OpenShift 클러스터를 배포할 수 있습니다.

참고

여러 개의 관리 클러스터를 생성하는 경우 ZTP를 사용하여 멀리 엣지 사이트 배포에 설명된 site Config 방법을 사용하십시오.

중요

대상 베어 메탈 호스트는 vDU 애플리케이션 워크로드에 대한 권장 클러스터 구성에 나열된 네트워킹, 펌웨어 및 하드웨어 요구 사항을 충족해야 합니다.

19.5.1. 수동으로 GitOps ZTP 설치 및 구성 CR 생성

ztp-site-generate 컨테이너의 생성기 진입점을 사용하여 site ConfigPolicyGenTemplate CR을 기반으로 클러스터의 사이트 설치 및 구성 CR(사용자 정의 리소스)을 생성합니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 hub 클러스터에 로그인했습니다.

절차

  1. 다음 명령을 실행하여 출력 폴더를 생성합니다.

    $ mkdir -p ./out
  2. ztp-site-generate 컨테이너 이미지에서 argocd 디렉터리를 내보냅니다.

    $ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.13 extract /home/ztp --tar | tar x -C ./out

    ./out 디렉터리에는 out/argocd/example/ 폴더에 참조 PolicyGenTemplateSiteConfig CR이 있습니다.

    출력 예

    out
     └── argocd
          └── example
               ├── policygentemplates
               │     ├── common-ranGen.yaml
               │     ├── example-sno-site.yaml
               │     ├── group-du-sno-ranGen.yaml
               │     ├── group-du-sno-validator-ranGen.yaml
               │     ├── kustomization.yaml
               │     └── ns.yaml
               └── siteconfig
                      ├── example-sno.yaml
                      ├── KlusterletAddonConfigOverride.yaml
                      └── kustomization.yaml

  3. 사이트 설치 CR의 출력 폴더를 생성합니다.

    $ mkdir -p ./site-install
  4. 설치하려는 클러스터 유형의 SiteConfig CR 예제를 수정합니다. example-sno.yamlsite-1-sno.yaml 에 복사하고 CR을 수정하여 설치하려는 사이트 및 베어 메탈 호스트의 세부 정보와 일치하도록 수정합니다.

    # example-node1-bmh-secret & assisted-deployment-pull-secret need to be created under same namespace example-sno
    ---
    apiVersion: ran.openshift.io/v1
    kind: SiteConfig
    metadata:
      name: "example-sno"
      namespace: "example-sno"
    spec:
      baseDomain: "example.com"
      cpuPartitioningMode: AllNodes
      pullSecretRef:
        name: "assisted-deployment-pull-secret"
      clusterImageSetNameRef: "openshift-4.10"
      sshPublicKey: "ssh-rsa AAAA..."
      clusters:
      - clusterName: "example-sno"
        networkType: "OVNKubernetes"
        installConfigOverrides: |
          {
            "capabilities": {
              "baselineCapabilitySet": "None",
              "additionalEnabledCapabilities": [
                "marketplace",
                "NodeTuning"
              ]
            }
          }
        clusterLabels:
          common: true
          group-du-sno: ""
          sites : "example-sno"
        clusterNetwork:
          - cidr: 1001:1::/48
            hostPrefix: 64
        machineNetwork:
          - cidr: 1111:2222:3333:4444::/64
        serviceNetwork:
          - 1001:2::/112
        additionalNTPSources:
          - 1111:2222:3333:4444::2
        # crTemplates:
        #   KlusterletAddonConfig: "KlusterletAddonConfigOverride.yaml"
        nodes:
          - hostName: "example-node1.example.com"
            role: "master"
            bmcAddress: "idrac-virtualmedia+https://[1111:2222:3333:4444::bbbb:1]/redfish/v1/Systems/System.Embedded.1"
            bmcCredentialsName:
              name: "example-node1-bmh-secret"
            bootMACAddress: "AA:BB:CC:DD:EE:11"
            bootMode: "UEFI"
            rootDeviceHints:
              wwn: "0x11111000000asd123"
            # diskPartition:
            #   - device: /dev/disk/by-id/wwn-0x11111000000asd123 # match rootDeviceHints
            #     partitions:
            #       - mount_point: /var/imageregistry
            #         size: 102500
            #         start: 344844
            ignitionConfigOverride: |
              {
                "ignition": {
                  "version": "3.2.0"
                },
                "storage": {
                  "disks": [
                    {
                      "device": "/dev/disk/by-id/wwn-0x11111000000asd123",
                      "wipeTable": false,
                      "partitions": [
                        {
                          "sizeMiB": 16,
                          "label": "httpevent1",
                          "startMiB": 350000
                        },
                        {
                          "sizeMiB": 16,
                          "label": "httpevent2",
                          "startMiB": 350016
                        }
                      ]
                    }
                  ],
                  "filesystem": [
                    {
                      "device": "/dev/disk/by-partlabel/httpevent1",
                      "format": "xfs",
                      "wipeFilesystem": true
                    },
                    {
                      "device": "/dev/disk/by-partlabel/httpevent2",
                      "format": "xfs",
                      "wipeFilesystem": true
                    }
                  ]
                }
              }
            nodeNetwork:
              interfaces:
                - name: eno1
                  macAddress: "AA:BB:CC:DD:EE:11"
              config:
                interfaces:
                  - name: eno1
                    type: ethernet
                    state: up
                    ipv4:
                      enabled: false
                    ipv6:
                      enabled: true
                      address:
                      - ip: 1111:2222:3333:4444::aaaa:1
                        prefix-length: 64
                dns-resolver:
                  config:
                    search:
                    - example.com
                    server:
                    - 1111:2222:3333:4444::2
                routes:
                  config:
                  - destination: ::/0
                    next-hop-interface: eno1
                    next-hop-address: 1111:2222:3333:4444::1
                    table-id: 254
  5. 다음 명령을 실행하여 수정된 SiteConfig CR site-1-sno.yaml 을 처리하여 0일 설치 CR을 생성합니다.

    $ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-install:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.13 generator install site-1-sno.yaml /output

    출력 예

    site-install
    └── site-1-sno
        ├── site-1_agentclusterinstall_example-sno.yaml
        ├── site-1-sno_baremetalhost_example-node1.example.com.yaml
        ├── site-1-sno_clusterdeployment_example-sno.yaml
        ├── site-1-sno_configmap_example-sno.yaml
        ├── site-1-sno_infraenv_example-sno.yaml
        ├── site-1-sno_klusterletaddonconfig_example-sno.yaml
        ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml
        ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml
        ├── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml
        ├── site-1-sno_managedcluster_example-sno.yaml
        ├── site-1-sno_namespace_example-sno.yaml
        └── site-1-sno_nmstateconfig_example-node1.example.com.yaml

  6. 선택 사항: -E 옵션으로 참조 SiteConfig CR을 처리하여 특정 클러스터 유형에 대한 Day 0 MachineConfig 설치 CR만 생성합니다. 예를 들어 다음 명령을 실행합니다.

    1. MachineConfig CR의 출력 폴더를 생성합니다.

      $ mkdir -p ./site-machineconfig
    2. MachineConfig 설치 CR을 생성합니다.

      $ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-machineconfig:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.13 generator install -E site-1-sno.yaml /output

      출력 예

      site-machineconfig
      └── site-1-sno
          ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml
          ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml
          └── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml

  7. 이전 단계의 PolicyGenTemplate CR 참조를 사용하여 Day 2 구성 CR을 생성하고 내보냅니다. 다음 명령을 실행합니다.

    1. Day 2 CR의 출력 폴더를 생성합니다.

      $ mkdir -p ./ref
    2. Day 2 구성 CR을 생성하고 내보냅니다.

      $ podman run -it --rm -v `pwd`/out/argocd/example/policygentemplates:/resources:Z -v `pwd`/ref:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.13 generator config -N . /output

      이 명령은 단일 노드 OpenShift, 3 노드 클러스터 및 ./ref 폴더에 표준 클러스터에 대한 예제 그룹 및 사이트별 PolicyGenTemplate CR을 생성합니다.

      출력 예

      ref
       └── customResource
            ├── common
            ├── example-multinode-site
            ├── example-sno
            ├── group-du-3node
            ├── group-du-3node-validator
            │    └── Multiple-validatorCRs
            ├── group-du-sno
            ├── group-du-sno-validator
            ├── group-du-standard
            └── group-du-standard-validator
                 └── Multiple-validatorCRs

  8. 생성된 CR을 클러스터를 설치하는 데 사용하는 CR의 기준으로 사용합니다. "단일 관리 클러스터 설치"에 설명된 대로 hub 클러스터에 설치 CR을 적용합니다. 클러스터 설치가 완료된 후 구성 CR을 클러스터에 적용할 수 있습니다.

19.5.2. 관리형 베어 메탈 호스트 시크릿 생성

관리 베어 메탈 호스트에 필요한 Secret CR(사용자 정의 리소스)을 hub 클러스터에 추가합니다. BMC(Baseboard Management Controller)에 액세스하려면 GTP(Baseboard Management Controller) 파이프라인과 지원 설치 관리자 서비스에 대한 시크릿이 레지스트리에서 클러스터 설치 이미지를 가져오는 데 필요한 secret이 필요합니다.

참고

보안은 이름으로 site Config CR 에서 참조됩니다. 네임스페이스는 site Config 네임스페이스와 일치해야 합니다.

절차

  1. OpenShift 및 모든 애드온 클러스터 Operator를 설치하는 데 필요한 BMC(Host Baseboard Management Controller) 및 풀 시크릿(pull secret)의 인증 정보가 포함된 YAML 시크릿 파일을 생성합니다.

    1. 다음 YAML을 example-sno-secret.yaml 파일로 저장합니다.

      apiVersion: v1
      kind: Secret
      metadata:
        name: example-sno-bmc-secret
        namespace: example-sno 1
      data: 2
        password: <base64_password>
        username: <base64_username>
      type: Opaque
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: pull-secret
        namespace: example-sno  3
      data:
        .dockerconfigjson: <pull_secret> 4
      type: kubernetes.io/dockerconfigjson
      1
      관련 site Config CR에 구성된 네임스페이스와 일치해야 합니다.
      2
      암호사용자이름에 대한 base64로 인코딩된 값
      3
      관련 site Config CR에 구성된 네임스페이스와 일치해야 합니다.
      4
      base64로 인코딩된 풀 시크릿
  2. 클러스터를 설치하는 데 사용하는 kustomization.yaml 파일에 상대 경로를 example-sno-secret.yaml 에 추가합니다.

19.5.3. GitOps ZTP를 사용하여 수동 설치를 위한 Discovery ISO 커널 인수 구성

GitOps Zero 10.0.0.1 Provisioning (ZTP) 워크플로우는 관리 베어 메탈 호스트에서 OpenShift Container Platform 설치 프로세스의 일부로 Discovery ISO를 사용합니다. InfraEnv 리소스를 편집하여 Discovery ISO에 대한 커널 인수를 지정할 수 있습니다. 이는 특정 환경 요구 사항이 있는 클러스터 설치에 유용합니다. 예를 들어 Discovery ISO의 rd.net.timeout.carrier 커널 인수를 구성하여 클러스터의 정적 네트워킹을 용이하게 하거나 설치 중에 루트 파일 시스템을 다운로드하기 전에 DHCP 주소를 수신합니다.

참고

OpenShift Container Platform 4.13에서는 커널 인수만 추가할 수 있습니다. 커널 인수를 교체하거나 삭제할 수 없습니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 hub 클러스터에 로그인했습니다.
  • 수동으로 설치 및 구성 CR(사용자 정의 리소스)이 생성되어 있습니다.

절차

  1. InfraEnv CR에서 spec.kernelArguments 사양을 편집하여 커널 인수를 구성합니다.
apiVersion: agent-install.openshift.io/v1beta1
kind: InfraEnv
metadata:
  name: <cluster_name>
  namespace: <cluster_name>
spec:
  kernelArguments:
    - operation: append 1
      value: audit=0 2
    - operation: append
      value: trace=1
  clusterRef:
    name: <cluster_name>
    namespace: <cluster_name>
  pullSecretRef:
    name: pull-secret
1
커널 인수를 추가할 추가 작업을 지정합니다.
2
구성할 커널 인수를 지정합니다. 이 예제에서는 audit 커널 인수와 trace 커널 인수를 구성합니다.
참고

SiteConfig CR은 day-0 설치 CR의 일부로 InfraEnv 리소스를 생성합니다.

검증

커널 인수가 적용되었는지 확인하려면 Discovery 이미지가 OpenShift Container Platform을 설치할 준비가 되었는지 확인한 후 설치 프로세스를 시작하기 전에 대상 호스트에 SSH를 실행할 수 있습니다. 이 시점에서 /proc/cmdline 파일에서 Discovery ISO에 대한 커널 인수를 볼 수 있습니다.

  1. 대상 호스트로 SSH 세션을 시작합니다.

    $ ssh -i /path/to/privatekey core@<host_name>
  2. 다음 명령을 사용하여 시스템의 커널 인수를 확인합니다.

    $ cat /proc/cmdline

19.5.4. 단일 관리형 클러스터 설치

지원 서비스 및 RHACM(Red Hat Advanced Cluster Management)을 사용하여 단일 관리 클러스터를 수동으로 배포할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 hub 클러스터에 로그인했습니다.
  • 베이스 보드 관리 컨트롤러 (BMC) Secret 및 이미지 pull-secret Secret (CR)을 생성했습니다. 자세한 내용은 "관리된 베어 메탈 호스트 시크릿 생성"을 참조하십시오.
  • 대상 베어 메탈 호스트는 관리 클러스터의 네트워킹 및 하드웨어 요구 사항을 충족합니다.

절차

  1. 배포할 각 특정 클러스터 버전에 대한 ClusterImageSet 을 생성합니다(예: clusterImageSet-4.13.yaml ). ClusterImageSet 의 형식은 다음과 같습니다.

    apiVersion: hive.openshift.io/v1
    kind: ClusterImageSet
    metadata:
      name: openshift-4.13.0 1
    spec:
       releaseImage: quay.io/openshift-release-dev/ocp-release:4.13.0-x86_64 2
    1
    배포할 설명 버전입니다.
    2
    운영 체제 이미지 버전을 배포하고 결정할 releaseImage 를 지정합니다. 검색 ISO는 releaseImage 에 의해 설정된 이미지 버전을 기반으로 하며, 정확한 버전을 사용할 수 없는 경우 최신 버전을 기반으로 합니다.
  2. clusterImageSet CR을 적용합니다.

    $ oc apply -f clusterImageSet-4.13.yaml
  3. cluster-namespace.yaml 파일에 Namespace CR을 생성합니다.

    apiVersion: v1
    kind: Namespace
    metadata:
         name: <cluster_name> 1
         labels:
            name: <cluster_name> 2
    1 2
    프로비저닝할 관리 클러스터의 이름입니다.
  4. 다음 명령을 실행하여 Namespace CR을 적용합니다.

    $ oc apply -f cluster-namespace.yaml
  5. ztp-site-generate 컨테이너에서 추출하고 요구 사항을 충족하도록 사용자 정의된 생성된 day-0 CR을 적용합니다.

    $ oc apply -R ./site-install/site-sno-1

19.5.5. 관리형 클러스터 설치 상태 모니터링

클러스터 상태를 확인하여 클러스터 프로비저닝에 성공했는지 확인합니다.

사전 요구 사항

  • 모든 사용자 정의 리소스가 구성 및 프로비저닝되고, 관리 클러스터의 허브에 에이전트 사용자 정의 리소스가 생성됩니다.

절차

  1. 관리 클러스터의 상태를 확인합니다.

    $ oc get managedcluster

    true 는 관리형 클러스터가 준비되었음을 나타냅니다.

  2. 에이전트 상태를 확인합니다.

    $ oc get agent -n <cluster_name>
  3. describe 명령을 사용하여 에이전트 상태에 대한 자세한 설명을 제공합니다. 알 수 있는 상태에는 BackendError,InputError,ValidationsFailing,InstallationFailed, AgentIsConnected 가 포함됩니다. 이러한 상태는 에이전트 및 Agent ClusterInstall 사용자 정의 리소스와 관련이 있습니다.

    $ oc describe agent -n <cluster_name>
  4. 클러스터 프로비저닝 상태를 확인합니다.

    $ oc get agentclusterinstall -n <cluster_name>
  5. describe 명령을 사용하여 클러스터 프로비저닝 상태에 대한 자세한 설명을 제공합니다.

    $ oc describe agentclusterinstall -n <cluster_name>
  6. 관리 클러스터의 애드온 서비스의 상태를 확인합니다.

    $ oc get managedclusteraddon -n <cluster_name>
  7. 관리형 클러스터에 대한 kubeconfig 파일의 인증 정보를 검색합니다.

    $ oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfig

19.5.6. 관리형 클러스터 문제 해결

관리 클러스터에서 발생할 수 있는 설치 문제를 진단하려면 다음 절차를 사용하십시오.

절차

  1. 관리 클러스터의 상태를 확인합니다.

    $ oc get managedcluster

    출력 예

    NAME            HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
    SNO-cluster     true                                   True     True      2d19h

    AVAILABLE 열의 상태가 True 이면 관리 클러스터가 hub에 의해 관리됩니다.

    AVAILABLE 열의 상태가 Unknown 인 경우 관리 클러스터가 hub에 의해 관리되지 않습니다. 자세한 정보를 얻으려면 계속 확인하려면 다음 단계를 사용하십시오.

  2. AgentClusterInstall 설치 상태를 확인합니다.

    $ oc get clusterdeployment -n <cluster_name>

    출력 예

    NAME        PLATFORM            REGION   CLUSTERTYPE   INSTALLED    INFRAID    VERSION  POWERSTATE AGE
    Sno0026    agent-baremetal                               false                          Initialized
    2d14h

    INSTALLED 열의 상태가 false 인 경우 설치에 실패했습니다.

  3. 설치에 실패한 경우 다음 명령을 입력하여 AgentClusterInstall 리소스의 상태를 검토합니다.

    $ oc describe agentclusterinstall -n <cluster_name> <cluster_name>
  4. 오류를 해결하고 클러스터를 재설정합니다.

    1. 클러스터의 관리 클러스터 리소스를 제거합니다.

      $ oc delete managedcluster <cluster_name>
    2. 클러스터의 네임스페이스를 제거합니다.

      $ oc delete namespace <cluster_name>

      이렇게 하면 이 클러스터에 대해 생성된 모든 네임스페이스 범위의 사용자 정의 리소스가 삭제됩니다. 진행하기 전에 ManagedCluster CR 삭제가 완료될 때까지 기다려야 합니다.

    3. 관리 클러스터에 대한 사용자 정의 리소스를 다시 생성합니다.

19.5.7. RHACM 생성 클러스터 설치 CR 참조

RHACM(Red Hat Advanced Cluster Management)은 각 사이트에 대해 site Config CR을 사용하여 생성하는 특정 설치 사용자 정의 리소스(CR) 세트가 있는 단일 노드 클러스터, 3-노드 클러스터, 표준 클러스터 배포를 지원합니다.

참고

모든 관리형 클러스터에는 고유한 네임스페이스가 있으며 ManagedClusterClusterImageSet 을 제외한 모든 설치 CR이 해당 네임스페이스에 있습니다. ManagedClusterClusterImageSet 은 네임스페이스 범위가 아닌 cluster-scoped입니다. 네임스페이스 및 CR 이름은 클러스터 이름과 일치합니다.

다음 표에는 구성하는 site Config CR을 사용하여 클러스터를 설치할 때 RHACM 지원 서비스에서 자동으로 적용하는 설치 CR이 나열되어 있습니다.

표 19.7. RHACM에서 생성한 클러스터 설치 CR
CR설명사용법

BareMetalHost

대상 베어 메탈 호스트의 BMC(Baseboard Management Controller)에 대한 연결 정보를 포함합니다.

Redfish 프로토콜을 사용하여 대상 서버에서 검색 이미지를 로드하고 시작할 BMC에 대한 액세스를 제공합니다.

InfraEnv

대상 베어 메탈 호스트에 OpenShift Container Platform을 설치하는 데 필요한 정보를 포함합니다.

ClusterDeployment 와 함께 관리 클러스터에 대한 검색 ISO를 생성하는 데 사용됩니다.

AgentClusterInstall

네트워킹 및 컨트롤 플레인 노드 수와 같은 관리 클러스터 구성의 세부 정보를 지정합니다. 설치가 완료되면 클러스터 kubeconfig 및 인증 정보를 표시합니다.

클러스터 설치 중에 관리되는 클러스터 구성 정보를 지정하고 상태를 제공합니다.

ClusterDeployment

사용할 AgentClusterInstall CR을 참조합니다.

InfraEnv 와 함께 사용하여 관리되는 클러스터에 대한 검색 ISO를 생성합니다.

NMStateConfig

MAC 주소와 같은 네트워크 구성 정보를 IP 매핑, DNS 서버, 기본 경로 및 기타 네트워크 설정에 제공합니다.

관리형 클러스터의 Kube API 서버의 고정 IP 주소를 설정합니다.

에이전트

대상 베어 메탈 호스트에 대한 하드웨어 정보를 포함합니다.

대상 시스템의 검색 이미지가 부팅될 때 허브에서 자동으로 생성됩니다.

ManagedCluster

허브에서 클러스터를 관리하는 경우 가져와서 알아야 합니다. 이 Kubernetes 오브젝트는 해당 인터페이스를 제공합니다.

hub는 이 리소스를 사용하여 관리되는 클러스터의 상태를 관리하고 표시합니다.

KlusterletAddonConfig

ManagedCluster 리소스에 배포할 허브에서 제공하는 서비스 목록을 포함합니다.

ManagedCluster 리소스에 배포할 애드온 서비스를 hub에 지시합니다.

네임스페이스

허브에 있는 ManagedCluster 리소스의 논리 공간입니다. 사이트당 고유합니다.

리소스를 ManagedCluster 로 전파합니다.

Secret

BMC SecretImage Pull Secret 의 두 개의 CR이 생성됩니다.

  • BMC Secret 은 사용자 이름 및 암호를 사용하여 대상 베어 메탈 호스트에 인증합니다.
  • Image Pull Secret 에는 대상 베어 메탈 호스트에 설치된 OpenShift Container Platform 이미지의 인증 정보가 포함되어 있습니다.

ClusterImageSet

리포지토리 및 이미지 이름과 같은 OpenShift Container Platform 이미지 정보를 포함합니다.

OpenShift Container Platform 이미지를 제공하기 위해 리소스에 전달됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.