一、Otomi介紹
Otomi官網:https://otomi.io/
Otomi-core核心模組Github地址:https://github.com/redkubes/otomi-core
Otomi是一個開源的、雲無關的、基於kubernetes的平臺,通過類似桌面的使用者介面安全地部署、執行和管理應用程式。
Otomi易於安裝,具有直觀的桌面式UI,可以使用預先配置的內建應用程式提供開箱即用的體驗。
就像您最喜歡的Linux發行版所期望的那樣。在Kubernetes上安裝Otomi後,您可以登入並立即開始部署應用程式。
Otomi是建立在以下開源專案之上的:
二、Otomi提供的特性
- 開發人員自助服務:團隊成員可以使用Otomi Console直接訪問他們需要的所有工具並建立Services,Jobs和Secrets。
- 預配置和準備使用的應用程式。
- 所有整合應用程式的應用程式配置管理,提供基本配置檔案配置以支援最常見的DevOps用例。
- 多租戶:建立團隊並提供對共享應用程式的SSO訪問。
- 實現了更好的治理和安全性的策略。清單將在執行時靜態地和在叢集上進行檢查,以確保策略服從。
- 單點登入:自帶IDP或使用Keycloak作為IDP(預設)。
- 自動進入配置:輕鬆配置Team服務的進入,允許公眾在幾分鐘內訪問服務。Istio閘道器和虛擬服務為Team服務自動生成和配置,以可預測的方式將通用入口體系結構繫結到服務端點。
- 輸入/輸出驗證:靜態地檢查配置和輸出清單的有效性和最佳實踐。
- 自動漏洞掃描:掃描Harbor中所有已配置的Team服務容器。
- 內建對Azure、Amazon Web服務和谷歌雲平臺的支援。
Otomi的目標是支援最常見的DevSecOps用例,即開箱即用,並強烈依賴於GitOps模式,其中所需的狀態以程式碼形式反映出來,叢集狀態會自動更新。
2.1 Otomi優勢
- 很容易安裝
- 自帶一個直觀的桌面式UI
- 自帶準備使用,預配置和內建的應用程式
- 開箱即用的工作
就像您最喜歡的Linux發行版所期望的那樣。在Kubernetes上安裝Otomi之後,您可以登入並立即開始部署應用程式。
2.2 為什麼選擇Otomi
- 允許定製和擴充套件。
- 將上游Kubernetes與經過驗證的開源應用程式和附加元件整合在一起。
- 單個可部署包是否具有經過行業驗證的應用程式和策略,以獲得更好的治理和安全性。
- 提供企業級容器平臺的開箱即用體驗。
- 提高開發人員的效率,使開發人員自我服務。
- 提供精心設計的合理預設值,以減少配置工作和加快時間的市場。
- 結合12因素應用方法和Kubernetes的最佳實踐。
三、Otomi架構
Otomi由多個專案組成:
- Otomi Core:Otomi的心臟
- Otomi Tasks:由Otomi Core組織的自主工作
- Otomi API:Otomi的大腦,處理主機輸入並與Otomi Core對話
- Otomi Console:Otomi為管理員和團隊提供的UI,與Otomi API對話
- Otomi Clients:構建和釋出redkubes/ Otomi -tasks repo中使用的openapi客戶端的工廠
四、安裝部署
4.1 最低要求及配置
4.1.1 客戶端二進位制檔案
請確保以下客戶端二進位制檔案存在:
- Kubectl訪問叢集。
- Docker必須安裝並執行,就像Otomi執行在容器中一樣。
- 安裝了Helm
- 可選:Otomi CLI客戶端
4.1.2 Kubernetes和DNS
Otomi至少要求:
- 至少有3個工作節點的正在執行的Kubernetes叢集(使用至少4個vCPU的通用例項型別)
- 訪問公共DNS區域
Otomi支援Kubernetes版本1.18到1.20
按照下面的說明在你選擇的雲上設定一個Kubernetes叢集和DNS:
1. AWS#
Set up an EKS cluster on AWS: https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html
使用kubectl訪問叢集:
aws eks update-kubeconfig --name $CLUSTER_NAME
設定外部DNS:https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md
2. Azure (AKS)#
Set up an AKS cluster on Azure: https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal
使用kubectl訪問叢集:
az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin
設定外部DNS:https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/azure.md
3. Google (GKE)#
Set up a GKE cluster on Google Cloud Platform: https://cloud.google.com/kubernetes-engine/docs/how-to
使用kubectl訪問叢集:
gcloud container clusters get-credentials <cluster-name> --region <region> --project <project>
設定外部DNS:https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/gke.md
4.2 可選配置
可以選擇將Otomi配置為使用外部IDP (Azure AD),併為sop使用外部金鑰管理服務(KMS)提供商。
下面你可以找到關於如何將Azure AD設定為外部IDP和配置KMS的詳細說明。
我們將很快為其他idp新增更多說明,如Amazon Incognito,谷歌Identity和Okta。
4.3 安裝圖表
使用Helm安裝Otomi。
有關如何使用helm圖表的更多細節,請訪問helm文件頁面。
在開始之前,驗證您是否已經滿足先決條件:
1. 新增Otomi倉庫#
helm repo add otomi https://otomi.io/otomi-core
helm repo update
檢視helm repo瞭解更多命令說明。
2. 建立測試檔案
檢視所需的值。Yaml檔案的詳細註釋,檢視和下載圖表的最新值。
執行以下命令檢視所有的值:
helm show values otomi/otomi
使用例項測試輸入值是否正確。
helm template -f values.yaml otomi/otomi
3. 安裝圖表
使用以下命令安裝圖表:
helm install -f values.yaml otomi otomi/otomi
監控圖表安裝:
圖表在預設名稱空間中部署一個Job (otomi)。使用kubectl監控圖表安裝:
# get the status of the job
kubectl get job otomi -w
# watch the helm chart install status:
watch helm list -Aa
4. 二進位制安裝
git clone https://github.com/redkubes/otomi-core.git
cd otomi-core
使用以下命令安裝名稱為my-otomi-release(您選擇的自定義名稱)的圖表。
helm install -f values.yaml my-otomi-release chart/otomi
5. 解除安裝圖表
helm uninstall my-otomi-release
Helm解除安裝只會移除用於部署Otomi的工作。它不會移除所有已安裝的元件。如果您想完全解除安裝,我們建議首先克隆otomi/values儲存庫(以確保配置安全),然後使用otomi CLI解除安裝。
五、安裝後配置
安裝Otomi之後,需要兩個安裝後配置操作。遵循這些指令:
5.1 登入Otomi控制檯
在瀏覽器中開啟url https://otomi.<domainsuffix>
。domainSuffix可以在值中找到。Yaml是在安裝期間提供的。
如果Otomi配置了OIDC(使用Azure AD作為IDP),單擊右邊的按鈕(下面示例中的redkubes-azure)。
如果沒有配置OIDC,請先在Keycloak中建立使用者。並將該使用者新增到otomi-admin組。
成功登入後,您將看到Otomi Dashboard。
要了解更多關於使用Otomi控制檯,請檢視Otomi控制檯。
5.2 啟用Drone
Gitea和Drone是Otomi叢集配置儲存和更新的重要組成部分。點選控制檯中的Gitea應用程式(在Platform/Otomi Apps下)。它將開啟一個新的瀏覽器選項卡,並顯示在Gitea的登入頁面。使用預設的otomi-admin帳戶登入。
在登入後,可能需要幾分鐘才能看到otomi/values儲存庫。
otomi/values儲存庫儲存otomi叢集配置,每當通過控制檯發生新的更改時,它就會更新。
現在回到控制檯啟用Drone。
點選Drone 應用程式,它應該開啟一個新標籤,如下所示,
選擇Activate,然後Activate REPOSITORY
儲存更改,就可以開始了。
現在,最後一步是建立Team。有關更多資訊,請參見 Teams頁面。