一、背景
受疫情影響,已經在家強制事假一個月了,除了刷簡歷外就是在家學習,閑來無事,最近買了幾個樹莓派4B的板子回來,准備用樹莓派搭建個自動部署的平台和微服務示例,長話短說,節約時間,直接進入正題吧
二、樹莓派系統安裝
一開始我是在華為雲下的centos,后來發現各種問題(無法連接5Gwifi等),畢竟樹莓派是arm的cpu,很多東西不沒法下,網上找了找,發現Debian-Pi-Aarch64這款系統不錯,於是就下載了,有需要的自行下載,地址是:https://gitee.com/openfans-community/Debian-Pi-Aarch64/blob/master/README_zh.md
我選擇的是:基礎系統Plus++(無桌面加強版)
每個版本支持什么請看上圖,系統下載好后,燒卡和寫入sd卡這一步就不說了,不清楚如何燒卡寫sd卡的請自行百度,寫完卡后記得在boot盤符里創建一個空的ssh文件,不帶后綴,然后找到wpa_supplicant.conf ,自行去掉注釋,然后修改成你的wifi密碼。
做完上面的步驟后,將卡插入樹莓派,通電啟動等待一分鍾左右吧,第一次使用系統會自動重啟三次,反正我沒管,就放那等了一分鍾左右的樣子,然后通過pc直接ssh連接過去了。
系統默認賬戶:pi ,默認密碼:raspberry,默認賬戶pi賬戶支持ssh登錄,root賬戶密碼請登陸后使用命令 “sudo passwd root” 執行設置密碼,同時可以修改pi的默認密碼,或使用命令 “sudo -i” 來切換到root用戶。接着開啟Web可視化管理界面、Docker服務、和CecOS CaaS 容器雲管理平台 登錄界面
Docker容器
手動開啟:systemctl start docker.service
手動停止:systemctl stop docker.service
啟用開機啟動:systemctl enable docker.service
禁用開機啟動:systemctl disable docker.service
CecOS CaaS容器雲(服務端口:8443)
手動開啟:systemctl start cecos-caas.service
手動停止:systemctl stop cecos-caas.service
啟用開機啟動:systemctl enable cecos-caas.service
禁用開機啟動:systemctl disable cecos-caas.service
WebGUI管理平台(服務端口:9090)
手動開啟:systemctl start cockpit.socket
手動停止:systemctl stop cockpit.socket
啟用開機啟動:systemctl enable cockpit.socket
禁用開機啟動:systemctl disable cockpit.socket
Web SSH客戶端(服務端口:4200)
手動開啟:systemctl start shellinabox.service
手動停止:systemctl stop shellinabox.service
啟用開機啟動:systemctl enable shellinabox.service
禁用開機啟動:systemctl disable shellinabox.service
注意:要啟用CecOS CaaS容器雲服務,必須要先啟用和啟動docker服務!!
因為啟動了WebGUI管理平台(服務端口:9090),所以個人認為沒必要在啟動Web SSH客戶端(服務端口:4200)了
相關賬號密碼
1.Web可視化管理界面
登錄地址 https://你樹莓派的IP地址:9090
說明:請使用系統默認賬戶pi登錄
2.CecOS CaaS 容器雲管理平台 登錄界面
登錄地址 https://你樹莓派的IP地址:8443
說明:默認管理賬戶 admin , 默認密碼:password 。請登錄后立即修改默認密碼!!
特別注意CecOS CaaS 容器雲管理平台的默認管理賬戶 admin , 默認密碼:password 。請登錄后立即修改默認密碼!
基本上這一步系統已經配置完成。
三、部署gitlab、Jenkins、Consul
由於樹莓派是arm的cpu,所以如果你想找需要的docker鏡像的話可以在 https://hub.docker.com/ 中查找,不過記得在Architectures中勾選ARM和ARM64,這樣查出來的鏡像文件即為ARM的鏡像了,千萬別下載x86的了,不然運行起來會報如下錯誤:
[91mstandard_init_linux.go:211: exec user process caused "exec format error"
先下ARM64為的gitlab,這里我選擇的是ulm0/gitlab(搜索的時候記得勾選“ARM” 和“ARM64”)
點擊進入詳情,在左邊有docker下載鏡像的命令
docker pull ulm0/gitlab
docker 鏡像下載好后,我是直接使用命令進行安裝的,命令如下:
::安裝gitlab
docker run -d \
--hostname gitlab \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.31.4/'; gitlab_rails['lfs_enabled'] = true;" \
-p 9443:443 -p 8081:8081 -p 220:220 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
ulm0/gitlab
這里的 192.168.31.4 IP是樹莓派宿主機的IP,就是你安裝好樹莓派系統后的ip地址,替換成你自己的IP即可,然后我將將gitlab的443、80和20端口都修改了,其中80和20端口的修改相對較麻煩,先使用命令查看目前的docker容器id
docker ps -a
然后使用docker exec -it c47cf283915f bash
進入到gitlab容器,進入容器后cd進入到/etc/gitlab,cd /etc/gitlab
,然后vi gitlab.rb
,然后按i,進入到編輯模式,修改如下幾處:
修改gitlab.rb
路徑: /opt/gitlab/etc/gitlab.rb,這個文件用於gitlab如何調用80和8080的服務等。
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
external_url 'http://192.168.31.4:8081' ##192.168.31.4 IP為樹莓派宿主IP,自行修改自己IP
##! Note: During installation/upgrades, the value of the environment variable
##! EXTERNAL_URL will be used to populate/replace this value.
##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
# external_url 'GENERATED_EXTERNAL_URL'
################################################################################
################################################################################
## Configuration Settings for GitLab CE and EE ##
################################################################################
################################################################################
################################################################################
## gitlab.yml configuration
##! Docs: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/gitlab.yml.md
################################################################################
gitlab_rails['gitlab_ssh_host'] = '192.168.31.4'
# gitlab_rails['gitlab_ssh_user'] = ''
# gitlab_rails['time_zone'] = 'UTC'
### Wait for file system to be mounted
###! Docs: https://docs.gitlab.com/omnibus/settings/configuration.html#only-start-omnibus-gitlab-services-after-a-given-filesystem-is-mounted
# high_availability['mountpoint'] = ["/var/opt/gitlab/git-data", "/var/opt/gitlab/gitlab-rails/shared"]
### GitLab Shell settings for GitLab
gitlab_rails['gitlab_shell_ssh_port'] = 220
# gitlab_rails['gitlab_shell_git_timeout'] = 800
設置gitlab的發送郵箱
### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "發送郵件@qq.com"
gitlab_rails['smtp_password'] = "發送郵件密碼"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "發送郵件@qq.com"
###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
修改gitlab 下的nginx
路徑: /var/opt/gitlab/nginx/conf/gitlab-http.conf,這個文件是gitlab內置的nginx的配置文件,里面可以影響到nginx真實監聽端口號。
###################################
## configuration ##
###################################
server {
listen *:8081; ##這里默認是80
server_name 192.168.31.4; ##這里用樹莓派宿主的IP
## 其他的配置不變
## ....
## ....
## 其他的配置不變
if ($http_host = "") {
set $http_host_with_default "192.168.31.4:8081"; ## IP設置為樹莓派宿主IP
}
修改gitlab后,運行gitlab-ctl reconfigure
使其修改后的配置生效。
最后等待幾分鍾后,局域網內用另一台電腦訪問 http://192.168.31.4:8081/ 即可訪問