一、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頁面。