14.2. 为 OpenShift Container Platform 安装设置环境


14.2.1. 在 IBM Cloud Bare Metal (Classic) 基础架构上准备 provisioner 节点

执行以下步骤准备 provisioner 节点。

流程

  1. 通过 ssh 登录到 provisioner 节点。
  2. 创建非 root 用户(kni)并为该用户提供 sudo 权限:

    # useradd kni
    # passwd kni
    # echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
    # chmod 0440 /etc/sudoers.d/kni
  3. 为新用户创建 ssh 密钥:

    # su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
  4. 以新用户身份登录到 provisioner 节点:

    # su - kni
  5. 使用 Red Hat Subscription Manager 注册 provisioner 节点:

    $ sudo subscription-manager register --username=<user> --password=<pass> --auto-attach
    $ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \
                                      --enable=rhel-8-for-x86_64-baseos-rpms
    注意

    有关 Red Hat Subscription Manager 的详情,请参考 使用和配置 Red Hat Subscription Manager

  6. 安装以下软件包:

    $ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
  7. 修改用户,将 libvirt 组添加到新创建的用户:

    $ sudo usermod --append --groups libvirt kni
  8. 启动 firewalld

    $ sudo systemctl start firewalld
  9. 启用 firewalld

    $ sudo systemctl enable firewalld
  10. 启动 http 服务:

    $ sudo firewall-cmd --zone=public --add-service=http --permanent
    $ sudo firewall-cmd --reload
  11. 启动并启用 libvirtd 服务:

    $ sudo systemctl enable libvirtd --now
  12. 设置 provisioner 节点的 ID:

    $ PRVN_HOST_ID=<ID>

    您可以使用以下 ibmcloud 命令查看 ID:

    $ ibmcloud sl hardware list
  13. 设置公共子网的 ID:

    $ PUBLICSUBNETID=<ID>

    您可以使用以下 ibmcloud 命令查看 ID:

    $ ibmcloud sl subnet list
  14. 设置专用子网的 ID:

    $ PRIVSUBNETID=<ID>

    您可以使用以下 ibmcloud 命令查看 ID:

    $ ibmcloud sl subnet list
  15. 设置 provisioner 节点公共 IP 地址:

    $ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
  16. 为公共网络设置 CIDR:

    $ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
  17. 为公共网络设置 IP 地址和 CIDR:

    $ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
  18. 为公共网络设置网关:

    $ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
  19. 设置 provisioner 节点的专用 IP 地址:

    $ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \
                     jq .primaryBackendIpAddress -r)
  20. 为专用网络设置 CIDR:

    $ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
  21. 设置专用网络的 IP 地址和 CIDR:

    $ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
  22. 为专用网络设置网关:

    $ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
  23. baremetal 设置网桥并 置备 网络:

    $ sudo nohup bash -c "
        nmcli --get-values UUID con show | xargs -n 1 nmcli con delete
        nmcli connection add ifname provisioning type bridge con-name provisioning
        nmcli con add type bridge-slave ifname eth1 master provisioning
        nmcli connection add ifname baremetal type bridge con-name baremetal
        nmcli con add type bridge-slave ifname eth2 master baremetal
        nmcli connection modify baremetal ipv4.addresses $PUB_IP_CIDR ipv4.method manual ipv4.gateway $PUB_GATEWAY
        nmcli connection modify provisioning ipv4.addresses 172.22.0.1/24,$PRIV_IP_CIDR ipv4.method manual
        nmcli connection modify provisioning +ipv4.routes \"10.0.0.0/8 $PRIV_GATEWAY\"
        nmcli con down baremetal
        nmcli con up baremetal
        nmcli con down provisioning
        nmcli con up provisioning
        init 6
    "
    注意

    对于 eth1eth2,根据需要替换相应的接口名称。

  24. 如果需要,通过 SSH 重新连接到 provisioner 节点:

    # ssh kni@provisioner.<cluster-name>.<domain>
  25. 验证连接网桥是否已正确创建:

    $ sudo nmcli con show

    输出示例

    NAME               UUID                                  TYPE      DEVICE
    baremetal          4d5133a5-8351-4bb9-bfd4-3af264801530  bridge    baremetal
    provisioning       43942805-017f-4d7d-a2c2-7cb3324482ed  bridge    provisioning
    virbr0             d9bca40f-eee1-410b-8879-a2d4bb0465e7  bridge    virbr0
    bridge-slave-eth1  76a8ed50-c7e5-4999-b4f6-6d9014dd0812  ethernet  eth1
    bridge-slave-eth2  f31c3353-54b7-48de-893a-02d2b34c4736  ethernet  eth2

  26. 创建 pull-secret.txt 文件:

    $ vim pull-secret.txt

    在 Web 浏览器中,导航到 Install on Bare Metal with user-provisioned infrastructure。在第 1 步中,点击 Download pull secret。将内容粘贴到 pull-secret.txt 文件中,并将内容保存到 kni 用户的主目录中。

