Kubernetes部署GitLab

1.下載相應文件node

# mkdir gitlab && cd gitlab
# vim url.txt             
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/gitlab-ns.yaml
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/redis-svc.yaml
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/redis-rc.yaml
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/postgresql-svc.yaml
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/postgresql-rc.yaml
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/gitlab.rb
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/gitlab-svc.yaml
https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/gitlab/gitlab-rc.yaml
# vim download.sh
#!/bin/bash
if command -v wget >/dev/null 2>&1
then
  echo 'Exists wget' 
else
  echo "Wget command not installed"
  yum -y install wget
fi

file=/root/gitlab/url.txt

Num=`awk 'END{print NR}' $file` 
echo Total: $Num URLs

  cat $file | while read line
do
  wget -c -i $file
done


2.部署 Namepacegit

# kubectl create -f gitlab-ns.yaml


3.部署 Redis
github

# kubectl create -f redis-svc.yaml 
# kubectl create -f redis-rc.yaml


4.部署 PostgreSQL
web

# kubectl create -f postgresql-svc.yaml 
# kubectl create -f postgresql-rc.yaml


5.部署 GitLabredis

A.建立 ConfigMapsql

# vim gitlab.rb
gitlab_rails['gitlab_email_enabled'] = true    
gitlab_rails['gitlab_email_from'] = "wangzhijiansd@qq.com"    
gitlab_rails['smtp_enable'] = true    
gitlab_rails['smtp_address'] = "smtp.qq.com"    
gitlab_rails['smtp_port'] = 465    
gitlab_rails['smtp_user_name'] = "wangzhijiansd@qq.com"    
gitlab_rails['smtp_password'] = "**********"    
gitlab_rails['smtp_domain'] = "zhi.io"    
gitlab_rails['smtp_authentication'] = "login"    
gitlab_rails['smtp_enable_starttls_auto'] = true    
gitlab_rails['smtp_openssl_verify_mode'] = "peer"    
gitlab_rails['smtp_tls'] = true    

prometheus['monitor_kubernetes'] = true    
prometheus['listen_address'] = '0.0.0.0:9090'    
node_exporter['enable'] = true    
redis_exporter['enable'] = true    
postgres_exporter['enable'] = true    
gitlab_monitor['enable'] = true

注:如上gitlab.rb配置上半部分實現發送郵件功能,下半部分配置了prometheus採集相關信息。docker

gitlab_rails['smtp_password']配置的是郵箱受權碼,不是郵箱密碼,開啓SMTP後,163郵箱會讓你本身配置受權碼,而QQ郵箱是自動生成的受權碼,謹記。
數據庫


# kubectl -n gitlab create configmap gitlab-rb --from-file=gitlab.rb
# kubectl -n gitlab describe configmap gitlab-rb
Name:         gitlab-rb
Namespace:    gitlab
Labels:       <none>
Annotations:  <none>

Data
====
gitlab.rb:
----
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "wangzhijiansd@qq.com"
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "wangzhijiansd@qq.com"
gitlab_rails['smtp_password'] = "**********"
gitlab_rails['smtp_domain'] = "zhi.io"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = "peer"
gitlab_rails['smtp_tls'] = true

prometheus['monitor_kubernetes'] = true
prometheus['listen_address'] = '0.0.0.0:9090'
node_exporter['enable'] = true
redis_exporter['enable'] = true
postgres_exporter['enable'] = true
gitlab_monitor['enable'] = true

Events:  <none>


B.部署 Gitlabvim

# kubectl create -f gitlab-svc.yaml
# kubectl create -f gitlab-rc.yaml

關於gitlab-rc.yaml配置的幾點註釋:
bash

  • GITLAB_SECRETS_OTP_KEY_BASE 用於加密數據庫中的2FA祕密。若是您丟失或輪換此密碼,則您的全部用戶都沒法使用2FA登陸。

  • GITLAB_SECRETS_DB_KEY_BASE 用於加密數據庫中的CI密鑰變量以及導入憑證。若是丟失或輪換此祕密,您將沒法使用現有的CI祕密。

  • GITLAB_SECRETS_SECRET_KEY_BASE 用於密碼重置連接和其餘「標準」身份驗證功能。若是丟失或輪換此密碼,電子郵件中的密碼重置令牌將重置。

   注:可使用pwgen -Bsv1 64命令生成隨機字符串並將其指定爲如上值。

  • GITLAB_ROOT_PASSWORD配置GitLab的root密碼。

  • GITLAB_ROOT_EMAIL配置GitLab的root用戶的Email。

  • 重要:因爲加上探針,pod沒法啓動,這裏我去掉了探針,很鬱悶。


C.查看 Pod 和 Services

# kubectl -n gitlab get pod
NAME               READY     STATUS    RESTARTS   AGE
gitlab-jmwbr       1/1       Running   0          1h
postgresql-k9p4s   1/1       Running   0          1h
redis-rxlqc        1/1       Running   0          1h
# kubectl -n gitlab get services
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                    AGE
gitlab       LoadBalancer   10.244.85.204    <pending>     80:41008/TCP,22:30270/TCP,9090:34210/TCP   1h
postgresql   ClusterIP      10.244.130.245   <none>        5432/TCP                                   1h
redis        ClusterIP      10.244.158.130   <none>        6379/TCP                                   1h

注:gitlab下載鏡像和初始化較久,畢竟鏡像就1個多G,因此請耐心等待幾分鐘,以後使用NodeIP:41008便可進入GitLab的web界面,使用nodeIP:34210便可進入Prometheus界面。

6.這裏我配置了traefik,且使用了Google Chrome的自動翻譯功能,實際gitlab並無中文版

QQ截圖20180827163948.png

這裏輸入如上配置的root賬號wangzhijiansd@qq.com和密碼wangzhijian便可登陸root用戶。


以下建立一個新用戶

QQ截圖20180827164738.png

普通用戶界面以下

QQ截圖20180827165018.png

測試忘記密碼功能

QQ截圖20180827165147.png

QQ截圖20180827165244.png

登陸郵箱查看是否收到

QQ截圖20180827165503.png

點擊「Reset password」,可是因爲環境關係並不能跳轉訪問,以下:

http://gitlab-qgb77/users/password/edit?reset_password_token=HzupUf56ymL2gs12ApPf

這裏將gitlab-qgb77更改成環境中的地址便可:

QQ截圖20180827170411.png

這時候就能夠更改密碼了,更改完成後系統會發送郵件提示密碼已成功更改。

QQ截圖20180827170608.png

如今就能夠建立項目了。


附註:

https://github.com/sameersbn/docker-gitlab

https://github.com/zhijiansd/ansible-k8s/tree/master/addons/gitlab

相關文章
相關標籤/搜索