成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

企業Docker實施面面觀

開發 架構
當下Docker容器化的架構備受歡迎,越來越多的企業開始利用容器來構建自己的基礎架構。通常是自己建立了Docker注冊表,部署在服務器上安裝Docker,安裝Jenkins通過Docker插件Jenkins CI管道管理Docker容器。

概述

當下Docker容器化的架構備受歡迎,越來越多的企業開始利用容器來構建自己的基礎架構。通常是自己建立了Docker注冊表,部署在服務器上安裝Docker,安裝Jenkins通過Docker插件Jenkins CI管道管理Docker容器。更大一點規模的則會使用K8S或者Swarm編排集群。對一個企業而言有開始嘗試使用容器到逐漸深入,擴大規模要經歷一系列的問題和踩坑的過程,那么如何規范化、安全的實施容器化,如何盡避免踩坑呢?本文蟲蟲給列出企業嘗試容器化架構需要考慮的各方各面問題,希望可以對大家有所幫助。

[[276637]]

鏡像問題

容器注冊表

Docker服務都需要一個注冊表(可不是我們常說的windows注冊表),Docker注冊表是Docker鏡像的存儲和在線(Web)版本倉庫(類似于代碼的github倉庫)。有很多公有云自有容器注冊表服務,比如Docker官方的Docker Hub,很多公有云都提供自己Docker注冊表服務:

企業Docker實施面面觀

除了這些公開的注冊表,基于安全、網絡訪問速度、規范化等考慮企業維護一個自建的Docker注冊表(Docker私服)也是必須的。構建Docker私服可以使用Docker官方的Distribution,它是Docker官方推出的Docker Registry 2開源產品,使用Golang開發,極大提高了安全和性能。

知名的Git服務器端Gitlab也提供了Gitlab 容器注冊表,部署Gitlab企業可以直接考慮使用這個組件,實現統一管理和集成。當然除了開源的,也可以使用商用的產品的比如Vmware開源的Harbor:

企業Docker實施面面觀

企業選擇容器注冊表需要考慮以下問題:

  • 注冊表是否能集成到企業內部的身份統一系統(比如LDAP,Kerberos等)?
  • 是否支持基于角色的訪問控制(RBAC)?
  • 統一身份認證和授權對企業來說是一個大問題。雖然快速便宜的開放的注冊解決方案可以足夠開發環境的構建。但是對企業線上環境,必須要考慮安全性、RBAC標準等。
  • 是否有加速鏡像的方法?
  • 鏡像是要有區別對待的。有些是快速、功能全,但是可能雜亂的的開發環境鏡像,他們不需要首要考慮正確性;而線上的鏡像則是要注重安全和性能和正確防護。企業要對這些鏡像分類,并且在注冊表中通過實例管理流程或用標簽強制執行。
  • 是否與其他Artefact包管理架構保持良好的一致性?
企業Docker實施面面觀

企業可能已經有包文件庫,內部的Artefact存儲等(比如maven,npm,Gitlab等)。在理想的架構中,容器注冊表應該是它的一個功能。如果架構上是分開的,那么久要考慮兩者的集成和管理開銷。

鏡像掃描

企業Docker實施面面觀

這是很重要的部分。當鏡像上傳到自建容器注冊表時,需要檢查它們是否符合標準。例如,檢查諸如此類的問題:

  • bash版本是否存在破殼漏洞?
  • ssl庫是不是過時了?
  • 該鏡像是否基于一個不安全或不可接受的基本鏡像(Base Image)?
  • 是否存在有漏洞的或者過時庫(Strus 2)和工具?
  • 等等

可以通過靜態鏡像分析來檢查這些問題。我們需要注意的是,這些掃描可能不是十全十美的,可能會錯過一些非常明顯漏洞,所以它也不是解決一切安全問題的靈丹妙藥,而是一種必要的手段,特別非常適合用解決:

  • 防止惡意攻擊者注入木馬?
  • 在企業范圍了,統一規范標準?
  • 快速發現和修補已知的和標準CVE漏洞?

這些問題是組成了鏡像掃描評估的基礎,當然也需要考慮集成的成本。常見的鏡像掃描工具有Clair,Anchore,OpenSCAP,Dockerscan等。

鏡像構建

如何構建鏡像?企業要支持哪些構建方法?如何將這些方組合在一起?

