雲無關、桌面端、基於Kubernetes的平台Otomi

一、Otomi介紹

Otomi官網://otomi.io/

Otomi-core核心模組Github地址://github.com/redkubes/otomi-core

Otomi是一個開源的、雲無關的、基於kubernetes的平台,通過類似桌面的用戶介面安全地部署、運行和管理應用程式。

Otomi易於安裝,具有直觀的桌面式UI,可以使用預先配置的內置應用程式提供開箱即用的體驗。

就像您最喜歡的Linux發行版所期望的那樣。在Kubernetes上安裝Otomi後,您可以登錄並立即開始部署應用程式。

image-20211012182027231

Otomi是建立在以下開源項目之上的:

二、Otomi提供的特性

  • 開發人員自助服務:團隊成員可以使用Otomi Console直接訪問他們需要的所有工具並創建Services,Jobs和Secrets。
  • 預配置和準備使用的應用程式。
  • 所有集成應用程式的應用程式配置管理,提供基本配置文件配置以支援最常見的DevOps用例。
  • 多租戶:創建團隊並提供對共享應用程式的SSO訪問。
  • 實現了更好的治理和安全性的策略。清單將在運行時靜態地和在集群上進行檢查,以確保策略服從。
  • 單點登錄:自帶IDP或使用Keycloak作為IDP(默認)。
  • 自動進入配置:輕鬆配置Team服務的進入,允許公眾在幾分鐘內訪問服務。Istio網關和虛擬服務為Team服務自動生成和配置,以可預測的方式將通用入口體系結構綁定到服務端點。
  • 輸入/輸出驗證:靜態地檢查配置和輸出清單的有效性和最佳實踐。
  • 自動漏洞掃描:掃描Harbor中所有已配置的Team服務容器。
  • 內置對Azure、Amazon Web服務和Google雲平台的支援。

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: //docs.aws.amazon.com/eks/latest/userguide/create-cluster.html

使用kubectl訪問集群:

aws eks update-kubeconfig --name $CLUSTER_NAME

設置外部DNS://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/aws.md

2. Azure (AKS)#

Set up an AKS cluster on Azure: //docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough-portal

使用kubectl訪問集群:

az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin

設置外部DNS://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/azure.md

3. Google (GKE)#

Set up a GKE cluster on Google Cloud Platform: //cloud.google.com/kubernetes-engine/docs/how-to

使用kubectl訪問集群:

gcloud container clusters get-credentials <cluster-name> --region <region> --project <project>

設置外部DNS://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,GoogleIdentity和Okta。

4.3 安裝圖表

使用Helm安裝Otomi。

有關如何使用helm圖表的更多細節,請訪問helm文檔頁面。

在開始之前,驗證您是否已經滿足先決條件:

1. 添加Otomi倉庫#

helm repo add otomi //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 //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 //otomi.<domainsuffix>。domainSuffix可以在值中找到。Yaml是在安裝期間提供的。

如果Otomi配置了OIDC(使用Azure AD作為IDP),單擊右邊的按鈕(下面示例中的redkubes-azure)。

如果沒有配置OIDC,請先在Keycloak中創建用戶。並將該用戶添加到otomi-admin組。

image-20211012181415978

成功登錄後,您將看到Otomi Dashboard。

要了解更多關於使用Otomi控制台,請查看Otomi控制台。

image-20211012181445789

image-20211012181455531

5.2 激活Drone

Gitea和Drone是Otomi集群配置存儲和更新的重要組成部分。點擊控制台中的Gitea應用程式(在Platform/Otomi Apps下)。它將打開一個新的瀏覽器選項卡,並顯示在Gitea的登錄頁面。使用默認的otomi-admin帳戶登錄。

image-20211012181602228

在登錄後,可能需要幾分鐘才能看到otomi/values存儲庫。

image-20211012181619399

otomi/values存儲庫保存otomi集群配置,每當通過控制台發生新的更改時,它就會更新。

現在回到控制台激活Drone。

image-20211012181649982

點擊Drone 應用程式,它應該打開一個新標籤,如下所示,

image-20211012181722859

選擇Activate,然後Activate REPOSITORY

image-20211012181735372

保存更改,就可以開始了。

image-20211012181754043

現在,最後一步是創建Team。有關更多資訊,請參見 Teams頁面。