14.2.2. 配置公共子网

所有 OpenShift Container Platform 集群节点都必须位于公共子网中。IBM Cloud® Bare Metal (Classic) 不会在子网上提供 DHCP 服务器。在 provisioner 节点上单独设置它。

您必须重置准备 provisioner 节点时定义的 BASH 变量。在准备完置备程序节点后,重新引导置备程序节点将删除之前设置的 BASH 变量。

流程

  1. 安装 dnsmasq:

    $ sudo dnf install dnsmasq
  2. 打开 dnsmasq 配置文件:

    $ sudo vi /etc/dnsmasq.conf
  3. dnsmasq 配置文件中添加以下配置:

    interface=baremetal
    except-interface=lo
    bind-dynamic
    log-dhcp
    
    dhcp-range=<ip_addr>,<ip_addr>,<pub_cidr> 1
    dhcp-option=baremetal,121,0.0.0.0/0,<pub_gateway>,<prvn_priv_ip>,<prvn_pub_ip> 2
    
    dhcp-hostsfile=/var/lib/dnsmasq/dnsmasq.hostsfile
    1
    设置 DHCP 范围。将 <ip_addr> 实例替换为一个来自公共子网的未使用的 IP 地址,以便 baremetal 网络的 dhcp-range 并以相同的 IP 地址开始和结尾。将 <pub_cidr> 替换为公共子网的 CIDR。
    2
    设置 DHCP 选项。将 <pub_gateway> 替换为 baremetal 网络的网关 IP 地址。将 <prvn_priv_ip> 替换为 provisioning 网络上 provisioner 节点的专用 IP 地址的 IP 地址。将 <prvn_pub_ip> 替换为 baremetal 网络中 provisioner 节点的公共 IP 地址的 IP 地址。

    要检索 <pub_cidr> 的值,请执行:

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr

    <publicsubnetid> 替换为公共子网的 ID。

    要检索 <pub_gateway> 的值,请执行:

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r

    <publicsubnetid> 替换为公共子网的 ID。

    要检索 <prvn_priv_ip> 的值,请执行:

    $ ibmcloud  sl hardware detail <id> --output JSON | \
                jq .primaryBackendIpAddress -r

    <id> 替换为 provisioner 节点的 ID。

    要检索 <prvn_pub_ip> 的值,请执行:

    $ ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r

    <id> 替换为 provisioner 节点的 ID。

  4. 获取集群的硬件列表:

    $ ibmcloud sl hardware list
  5. 获取每个节点的 MAC 地址和 IP 地址:

    $ ibmcloud sl hardware detail <id> --output JSON | \
      jq '.networkComponents[] | \
      "\(.primaryIpAddress) \(.macAddress)"' | grep -v null

    <id> 替换为节点的 ID。

    输出示例

    "10.196.130.144 00:e0:ed:6a:ca:b4"
    "141.125.65.215 00:e0:ed:6a:ca:b5"

    记录公共网络的 MAC 地址和 IP 地址。单独记录专用网络的 MAC 地址,稍后您将在 install-config.yaml 文件中使用它。对每个节点重复这个过程,直到您拥有公共 baremetal 网络的所有公共 MAC 和 IP 地址,以及私有 provisioning 网络的 MAC 地址。

  6. 将每个节点的 public baremetal 网络的 MAC 和 IP 地址对添加到 dnsmasq.hostsfile 文件中:

    $ sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile

    输入示例

    00:e0:ed:6a:ca:b5,141.125.65.215,master-0
    <mac>,<ip>,master-1
    <mac>,<ip>,master-2
    <mac>,<ip>,worker-0
    <mac>,<ip>,worker-1
    ...

    <mac>,<ip> 替换为相应节点名称的公共 MAC 地址和公共 IP 地址。

  7. 启动 dnsmasq:

    $ sudo systemctl start dnsmasq
  8. 启用 dnsmasq,以便在引导节点时启动:

    $ sudo systemctl enable dnsmasq
  9. 验证 dnsmasq 是否正在运行:

    $ sudo systemctl status dnsmasq

    输出示例

    ● dnsmasq.service - DNS caching server.
    Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
    Active: active (running) since Tue 2021-10-05 05:04:14 CDT; 49s ago
    Main PID: 3101 (dnsmasq)
    Tasks: 1 (limit: 204038)
    Memory: 732.0K
    CGroup: /system.slice/dnsmasq.service
    └─3101 /usr/sbin/dnsmasq -k

  10. 使用 UDP 协议打开端口 5367

    $ sudo firewall-cmd --add-port 53/udp --permanent
    $ sudo firewall-cmd --add-port 67/udp --permanent
  11. 使用 masquerade 为外部区添加 置备

    $ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent

    这一步可确保将 IPMI 调用的网络地址转换为管理子网。

  12. 重新载入 firewalld 配置:

    $ sudo firewall-cmd --reload