Dockerfiles最常用標準的方法之一,也可以使用S2I,Docker +Chef/Puppet/Ansible,甚至是手工方法構建。

使用那種CM(配置管理,如果已經使用的話)工具管理。

是否可以重復使用標準治理流程來和配置管理交互?

任何人都可以構建鏡像嗎?

[[276638]]

業界的經驗表明Dockerfile方法是一個使用廣泛而且通用的方法,而且具有大量的社區文檔和問題反饋支持。嘗試更復雜的CM工具用來符合VM的公司標準的則通常有一定實施門檻。通過S2I或Chef/Puppet/Ansible方法則更加便捷,也能很好的實現代碼(playbook)重用。

鏡像完整

需要確保系統上運行的鏡像在從構建到運行之間沒有被篡改過。

是否可以使用安全密鑰來對鏡像進行簽名?

是否有可以重復使用的密鑰庫?

密鑰庫可以與選擇的工具集成嗎?

即使Docker流行了很多年,鏡像的完整性仍然是一個新興領域。很多的供應商的對此還持觀望態度。 Docker 公司在這方面做了一些有益的工作,比如Notary(Docker開源簽名解決方案,已經轉到CNCF基金會下)在Docker企業數據中心產品之外部署。

第三方鏡像

[[276639]]

如果希望使用一鍵部署,那么供應商的鏡像則可以直接使用。

是否擁有驗證供應商鏡像的管理流程?

我們不光需要知道鏡像是否安全,還需要知道誰可以在必要時更新鏡像?

這些鏡像可被其他鏡像重用么?

這里有潛在的許可問題。是否有辦法阻止其他項目/團隊重用鏡像?

是否強制要求運行于特定的環境(例如DMZ)?

Docker是否可以在這些環境中使用?

例如許多網絡級應用程序運行在網絡設備類似環境,并且需要認證,所以,它必須與其他容器或項目工作環境隔離。是否有可能在這些環境中運行鏡像,需要考慮。

SDLC

企業Docker實施面面觀

如果企業已經實施了軟件開發生命周期(SDLC)流程,那么就要考慮Doc​​ker和它適應的問題:

  • 如何處理補丁?
  • 如何識別哪些鏡像需要更新?
  • 如何更新它們?
  • 如何通知團隊更新?
  • 如果他們不及時更新,如何強制他們更新?

該問題與上面已經提到的鏡像掃描方案密切相關。可能需要在某些時候考慮將其與現有SDLC流程集成。

密碼管理

在實施中數據庫密碼等信息需要傳遞到容器中。可以通過構建時(不建議)或運行時來完成該項工作。

如何在容器內管理密碼?

是否對密碼信息的使用進行了審核/跟蹤并確保安全?

[[276640]]

和鏡像簽名一樣,密碼管理也是一個仍在快速變化的新興領域。業界有OpenShift/Origin與Hashicorp Vault等現有集成解決方案。Docker Swarm等核心組件中也有對密碼管理的支持,Kubernetes 1.7加強了其密碼安全功能。

基礎鏡像

如果在企業中運行Docker,則可能需要在公司范圍內強制使用基礎鏡像:

  • 該基本鏡像應該包含哪些內容?
  • 應該使用哪種標準工具?
  • 誰負責管理集成鏡像?
  • 需要提前準備好很多關于基本鏡像的問題。另外開發人員非常注重鏡像的精簡。

安全和審計

root權限

默認情況下,訪問docker命令(特別是訪問Docker UNIX套接字)需要機器root權限。對于生產環境中的來說,這是不可能接受的。需要回答以下問題:

  • 誰(組)有權能夠運行docker命令?
  • 怎么管理這些有運行權限的人員?
  • 如何控制可運行的內容?

這些都有解決方案,但它們相對較新,通常是其他更大解決方案的一部分。

例如,OpenShift具有強大的RBAC控制功能,但需要購買整個平臺。Twistlock和Aquasec這樣的容器安全工具提供了一種管理這些工具的方法,可以考慮集成他們。

[[276641]]

運行時監控

企業可能希望能夠確定線上容器運行情況。

如何知道線上運行了哪些容器?

這些運行中的容器,怎樣容器注冊表?怎么關聯的,怎么在容器注冊表中管理的?

啟動以后,容器都更改過哪些關鍵性的文件?

