摘要:主機端口非常昂貴,因此稍后我們會使用一個負載均衡器。注冊完成后,將的配置添加到負載均衡器上。部署負載均衡器在棧中,單擊添加服務旁邊的下拉菜單,然后選擇添加負載均衡器。如果你收到狀態或的錯誤報告,那么需要檢查負載均衡器配置,確認設置無誤。
介紹
GitLab核心是集成管理Git存儲庫的工具。比如你希望創建一個提供服務的平臺,那么GitLab將提供強大的身份驗證和授權機制、工作組、問題跟蹤、wiki和片段,除此之外還有公有、內部和私有存儲庫。
GitLab強大之處在于,它包含強大的持續集成(CI)引擎和Docker容器鏡像倉庫,讓使用者從開發到發布都使用相同的實用工具。它還有兩個更強大的開源軟件實用工具:Prometheus負責監控,Mattermost負責和團隊溝通。該平臺有著堅實的API并能和多個現有第三方系統集成,如:JIRA,Bugzilla,Pivotal,Slack,HipChat,Bamboo等。
這里就有這樣一個疑問:為什么使用GitLab而不是直接使用SaaS 服務?答案只是個人品味而已。對大多數人來說,向SaaS提供商購買其提供的服務是一個很好的解決方案。你可以專注于搭建你的應用程序,讓他們去操心維護這些工具。而如果你已擁有的基礎設施有備用容量怎么辦?如果你只想私有化存儲庫而不想為該權限付費時該怎么辦?如果你想運用你的數學頭腦由自己托管來省錢該怎么辦?如果你只想擁有你自己的數據該怎么辦?
由內部提供服務可以讓你有更多的時間管理它們并讓它們之間相互通信來消除風險,這就是GitLab的出眾之處。僅需要一次點擊和幾分鐘的配置,你就可以啟動并運行一個完整的解決方案。
部署GitLabRancer的Catalog包含了安裝最新版GitLab CE的條目。它假設你有一個主機,希望為HTTP/HTTPS直接打開80和443端口,并且打開一個端口映射到容器內的22端口。
Catalog條目會根據你提供的值設置環境變量GITLAB_OMNIBUS_CONFIG。然后GitLab在發布時將這些值并入配置。對于非常基本的GitLab部署,Catalog提供的選擇是完全足夠的,不過我仍希望向你展示更多的內容…
在本教程中,我們將部署GitLab CE,不過我們不會打開任何端口。主機端口非常昂貴,因此稍后我們會使用一個負載均衡器。我們將配置HTTPS和Docker Registry,并將其與Rancher配合使用。
1.創建一個名為gitlab的新應用
2.向gitlab應用添加一個服務
Image: gitlab/gitlab-ce:latest
Volumes:
gitlab-etc:/etc/gitlab
gitlab-opt:/var/opt/gitlab
gitlab-log:/var/log/gitlab
Networking
Set a specific host name: git
Health Check
HTTP: Port 80
Path: GET /HTTP/1.0
3.向postfix服務中添加一個配對
Image: tozd/postfix
Environment:
MY_NETWORKS:10.42.0.0/16, 127.0.0.0/8
ROOT_ALIAS: you@yourdomain.com
Volumes:
postfix-log:/var/log/postfix
postfix-spool:/var/spool/postfix
Health Check:
TCP: Port 25
運行之前,你還需完成幾個選項來配置GitLab:
將所有的GitLab變量添加到GITLAB_OMNIBUS_CONFIG
稍后設置所有變量
對于首次使用的用戶來說,我建議選擇第二項。GitLab提供的gitlab.rb文件在默認設置下文檔已經很豐富,如果你之前沒有接觸過GitLab,參考這份文件就可以得到大量功能的說明介紹。
接著,單擊Launch鍵,Rancher將抓取鏡像并呈現給你。
設置SSL卸載Rancher在抓取鏡像的時候,我們來用HTTPS添加一個負載均衡器。為此,我們首先要創建一個LetsEncrypt容器,然后將其添加到負載均衡器中,等待證書注冊。注冊完成后,將GitLab的配置添加到負載均衡器上。
在這個例子中,我將使用域名“example.com”,GitLab的主機名設置為“git”,Docker Registry的主機名設置為“regitstry”。在執行下一步前需確保你已經將相應的記錄添加到DNS區域文件中,且這些記錄均指向運行均衡器的主機。(PS:這里需要簽的域名必須是公網可解析)
部署LetsEncrypt
從Rancher社區Catalog中,選擇LetsEncrypt服務。接受第一個下拉列表中的TOS,然后按以下設置準備HTTP驗證:
你的Email地址: you@yourdomain.com
證書名: gitlab
域名: git.example.com,registry.example.com
域驗證方法: HTTP
單擊Launch以發布容器。現在開始你有120秒來完成下一步。
部署負載均衡器
在gitlab棧中,單擊“添加服務”旁邊的下拉菜單,然后選擇添加負載均衡器。給它取個名字,接著添加下面的服務選擇器。另外,如果你已經有了一個負載均衡器的環境,編輯它,添加下面的服務。
Public / HTTP
Port: 80
Path: /.well-known/acme-challenge
Target: letsencrypt
Port: 80
單擊“編輯”保存你所做的變更。
監控LetsEncryt容器的日志,兩分鐘后,就可以獲得它已經注冊了兩個域的證書的報告。如果你收到狀態403或503的錯誤報告,那么需要檢查負載均衡器配置,確認設置無誤。LetsEncrypt容器將重新啟動并繼續嘗試注冊證書。注冊成功后,你就可以在Rancher界面中的基礎設施選項卡中找到該證書。
到這為止我們已經準備好通過負載均衡器向GitLab添加SSL支持:
1.編輯負載均衡器
2.添加以下服務規則:
Public / HTTP
Host: git.example.com
Port: 80
Target: gitlab
Port: 80
Public / HTTPS
Host: git.example.com
Port: 443
Target: gitlab
Port: 80
Public / HTTPS
Host: registry.example.com
Port: 443
Target: gitlab
Port: 80
Public / TCP
Port: 2222
Target: gitlab
Port: 22
3.單擊“編輯”保存你所做的更改。
配置GitLabGitLab的配置保存在容器中的/etc/gitlab/gitlab.rb下。當我們啟動服務時,我們創建了一個Docker卷用于持久化存儲這些數據。在Rancher中,找到你的GitLab容器,使用Execute Shell登錄。將存儲地址改為/etc/gitlab,然后編輯gitlab.rb。
在gitlab.rb中有很多變量可以調整GitLab的行為。這里每一個部分都包含了一個指向GitLab文檔的鏈接,文檔描述了該服務的功能以及每個變量的調整。
在本教程中,需要找到以下變量,更改或者取消它們的注釋:
external_url ‘https://git.example.com’ gitlab_rails["gitlab_ssh_host"] = "git.example.com’ gitlab_rails["gitlab_email_enabled"] = true gitlab_rails["gitlab_email_from"] = "git@example.com" gitlab_rails["gitlab_email_display_name"] = "Gitlab" gitlab_rails["gitlab_email_reply_to"] = "noreply@example.com" gitlab_rails["gravatar_plain_url"] = "https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon" gitlab_rails["gravatar_ssl_url"] = "https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon" gitlab_rails["gitlab_shell_ssh_port"] = 2222 gitlab_rails["smtp_enable"] = true gitlab_rails["smtp_address"] = "postfix" gitlab_rails["smtp_port"] = 25 gitlab_rails["smtp_domain"] = "yourdomain.com" gitlab_rails["smtp_authentication"] = false gitlab_rails["smtp_enable_starttls_auto"] = false gitlab_rails["manage_backup_path"] = true gitlab_rails["backup_path"] = "/var/opt/gitlab/backups" gitlab_rails["backup_archive_permissions"] = 0644 gitlab_rails["backup_pg_schema"] = "public" gitlab_rails["backup_keep_time"] = 604800 registry_external_url "https://registry.example.com’ gitlab_rails["registry_enabled"] = true gitlab_rails["registry_host"] = "registry.example.com" gitlab_rails["registry_api_url"] = "http://localhost:5000" gitlab_rails["registry_key_path"] = "/var/opt/gitlab/gitlab-rails/certificate.key" gitlab_rails["registry_path"] = "/var/opt/gitlab/gitlab-rails/shared/registry" gitlab_rails["registry_issuer"] = "omnibus-gitlab-issuer" registry["enable"] = true registry["token_realm"] = "https://git.example.com" nginx["listen_port"] = 80 nginx["listen_https"] = false nginx["proxy_set_headers"] = { "Host" => "$http_host_with_default", "X-Real-IP" => "$remote_addr", "X-Forwarded-For" => "$proxy_add_x_forwarded_for", "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on", "Upgrade" => "$http_upgrade", "Connection" => "$connection_upgrade" } registry_nginx["enable"] = true registry_nginx["listen_port"] = 80 registry_nginx["listen_https"] = false registry_nginx["proxy_set_headers"] = { "Host" => "$http_host", "X-Real-IP" => "$remote_addr", "X-Forwarded-For" => "$proxy_add_x_forwarded_for", "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" } registry_nginx["custom_gitlab_server_config"] = "proxy_cache_convert_head off;"
在這些變量變更之后,意味著以下工作你已經完成了:
為你的Git URLs設置主機名
配置GitLab將HTTP反向到HTTPS
啟用HTTP和HTTPS兩者的HTTPS gravatar URLs(在避免內容混合的錯誤時是必要的)
將報告的SSH端口設為2222
激活來自GitLab的郵件
通過Postfix助手啟動郵件傳遞
激活一個星期保留期的夜間備份
啟用容器registry
激活GitLab的配置和必需的標題,讓GitLab知道它是在SSL負載均衡器之后
保存此文件,接著輸入gitlab-ctl reconfigure,按Enter鍵重新配置GitLab。GitLab將重建它的配置,重啟那些需要的服務。
登錄現在你已經準備好了!在你的瀏覽器中輸入https://git.example.com,會出現一個要求你輸入密碼的界面。這里默認用戶是root,如果你設置了密碼,系統將要求你重新登錄。
恭喜你!你有了一個正在運行的GitLab實例!
現在還有一些需要我們從GitLab內部做的工作來鞏固它,請你接著讀下去。
鎖定它我建議你去做以下變更操作:
更改root用戶名以root身份登錄任何內容都是不安全的,因為該用戶名是一個眾所周知的目標。現在你是以唯一的用戶身份登錄進來的,那么第一件事就是更改你的用戶名。
點擊位于右上角、在搜索欄旁邊的扳手圖標
在中間列的底部選擇管理員
選擇右上角的編輯按鈕
更改你的名字、用戶名和郵箱地址
向下滾動并單擊“保存更改”
管理員賬戶的舊郵箱地址是admin@example.com,更改此信息只是嘗試向該賬戶發送電子郵件來通知這些更改。我敢相信example.com郵箱的人會吃驚于他們收到的電子郵件數。
返回Rancher,找到你的postfix容器和Execute Shell
輸入mailq,按下Enter鍵。你應該看到延遲的郵件在隊列中,注意ID
輸入postsuper –d
下一步的更改將使Internet不再接管你的新GitLab實例,也不能再將其用于惡意的目的。
再次點擊扳手圖像,返回到管理控制臺
點擊右上角齒輪圖標的下拉菜單,選擇設置
你可以根據需要調整其中任意一項,但你需要禁用在Sign-up Restrictions下的Sign-up enabled默認值
檢查你的端口在這個例子中,我們使用了80、443、2222端口。GitLab不需要主機上的其他端口,不過2222端口并不是通用端口。你需要確認你已經在防火墻中打開了它(2222端口)。
這會有一個很棒的GitLab安裝過程。你可以立即為你的項目啟動它。是的,在GitLab中還有很多事情要做!
添加你的SSH密鑰盡管你可以通過HTTPS使用GitLab,然而使用SSH指令執行則更為常見。在執行此操作之前,需要將你的SSH公鑰添加到GitLab,這樣它會識別你的身份。如果你沒有SSH密鑰,你可以用下列代碼制作一個(Linux或Mac系統上):
ssh-keygen -b 2048
盡可能使用密碼口令確保安全——你的密鑰有以特權用戶身份登錄的權限,如果筆記本電腦遭到入侵,你也不愿為攻擊者提供訪問級別。(如果你不想使用密碼口令或處理SSH代理,請訪問https://krypt.co上優秀的Kryptonite項目)
使用默認值(或選擇新的密鑰名稱)保存,接著在GitLab中:
點擊右上角的頭像旁邊的下拉菜單,選擇設置,然后選擇SSH密鑰
將你的公鑰(.pub文件中的內容)粘貼到打開頁面的框中
很快我們將發布該系列的第二部分,其中將介紹如何使用GitLab CI Multi-Runner構建容器,以及如何使用GitLab容器registry配置項目。除此之外,我們還將涉及如何用GitLab CI建立容器并部署到Rancher上。
9月27日,北京海航萬豪酒店,容器技術大會Container Day 2017即將舉行。
CloudStack之父、海航科技技術總監、華為PaaS部門部長、恒豐銀行科技部總經理、阿里云PaaS工程總監、民生保險CIO······均已加入豪華講師套餐!
11家已容器落地企業,15位真·云計算大咖,13場純·技術演講,結合實戰場景,聚焦落地經驗。免費參會+超高規格,詳細議程及注冊鏈接請戳
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26982.html
摘要:第一部分的內容介紹了如何部署配置和確保在的運行。這一部分中,我們將介紹如何使用構建容器,以及如何使用容器配置項目。除此之外,我們還將涉及如何用建立容器并部署到上。 這是我們使用GitLab和Rancher構建CI/CD流水線系列教程的第二部分。第一部分的內容介紹了如何部署、配置和確保GitLab在Rancher的運行。這一部分中,我們將介紹如何使用GitLab CI Multi-Run...
摘要:從開始,部署管理的集群時,默認情況下會啟用授權群集端點功能。我們將首先在中創建一個新項目,該項目將使用功能與我們的集群集成。完成后單擊創建項目。這不僅意味著已被設為默認值,還能夠觸發構建。例如,負載均衡選項卡顯示已部署的以及創建的主機名。 介 紹 在這篇文章中,我們將介紹如何將GitLab的Auto DevOps功能與Rancher管理的Kubernetes集群連接起來,利用Ranch...
摘要:來自硅谷的企業級容器管理平臺提供商今日正式發布與企業級容器管理平臺集成的,極簡的操作體驗,強大的功能整合,完全開源,助力在企業的真正落地使用。 來自硅谷的企業級容器管理平臺提供商Rancher Labs今日正式發布與Rancher企業級容器管理平臺集成的Rancher Pipeline,極簡的操作體驗,強大的功能整合,完全開源,助力CI/CD在企業的真正落地使用。 云計算技術的廣泛采用...
摘要:本文作者為的架構師,他分享了使用和建立超高速流水線的經驗。月日,北京海航萬豪酒店,容器技術大會即將舉行。 Higher Education(highereducation.com)是一個連接學生與高校的入學申請平臺,通過引入高意圖和高質量的潛在學生,以及明確、有效的操作,為網站合作的大學吸引學生入學。每年Higher Education為其大學合作伙伴招收超過15000名在線學生入學申...
摘要:內部長期使用來管理代碼。審核通過并且成功后,觸發靜態測試單元測試鏡像構建鏡像部署集成測試等測試通過后,創建一個從到的,由負責人進行審核。從圖中我們可以看到,部分是一個單元測試,預發布部署,集成測試,,提交代碼的循環過程。UCloud內部長期使用 Gitlab 來管理代碼。雖然Gitlab作為一套開源平臺已很優秀,但我們對于其能為CI/CD提供的敏捷性并不十分滿意,內部實踐中的代碼發布周期仍需...
閱讀 1405·2021-11-25 09:43
閱讀 2260·2021-09-27 13:36
閱讀 1114·2021-09-04 16:40
閱讀 1957·2019-08-30 11:12
閱讀 3309·2019-08-29 14:14
閱讀 566·2019-08-28 17:56
閱讀 1320·2019-08-26 13:50
閱讀 1246·2019-08-26 13:29