14.2.3. 检索 OpenShift Container Platform 安装程序

使用安装程序的 stable-4.x 版本来部署 OpenShift Container Platform 的通用稳定版本:

$ export VERSION=stable-4.10
export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')

14.2.4. 提取 OpenShift Container Platform 安装程序

在获取安装程序后,下一步是提取它。

流程

  1. 设置环境变量:

    $ export cmd=openshift-baremetal-install
    $ export pullsecret_file=~/pull-secret.txt
    $ export extract_dir=$(pwd)
  2. 获取 oc 二进制文件:

    $ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
  3. 解压安装程序:

    $ sudo cp oc /usr/local/bin
    $ oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}
    $ sudo cp openshift-baremetal-install /usr/local/bin

14.2.5. 配置 install-config.yaml 文件

install-config.yaml 文件需要一些额外的详情。大多数信息用于指导安装程序,从而让集群足够了解可用的 IBM Cloud® Bare Metal (Classic) 硬件,以便它可以完全管理它。在裸机上安装和在 IBM Cloud Bare Metal (Classic) 上安装之间的材料区别在于,您必须在 install-config.yaml 文件的 BMC 部分中明确设置 IPMI 的权限级别。

流程

  1. 配置 install-config.yaml。更改适当的变量以匹配环境,包括 pullSecretsshKey

    apiVersion: v1
    baseDomain: <domain>
    metadata:
      name: <cluster_name>
    networking:
      machineNetwork:
      - cidr: <public-cidr>
      networkType: OVNKubernetes
    compute:
    - name: worker
      replicas: 2
    controlPlane:
      name: master
      replicas: 3
      platform:
        baremetal: {}
    platform:
      baremetal:
        apiVIP: <api_ip>
        ingressVIP: <wildcard_ip>
        provisioningNetworkInterface: <NIC1>
        provisioningNetworkCIDR: <CIDR>
        hosts:
          - name: openshift-master-0
            role: master
            bmc:
              address: ipmi://10.196.130.145?privilegelevel=OPERATOR 1
              username: root
              password: <password>
            bootMACAddress: 00:e0:ed:6a:ca:b4 2
            rootDeviceHints:
              deviceName: "/dev/sda"
          - name: openshift-worker-0
            role: worker
            bmc:
              address: ipmi://<out-of-band-ip>?privilegelevel=OPERATOR 3
              username: <user>
              password: <password>
            bootMACAddress: <NIC1_mac_address> 4
            rootDeviceHints:
              deviceName: "/dev/sda"
    pullSecret: '<pull_secret>'
    sshKey: '<ssh_pub_key>'
    1 3
    bmc.address 提供了 privilegelevel 配置设置,值设为 OPERATOR。这是 IBM Cloud Bare Metal (Classic) 基础架构所必需的。
    2 4
    为对应节点添加私有 provisioning 网络 NIC 的 MAC 地址。
    注意

    您可以使用 ibmcloud 命令行实用程序来检索密码。

    $ ibmcloud sl hardware detail <id> --output JSON | \
      jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'

    <id> 替换为节点的 ID。

  2. 创建用于存储集群配置的目录:

    $ mkdir ~/clusterconfigs
  3. install-config.yaml 文件复制到目录中:

    $ cp install-config.yaml ~/clusterconfig
  4. 在安装 OpenShift Container Platform 集群前,请确保关闭所有裸机节点:

    $ ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off
  5. 如果以前的部署尝试中保留了旧的 bootstrap 资源,请删除旧的 bootstrap 资源:

    for i in $(sudo virsh list | tail -n +3 | grep bootstrap | awk {'print $2'});
    do
      sudo virsh destroy $i;
      sudo virsh undefine $i;
      sudo virsh vol-delete $i --pool $i;
      sudo virsh vol-delete $i.ign --pool $i;
      sudo virsh pool-destroy $i;
      sudo virsh pool-undefine $i;
    done