同樣,這還有其他一些問題,這些構成Docker基礎運行策略。在這方面另一個經常被供應商提起的功能是異常檢測。安全解決方案提供了諸如花哨的機器學習的解決方案,聲稱可以通過學習容器該做什么,并對可能的異常活動發出告警。例如連接到與應用程序無關的外部應用程序的端口。雖然聽起來不錯,但是需要考慮一下如何運維他們。一般來說可能會有大量的誤報,需要大量調整和回歸驗證的,是否有人力和資金來維持運維,是問題的關鍵。

審計

當發生問題后,我們需要知道發生了什么。在物理和虛擬機的架構體系中,有很多安全措施來協助故障調查。而Docker容器的體系下,有可能是一個沒有"黑匣子記錄"的。

能馬上查詢出誰在運行容器嗎?

能馬上查詢出誰構建了了容器嗎?

要刪除容器時,能快速確定該容器的作用嗎?

要刪除容器時,能確定改容器可能做了什么嗎?

在這個問題上,我們可能希望強制使用特定的日志系統解決方案,以確保有關系統活動的信息在容器實例中保持不變。Sysdig的Falco(目前已經轉到CNCF基金會下)是容器安全監控和審計領域一個有趣,很有前途的工具。

企業Docker實施面面觀

運維

日志

應用程序日志記錄是企業關注的問題之一:

  • 容器是否記錄了操作所需的內容?
  • 日志是否遵循企業日志標準?
  • 日志記錄在什么地方?

容器的日志可能與傳統機器部署有著非常不同的模式。日志存儲空間可能要支持橫向擴展,可能需要增加存儲等。

容器編排

為了讓容器可以迅速隨著業務擴展和變更迭代,就需要編排系統來統一管理。

選擇的編排架構是否和Docker基礎架構的其他部分可以很好的適應?

是想使用一個與主流架構相悖的編排架構,還是追隨主流呢?

Kubernetes目前看來是贏得編排系統的市場。選擇非Kubenetes的架構可能需要找出充分的理由。

企業Docker實施面面觀

操作系統

企業線上操作系統遠落后于最新的版本和最通用的版本。

線上的標準操作系統是否能夠支持Docker所有最新功能?

例如,一些編排系統和Docker本身需要的內核版本或軟件包可能比所能支持的新很多,這可能是一個非常棘手的問題。

系統軟件包管理默認支持的Docker版本是多少?

企業Docker實施面面觀

Docker版本之間可能會存在明顯差異(比如,1.10是一個很大的差異),我們需要關注這些差異的細節。發行版提供的Docker(或者說'Moby'版本)之間也存在差異,這個影響很大。比如,RedHat的二進制docker包請求的順序RedHat的注冊表排在Docker Hub之前。

開發

開發環境

開發人員往往會要求系統管理權限。如何控制他們權限?

一個比較好的做法是可以為開發人員提供一個VM,讓他們在本地進行Docker構建,或者只運行docker客戶端,而將Docker服務端運行在統一服務器上。

他們的客戶端是否與部署環境保持一致?

如果他們的桌面上使用的是docker-compose,他們可能會很反感在UAT和生產中切換到Kubernetes pod。

[[276642]]

CI/CD

Jenkins是最受歡迎的CI工具,但是還有其他流行的替代方案,例如TeamCity,Gitlab CI等

Docker引入很多開發人員渴望使用的插件。其中很多都沒有考慮到安全性,甚至可能與其他插件存在兼容性的問題。

你CI/CD插件的策略是什么?

你準備好開啟一大堆新良莠不齊的插件了嗎?

CI流程是否適合短暫Jenkins實例以及持久的,受支持的實例?

企業Docker實施面面觀

基礎設施

共享存儲

Docker的核心是使用獨立于運行容器的卷,其中存儲持久數據。

共享存儲容易配置嗎?

NFS服務有其局限性,但已經成熟,并且在大型組織中通常得到很好的支持。

共享存儲支持是否可以滿足業務增加的需求?

是否需要跨部署位置提供共享存儲?

你可能擁有多個數據中心和/或云提供商。所有這些地點是否可以互相交互?他們需要交互嗎?

網絡

企業通常擁有自己喜歡的軟件定義網絡(SDN)解決方案,如Nuage,或新的方案比如Calico。

你是否有規定的SDN解決方案?

