iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
1
DevOps

『紅帽』的 Cloud-Native 工作術: 從 Container 到 OpenShift 。系列 第 9

沒錯!它就是人稱K8S(Kubernetes)界的金城武 - OpenShift

  • 分享至 

  • xImage
  •  

Openshift 介紹


OpenShift(也稱為OCP)是基於 Kubernetes 的容器應用程序平台,適用於企業應用程序的開發和部署。 但是,為什麼我們需要另一個企業級的 Kubernetes 來運行我們的容器化應用程序呢? 我列出了以下3個 Openshift 的優點:

  1. OpenShift 是針對需要更可靠和穩定解決方案的企業組織的產品 (Product),而 Kubernetes 比較偏向任何人都適用的 Project。 OpenShift 允許用戶通過訂閱方式來提供付費支援以即時解決客戶的問題,而 Kubernetes 則需要仰賴社群的回答。

  2. OpenShift 內建了一些有用的功能,因為它們是維護企業級平台所必需的。而 kKubernetes 需要你自己手動安裝及設置這些附加功能。當然,如果你是使用 kubematic 提供的解決方案,那麼差異就沒那麼大。

  3. OpenShift 的安全策略比 Kubernetes 嚴格。 人們在 Kubernetes 上運行簡單的應用程序很容易,但是 OpenShift的安全策略限制了他們這樣做。 需要一定級別的權限才能維護最低安全級別,因此用戶別無選擇,必須學習這些規定以部署應用程序在 OpenShift。

安裝 單機版 OpenShift 4.x 在 Mac 上


我們可以透過 Red Hat CodeReady Containers 來運行 OpenShift 4.x 在Linux,Mac, 甚至是 Windows上,方便開發者開發及測試。

CodeReady Containers 需要以下最低系統資源才能運行 Red Hat OpenShift:

  • 4 virtual CPUs (vCPUs)
  • 8 GB 記憶體
  • 35 GB 儲存空間

您還將需要主機作業系統支援的虛擬機器監視器(Hypervisor)。
CodeReady Containers 以下 Hypervisors:

  • Linux 的 libvirt
  • macOS 的 HyperKit
  • Windows 的 Hyper-V
  1. 安裝 hyperkit
$ brew install hyperkit
$ brew link --overwrite hyperkit
  1. 下載 CodeReady Containers

Red Hat CodeReady Containers product page 下載 CodeReady Containers 壓縮檔。

  1. 解壓縮後然後將 crc binary 檔放到 $PATH
$ cp crc /usr/local/bin/
  1. 設置主機環境

一旦安裝了 CodeReady Containers,在啟動 OpenShift 之前,必須運行 crc setup 來設置主機環境。

  1. 啟動 OpenShift 4.x cluster

使用crc setup命令設置主機環境後,可以使用crc start命令啟動OpenShift。

出現提示時,請輸入user pull secret。 此密碼可以從 Red Hat CodeReady Containers 產品頁面的 Pull Secret部分下複製。 注意,您需要紅帽帳戶才能訪問此 pull secret。

啟動過程完成後,它將顯示可用於登錄OpenShift的用戶憑據。

https://ithelp.ithome.com.tw/upload/images/20200924/20130321YALk8RwvjX.png

訪問 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時給的密碼來登入使用者介面。

  1. 已開發者身份登入

選擇 "htpasswd_provider"

https://ithelp.ithome.com.tw/upload/images/20200924/20130321nO36p2hqM6.png

輸入密碼

https://ithelp.ithome.com.tw/upload/images/20200924/20130321Yr9PfhY3HN.png

成功登入開發者的使用者介面啦

https://ithelp.ithome.com.tw/upload/images/20200924/20130321s7kfsX61TH.png

  1. 以系統管理員身份登入

選擇 "kube:admin"

https://ithelp.ithome.com.tw/upload/images/20200924/201303218Ow5e771uJ.png

輸入管理者密碼

https://ithelp.ithome.com.tw/upload/images/20200924/20130321frcCiwuHCY.png

確定有登入管理者頁面

https://ithelp.ithome.com.tw/upload/images/20200924/20130321o93zgBnZoS.png

停止 OpenShift


$ 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 可以說是相輔相成。


上一篇
工欲善其事,必先裝 Krew
下一篇
裝了OpenShift就想部署Pod? 沒這麼容易!
系列文
『紅帽』的 Cloud-Native 工作術: 從 Container 到 OpenShift 。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言