14.2.6. 其他 install-config 参数

下表列出了 install-config.yaml 文件所需的 参数hosts 参数和 bmc 参数。

表 14.2. 所需的参数
参数default描述

baseDomain

 

集群的域名。例如: example.com

bootMode

UEFI

节点的引导模式。选项为 legacyU EFI 和 UEFISecureBoot。如果没有设置 bootMode,Ironic 在检查节点时设置它。

sshKey

 

sshKey 配置设置包含 ~/.ssh/id_rsa.pub 文件中访问 control plane 节点和 worker 节点所需的密钥。通常,这个密钥来自 provisioner 节点。

pullSecret

 

pullSecret 配置设置包含准备 provisioner 节点时从 Install OpenShift on Bare Metal 页面下载的 pull secret 的副本。

metadata:
    name:
 

提供给 OpenShift Container Platform 集群的名称。例如: openshift

networking:
    machineNetwork:
    - cidr:
 

外部网络的公共 CIDR(Classless Inter-Domain Routing)。例如:10.0.0.0/24

compute:
  - name: worker
 

OpenShift Container Platform 集群需要为 worker(或计算节点)节点提供一个名称,即使没有节点也是如此。

compute:
    replicas: 2
 

replicas 设置 OpenShift Container Platform 集群中 worker(或计算)节点的数量。

controlPlane:
    name: master
 

OpenShift Container Platform 集群需要一个 control plane(master)节点的名称。

controlPlane:
    replicas: 3
 

replicas 设置作为 OpenShift Container Platform 集群一部分的 control plane(master)节点数量。

provisioningNetworkInterface

 

连接到 provisioning 网络的节点上的网络接口名称。对于 OpenShift Container Platform 4.9 及更新的版本,使用 bootMACAddress 配置设置来启用 Ironic 标识 NIC 的 IP 地址,而不使用 provisioningNetworkInterface 配置设置来标识 NIC 的名称。

defaultMachinePlatform

 

用于没有平台配置的机器池的默认配置。

apiVIP

 

(可选)用于 Kubernetes API 通信的虚拟 IP 地址。

此设置必须在 install-config.yaml 文件中作为保留的 IP,或从 DNS 中预先配置到 DNS 中,以便正确解析默认名称。在 install-config.yaml 文件中的 apiVIP 配置设置中添加值时,使用虚拟 IP 地址而不是 FQDN。在使用双栈网络时,该 IP 地址必须来自主要 IPv4 网络。如果没有设置,安装程序将使用 api.<cluster_name>.<base_domain> 从 DNS 派生 IP 地址。

disableCertificateVerification

False

RedFishredfish-virtualmedia 需要这个参数来管理 BMC 地址。当 BMC 地址使用自签名证书时,这个值应该是 True

ingressVIP

 

(可选)入口流量的虚拟 IP 地址。

此设置必须在 install-config.yaml 文件中作为保留的 IP,或从 DNS 中预先配置到 DNS 中,以便正确解析默认名称。在 install-config.yaml 文件中的 ingressVIP 配置设置中添加值时,使用虚拟 IP 地址而不是 FQDN。在使用双栈网络时,该 IP 地址必须来自主要 IPv4 网络。如果没有设置,安装程序将使用 test.apps.<cluster_name>.<base_domain> 从 DNS 派生 IP 地址。

表 14.3. 可选参数
参数default描述

provisioningDHCPRange

172.22.0.10,172.22.0.100

定义 provisioning 网络上节点的 IP 范围。

provisioningNetworkCIDR

172.22.0.0/24

用于置备的网络的 CIDR。在 provisioning 网络中不使用默认地址范围时需要这个选项。

clusterProvisioningIP

provisioningNetworkCIDR 的第三个 IP 地址。

运行置备服务的集群中的 IP 地址。默认为 provisioning 子网的第三个 IP 地址。例如: 172.22.0.3

bootstrapProvisioningIP

provisioningNetworkCIDR 的第二个 IP 地址。

在安装程序部署 control plane(master)节点时运行置备服务的 bootstrap 虚拟机上的 IP 地址。默认为 provisioning 子网的第二个 IP 地址。例如: 172.22.0.2 或 2620:52:0:1307::2

externalBridge

baremetal

附加到裸机网络的虚拟机监控程序的裸机网桥名称。

provisioningBridge

provisioning

附加到 provisioning 网络的 provisioner 主机上的 provisioning 网桥的名称。

defaultMachinePlatform

 

用于没有平台配置的机器池的默认配置。