它如何與你選擇的解決方案相互作用?

SDN交互是否可能會導致出現問題?

aPaaS

擁有像OpenShift或Tutum Cloud這樣的aPaaS可以通過集中化支持Docker運行的上下文來解決上述許多問題。

你是否考慮過使用aPaaS?

云供應商

如果你使用的是亞馬遜或谷歌,阿里云等云提供商:

如何在云供應商上提供鏡像和運行容器?

是否希望將Docker解決方案與云供應商的產品聯系起來,或者讓他們與云供應商無關?

解決方案選擇時要注意的事項

有兩種方法可以選擇。一種方法是使用單個供應商的整體統一架構。還有一種方法是使用多個供應商的各個優勢產品,然后拼湊集成為一個企業方案。

方法一的,好處是:

  • 統一管理,統一認證。
  • 減少集成工作量和開銷。
  • 交付更快。
  • 可以享受來自供應商的更大承諾和關注。
  • 可能對產品方向的影響
  • 更易于管理。

單一供應商解決方案通常要求按照節點付款,可能導致成本費用很高,而且后續更換需要承受巨大損失,也會限制內部的架構。

拼湊集成方案的好處有:

  • 可以更具企業需求,用不同的速率提供更靈活的解決方案
  • 集眾家之長,可以讓你少踩坑,少犯錯誤,有問題可以隨時調整更換工具。
  • 從從長遠來看更加批恩一便宜,而且不會被 "鎖定"到某家供應商上,不仰人鼻息,被人敲詐,吊死在一棵樹上。

結論

企業Docker架構和部署復雜而多變。制定一個統一的,具有成本效益,安全,完整,靈活的,可以快速交付且無需鎖定的戰略是當下企業容器化臨的挑戰之一。本文列出了企業Docker實施各個方面需要注意的問題總結,供大家參考。

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-04-08 09:57:53

漏洞安全漏洞漏洞管理

2013-03-25 13:52:39

SDN軟件定義網絡Hybird

2010-07-08 10:03:39

動態語言PythonRuby

2022-02-22 06:11:46

數字化轉型企業云數據庫

2009-12-30 15:10:44

摩卡

2023-03-24 07:31:58

Oracle兼容性產品

2009-02-16 09:47:00

IPTV技術多媒體運營

2011-05-30 17:31:26

自動化測試

2013-07-22 17:49:52

Ubuntu虛擬機

2009-07-21 13:01:07

ASP.NET上傳文件

2010-09-01 17:13:56

無線局域網WLAN

2009-10-28 11:35:25

Linux服務器優化

2015-07-22 09:54:48

互聯網+發達國家

2009-07-14 10:56:21

MyEclipse快捷插件

2010-01-13 10:34:23

VB.NET局部靜態變

2010-11-23 09:29:49

Lync微軟

2011-08-24 10:44:53

Fedora社區Linux

2011-07-28 09:49:43

Linux社區Debian

2010-02-26 17:47:15

2011-07-22 10:58:44

Linux社區Ubuntu
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区国模嫣然 | 免费一区二区 | 91精品国产欧美一区二区成人 | 中文字幕在线电影观看 | 久久久久久亚洲精品 | 国产精品久久久久久久免费观看 | 日本高清aⅴ毛片免费 | 国产激情第一页 | 日韩av电影院 | 精品一区久久 | 在线播放国产一区二区三区 | 99久久久国产精品 | www.亚洲一区二区 | 欧美日韩亚洲一区 | 91精品国产综合久久香蕉922 | 亚洲免费av一区 | 国产精品久久午夜夜伦鲁鲁 | av国产精品 | 亚洲国产精品va在线看黑人 | 国产69精品久久久久777 | 狠狠草视频 | 欧美二区在线 | 男女那个视频 | 日韩1区 | 欧美日韩在线观看一区 | 一区二区三区av | 一区精品视频 | 午夜免费福利片 | 精品欧美二区 | 国产精品久久久亚洲 | 精品国产一区二区三区久久久蜜月 | 蜜桃视频一区二区三区 | 一区二区三区在线观看免费视频 | av天天干 | 午夜精品一区二区三区在线观看 | 久久久男人的天堂 | 激情福利视频 | av在线天堂 | 中文字幕视频在线 | 久久国产精品偷 | 国产高清免费 |