OpenShift(也稱為OCP)是基於 Kubernetes 的容器應用程序平台,適用於企業應用程序的開發和部署。 但是,為什麼我們需要另一個企業級的 Kubernetes 來運行我們的容器化應用程序呢? 我列出了以下3個 Openshift 的優點:
OpenShift 是針對需要更可靠和穩定解決方案的企業組織的產品 (Product),而 Kubernetes 比較偏向任何人都適用的 Project。 OpenShift 允許用戶通過訂閱方式來提供付費支援以即時解決客戶的問題,而 Kubernetes 則需要仰賴社群的回答。
OpenShift 內建了一些有用的功能,因為它們是維護企業級平台所必需的。而 kKubernetes 需要你自己手動安裝及設置這些附加功能。當然,如果你是使用 kubematic 提供的解決方案,那麼差異就沒那麼大。
OpenShift 的安全策略比 Kubernetes 嚴格。 人們在 Kubernetes 上運行簡單的應用程序很容易,但是 OpenShift的安全策略限制了他們這樣做。 需要一定級別的權限才能維護最低安全級別,因此用戶別無選擇,必須學習這些規定以部署應用程序在 OpenShift。
我們可以透過 Red Hat CodeReady Containers 來運行 OpenShift 4.x 在Linux,Mac, 甚至是 Windows上,方便開發者開發及測試。
CodeReady Containers 需要以下最低系統資源才能運行 Red Hat OpenShift:
您還將需要主機作業系統支援的虛擬機器監視器(Hypervisor)。
CodeReady Containers 以下 Hypervisors:
$ brew install hyperkit
$ brew link --overwrite hyperkit
從 Red Hat CodeReady Containers product page 下載 CodeReady Containers 壓縮檔。
crc
binary 檔放到 $PATH
下
$ cp crc /usr/local/bin/
一旦安裝了 CodeReady Containers,在啟動 OpenShift 之前,必須運行 crc setup
來設置主機環境。
使用crc setup
命令設置主機環境後,可以使用crc start
命令啟動OpenShift。
出現提示時,請輸入user pull secret。 此密碼可以從 Red Hat CodeReady Containers 產品頁面的 Pull Secret部分下複製。 注意,您需要紅帽帳戶才能訪問此 pull secret。
啟動過程完成後,它將顯示可用於登錄OpenShift的用戶憑據。
要訪問 OpenShift 前,請首先按照 crc oc-env
說明進行設置。
$ Brandons-MacBook-Pro:crc-macos-1.16.0-amd64 brandon$ crc oc-env
export PATH="/Users/brandon/.crc/bin/oc:$PATH"
# Run this command to configure your shell:
# eval $(crc oc-env)
已開發者身份登入 OpenShift
$ oc login -u developer -p developer https://api.crc.testing:6443
Login successful.
You don't have any projects. You can try to create a new project, by running
oc new-project <projectname>
建立第一個 Project
$ oc new-project myproject
Project
是用來對Namespace
附加一些註釋(Annotation),例如 對 Project 的描述等, 一個 Project 會對應到一個 Namespace,他們就像連體嬰,你刪除一個 Project,對應的 Namespace 也會刪除。 而管理員也必須向用戶授予對 Project 的訪問權限,或者允許使用者自己創建 Project,則使用者會自動有權訪問其自己的 Project。與 Kubernetes 不同,普通用戶無法一開始就在 Default Project/Namespace 中創建 Pod。 必須先創建第一個新的 Project,然後在新的 Project 內創建 Pod。
列出所有 Project
$ oc projects
You have one project on this server: "myproject".
Using project "myproject" on server "https://api.crc.testing:6443".
在 Kebernetes 中,您需要安裝插件 kubens
才能在 Namespace 之間切換。 但OpenShift已經內置此功能,您只需要運行 oc project <my-project>
。
切換到剛剛新增的 Project。
$ oc project myproject
Already on project "myproject" on server "https://api.crc.testing:6443".
運行crc console
並使用這些啟動OpenShift時給的密碼來登入使用者介面。
選擇 "htpasswd_provider"
輸入密碼
成功登入開發者的使用者介面啦
選擇 "kube:admin"
輸入管理者密碼
確定有登入管理者頁面
$ crc stop
確定 OpenShift 狀態
$ crc status
CRC VM: Stopped
OpenShift: Stopped
Disk Usage: 0B of 0B (Inside the CRC VM)
Cache Usage: 13.05GB
Cache Directory: /Users/brandon/.crc/cache
由於 Kubernetes 是構成 OpenShift 的基礎,因此可以在兩者之間找到許多共同點。 儘管 Kubernetes 是開放且快速發展的平台,但 OpenShift 關注不同企業的需求,並根據這些企業級的需求應運而生,讓更多企業願意接納 Kubernetes 對應的平台跟服務。 Kubernetes 跟 OpenShift 可以說是相輔相成。