bootstrapOSImage

 

用于覆盖 bootstrap 节点的默认操作系统镜像的 URL。URL 必须包含镜像的 SHA-256 哈希。例如: https://mirror.openshift.com/rhcos-<version>-qemu.qcow2.gz?sha256=<uncompressed_sha256>

provisioningNetwork

 

provisioningNetwork 配置设置决定了集群是否使用 provisioning 网络。如果存在,配置设置也会决定集群是否管理网络。

disabled :将此参数设置为 Disabled,以禁用对 provisioning 网络的要求。当设置为 Disabled 时,您必须只使用基于虚拟介质的置备,或使用支持的安装程序启动集群。如果 Disabled 并使用电源管理,则必须可以从 bare-metal 网络访问 BMC。如果 Disabled,则必须在 bare-metal 网络上提供两个用于置备服务的 IP 地址。

Managed :将此参数设置为 Managed( 默认设置),以全面管理调配网络,包括 DHCP、TFTP 等。

Unmanaged :将此参数 设置为 Unmanaged 以启用调配网络,但需要手动配置 DHCP。建议进行虚拟介质调配,但在需要时仍可使用 PXE。

httpProxy

 

将此参数设置为环境中使用的适当 HTTP 代理。

httpsProxy

 

将此参数设置为环境中使用的适当 HTTPS 代理。

noProxy

 

将此参数设置为适合环境中代理使用的排除项。

主机

hosts 参数是用于构建集群的独立裸机资产列表。

表 14.4. 主机
名称default描述

名称

 

与详细信息 关联的 BareMetalHost 资源的名称。例如: openshift-master-0

role

 

裸机节点的角色。masterworker

bmc

 

基板管理控制器的连接详情。如需了解更多详细信息,请参阅 BMC 寻址部分。

bootMACAddress

 

主机用于 provisioning 网络的 NIC 的 MAC 地址。Ironic 使用 bootMACAddress 配置设置检索 IP 地址。然后,它将绑定到 主机。

注意

如果您禁用了 provisioning 网络,则必须从主机提供有效的 MAC 地址。

networkConfig

 

设置此可选参数来配置主机的网络接口。如需了解更多详细信息,请参阅"(可选)配置主机网络接口"。

14.2.7. Root 设备提示

rootDeviceHints 参数可让安装程序将 Red Hat Enterprise Linux CoreOS(RHCOS)镜像置备到特定的设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。安装程序使用第一个与 hint 值匹配的发现设备。配置可以组合多个 hint,但设备必须与所有提示匹配,以便安装程序进行选择。

表 14.5. 子字段
子字段描述

deviceName

包含类似 /dev/vda 的 Linux 设备名称的字符串。hint 必须与实际值完全匹配。

hctl

包含类似 0:0:0:0:0 的 SCSI 总线地址的字符串。hint 必须与实际值完全匹配。

model

包含特定厂商的设备标识符的字符串。hint 可以是实际值的子字符串。

vendor

包含该设备厂商或制造商名称的字符串。hint 可以是实际值的子字符串。

serialNumber

包含设备序列号的字符串。hint 必须与实际值完全匹配。

minSizeGigabytes

以 GB 为单位代表设备的最小大小的整数。

wwn

包含唯一存储标识符的字符串。hint 必须与实际值完全匹配。

wwnWithExtension

包含唯一存储标识符的字符串,并附加厂商扩展。hint 必须与实际值完全匹配。

wwnVendorExtension

包含唯一厂商存储标识符的字符串。hint 必须与实际值完全匹配。

rotational

指明该设备为旋转磁盘(true)还是非旋转磁盘(false)的布尔值。

示例用法

     - name: master-0
       role: master
       bmc:
         address: ipmi://10.10.0.3:6203
         username: admin
         password: redhat
       bootMACAddress: de:ad:be:ef:00:40
       rootDeviceHints:
         deviceName: "/dev/sda"

14.2.8. 创建 OpenShift Container Platform 清单

  1. 创建 OpenShift Container Platform 清单。

    $ ./openshift-baremetal-install --dir ~/clusterconfigs create manifests
    INFO Consuming Install Config from target directory
    WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings
    WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regenerated

14.2.9. 通过 OpenShift Container Platform 安装程序部署集群

运行 OpenShift Container Platform 安装程序:

$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster

14.2.10. 安装后

在部署过程中,您可以通过向安装目录文件夹中的 .openshift_install.log 日志文件发出 tail 命令来检查安装的整体状态:

$ tail -f /path/to/install-dir/.openshift_install.log
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.