Grafana
Grafana允許查詢,可視化和了解指標,無論數(shù)據(jù)存儲在哪里,你可以與團隊創(chuàng)建,瀏覽和共享儀表板,并促進數(shù)據(jù)驅(qū)動的文化。其優(yōu)秀用例是時間序列數(shù)據(jù),如工業(yè)傳感器,天氣和進程控制。Grafana用Go和Node.js編寫。它帶有一個內(nèi)置的名為sqlite3的嵌入式數(shù)據(jù)庫。也可以使用其他數(shù)據(jù)存儲(如MySQL,PostgreSQL,Graphite,Influx DB,Prometheus和Elasticsearch)來存儲數(shù)據(jù)。它還通過使用其他插件來支持其他數(shù)據(jù)存儲。
Grafana可以安裝在Linux,Windows,Docker和Mac上。它帶有內(nèi)置的用戶控件和身份驗證機制,例如LDAP,Google Auth和GitHub,可幫助控制對儀表板的訪問。除了上面列出的身份驗證之外,Grafana還支持AD身份驗證。Grafana具有一個API接口,可用于保存儀表板,創(chuàng)建用戶和更新數(shù)據(jù)源。
Grafana儀表板
你可以輕松創(chuàng)建動態(tài)且可重復使用的儀表板,還可以選擇創(chuàng)建模板以進行重用。使用保留的標簽過濾器瀏覽和搜索日志可以使創(chuàng)建儀表板的工作更加輕松。甚至可以使用臨時查詢來瀏覽特定數(shù)據(jù)并向下獲取取源。Grafana具有內(nèi)置的警報系統(tǒng),可以使用該系統(tǒng)定義指定指標的警報規(guī)則。它會不斷評估它們,并通過電子郵件或通過Slack等工具將通知發(fā)送到系統(tǒng)。
將Grafana與Kibana進行比較時,前者更適合基于特定指標(例如CPU/磁盤/IO使用率)的時間序列數(shù)據(jù)。但是Kibana更適合使用Elasticsearch功能的分析儀表板。因此,我們不能使用Grafana進行數(shù)據(jù)搜索和探索。
Terraform
Terraform是HashiCorp提供的云基礎(chǔ)架構(gòu)工具。它用于有效地構(gòu)建,更改和版本化基礎(chǔ)結(jié)構(gòu)。簡而言之,Terraform對交付基礎(chǔ)設(shè)施即代碼(IAAC)很有用。它支持大多數(shù)公有云服務(wù)提供商的基礎(chǔ)架構(gòu)以及本地基礎(chǔ)架構(gòu)。
Terraform與平臺無關(guān),可幫助你部署自動測試,源代碼控制等編碼原則。它得到了社區(qū)的大力支持,許多企業(yè)已開始使用它來管理其基礎(chǔ)架構(gòu)。
你可以進行Terraform的試運行,它無需提交即可模擬實際更改,此功能對開發(fā)人員非常有用。Terraform資源圖創(chuàng)建所有資源的視圖,包括每個資源之間的依賴關(guān)系。Terraform利用各自的云提供商的API來管理基礎(chǔ)架構(gòu),從而減少了對其他資源的需求。
Terraform是一種描述性語言,用于描述資源的目標級別。流行的云供應(yīng)商可以使用插件來管理各自的云資源。此外,可以使用多種語言創(chuàng)建自己的插件。Terraform主要支持Go語言。
git-secret
開發(fā)人員通常的做法是對代碼中使用的密碼/憑據(jù)進行加密,然后將其保存在安全的地方。為此,我們有多種工具,其中Vault是其中之一。git-secret是一個用于在Git存儲庫中存儲秘密的簡單工具。git-secret使用gpg加密和解密。
用例有:
- 在集中位置管理密鑰以進行加密和解密
- 版本控制的加密,以實現(xiàn)更好的管理
- 訪問控制和利用誰可以加密和解密
- 不得將任何密碼以純文本形式存儲
可以使用git-secrets來存儲以純文本格式存儲的Oauth密鑰,DB密碼,應(yīng)用程序密鑰和其他密鑰。
git-secret是一個用于在Git存儲庫中存儲私有數(shù)據(jù)的工具。它使用gpg加密密碼,并使用所有受信任用戶的公共密鑰跟蹤文件。因此,用戶只能使用各自的個人密鑰解密文件,并且此處不會更改任何密碼。當某人離開企業(yè)或被替換時,只需刪除公鑰,重新加密文件,他們將無法再解密。
Aardvark和Repokid
Aardvark和Repokid可以確保角色在大型動態(tài)云部署中僅保留必要的特權(quán)。這些是Netflix提供的開源云安全工具,用于適應(yīng)快速創(chuàng)新和分布式擴展。它們幫助實現(xiàn)了最小特權(quán)訪問的原則,而不會影響性能。
所有公有云提供商都具有身份和訪問管理(IAM)服務(wù),可幫助為用戶創(chuàng)建精細的策略。但是,自定義粒度策略增加了復雜性,這會使開發(fā)人員創(chuàng)建產(chǎn)品更加困難。缺少必要的權(quán)限會使應(yīng)用程序失敗,而過多的權(quán)限會帶來安全漏洞和合規(guī)性問題。
Aardvark使用Phantoms登錄到云提供商的控制臺,并檢索帳戶中所有IAM角色的Access Advisor數(shù)據(jù)。它將最新的Access Advisor數(shù)據(jù)存儲在DynamoDB數(shù)據(jù)庫中,并公開RESTful API。
Aardvark支持線程化以同時檢索多個帳戶的數(shù)據(jù),并在不到20分鐘的時間內(nèi)刷新數(shù)據(jù)。
DynamoDB表具有有關(guān)策略,權(quán)限計數(shù)(總數(shù)和未使用),角色是否符合回購條件或是否經(jīng)過過濾以及最后一次刪除每個角色的未使用權(quán)限(回購功能)的數(shù)據(jù),如圖. Repokid將DynamoDB中存儲的數(shù)據(jù)與角色未使用的服務(wù)一起使用,并刪除未使用的權(quán)限。
Aardvark學習過程
一旦對角色進行了充分的概要分析,Repokid的repose功能便會修改該角色附帶的內(nèi)聯(lián)策略,以排除未使用的權(quán)限。Repokid還維護以前策略版本的緩存,以防需要將角色恢復到以前的狀態(tài)?;刭徆δ芸梢詰?yīng)用于單個角色,但通常用于定位帳戶中的每個合格角色。
OpenShift
OpenShift是一項類似于針對內(nèi)部部署和云平臺的“容器即服務(wù)”的服務(wù)。它基于由Kubernetes在Red Hat Enterprise Linux的基礎(chǔ)上編排和管理的Docker容器構(gòu)建。V3的最新版本具有許多新功能。OpenShift項目由Kubernetes,Docker,CoreOS,F(xiàn)ramework,Crio,Prometheus等支持。
OpenShift容器平臺架構(gòu)
將容器分組在一起極大地增加了可帶入OpenShift的應(yīng)用程序的數(shù)量。這帶來了具有單個IP地址和共享文件系統(tǒng)的好處。由于OpenShift容器本質(zhì)上是不可變的,因此可以在運行時將應(yīng)用程序代碼,從屬庫和機密附加到容器。這使管理員和集成商可以將代碼和補丁與配置和數(shù)據(jù)分開。OpenShift容器框架如圖所示。
OpenShift和Kubernetes是作為一組微服務(wù)構(gòu)建的,這些微服務(wù)通過常見的REST API一起工作以更改系統(tǒng)。這些非常API可供系統(tǒng)集成商使用,并且可以禁用那些相同的核心組件以允許替代實現(xiàn)。OpenShift在REST API上公開了細粒度的訪問控制,這使服務(wù)集成商的工作變得容易。
BOSH
BOSH是一個與云無關(guān)的開源工具,用于復雜分布式系統(tǒng)的發(fā)布,部署和生命周期管理。大多數(shù)發(fā)行版和托管Cloud Foundry環(huán)境都使用BOSH全面管理環(huán)境,以便可以專注于編碼和交付業(yè)務(wù)價值。由于BOSH的靈活性和強大功能,Google和Pivotal使其成為了Kubo項目(Kubernetes的Web規(guī)模發(fā)布工程)的核心。
BOSH的工作方式類似于分布式系統(tǒng),在該系統(tǒng)中,運行在不同虛擬機上的各個軟件組件的集合作為一個更大的系統(tǒng)一起工作。
BOSH部署
下面列出了BOSH的主要組件。
- Stem cell:這類似于用于創(chuàng)建虛擬機的OS的鏡像。它將基本操作系統(tǒng)與部署中捆綁的其他軟件包隔離。
- Release:這是干Stem cell之上的一層,描述了應(yīng)該部署什么軟件以及應(yīng)該如何配置它。它包含配置屬性和模板,啟動腳本,源代碼,二進制工件等。
- Deployment manifest:BOSH使用此YAML清單文件將其部署到目標基礎(chǔ)結(jié)構(gòu),監(jiān)控虛擬機或容器的運行狀況,并在必要時進行修復。
- 云提供商接口:CPI是BOSH用于與基礎(chǔ)架構(gòu)進行交互以創(chuàng)建和管理Stem cell,VM和磁盤的API。
其他環(huán)境中也采用了BOSH來打包和管理各種軟件。BOSH的優(yōu)勢在于它可以同時管理第一天和第二天的操作任務(wù),例如配置軟件并將其升級到新版本,測試將整個系統(tǒng)從一個版本升級到另一個版本,調(diào)整主機大小以及處理安全更新。
Spinnaker
Spinnaker是一個開源的多云連續(xù)交付平臺,用于以高速發(fā)布軟件更改。它結(jié)合了強大而靈活的管道管理系統(tǒng)以及來自主要云提供商服務(wù)的集成,這些服務(wù)包括AWS EC2,Kubernetes,Google Compute Engine,Google Kubernetes Engine,Google App Engine,微軟Azure,OpenStack,Cloud Foundry和Oracle Cloud Infrastructure。
它通過創(chuàng)建部署管道來自動化發(fā)布,這些管道可以運行集成和系統(tǒng)測試,上下移動服務(wù)器組以及監(jiān)控部署。它通過Git events,Jenkins,Travis CI,Docker,CRON或其他Spinnaker管道觸發(fā)管道。
Spinnaker部署管道
Spinnaker創(chuàng)建并部署不可變的鏡像,以實現(xiàn)更快的部署,更容易的回滾并消除難以調(diào)試的配置漂移問題。它利用內(nèi)置的部署策略(例如紅色/黑色和金絲雀部署)利用云中的不變基礎(chǔ)架構(gòu)。
Spinnaker的應(yīng)用程序管理功能可幫助管理云資源。Spinnaker作為服務(wù)的集合運行,有時稱為應(yīng)用程序或微服務(wù)。應(yīng)用程序,集群和服務(wù)器組是Spinnaker用來描述服務(wù)的關(guān)鍵概念。負載均衡器和防火墻描述了你的服務(wù)如何向用戶公開。
Spinnaker管道是關(guān)鍵的部署管理結(jié)構(gòu),它由一系列動作組成??梢匝毓艿涝陔A段之間傳遞參數(shù),如圖所示。你可以手動啟動管道,也可以通過事件自動觸發(fā)管道,例如作業(yè)的完成,注冊表中出現(xiàn)的新鏡像,CRON計劃或另一個管道中的動作??梢耘渲霉艿?,以在管道執(zhí)行期間的各個時間點通過電子郵件,Slack或SMS通知。
Spinnaker以云原生部署策略為先構(gòu)建,處理基礎(chǔ)編排,例如,驗證運行狀況檢查,禁用舊服務(wù)器組和啟用新服務(wù)器組。它支持紅色/黑色(又名藍色/綠色)策略,并在積極開發(fā)中采用滾動的紅色/黑色和金絲雀策略,如圖所示。
Spinnaker部署策略