kubernetes之使用docker快速部署harbor

harbor

Habor是由VMWare中國團隊開源的容器鏡像倉庫。事實上,Habor是在Docker Registry上進行了相應的企業級擴展,從而獲得了更加廣泛的應用,這些新的企業級特性包括:管理用戶界面,基於角色的訪問控制 ,水平擴展,同步,AD/LDAP集成以及審計日誌等

安裝步驟

一. 手動部署

  1. 下載最新的docker-compose二進制文件
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o  /usr/bin/docker-compose 
chmod +x /usr/local/bin/docker-compose
  1. 下載harbor離線安裝包
    (https://github.com/vmware/harbor/releases) 離線安裝
wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.2.tgz
tar zxf harbor-offline-installer-v1.6.2.tgz
  1. 準備ca證書(建議大家購買一個便宜的域名,並去申請一個免費的ssl證書)

如果不想購買域名,那就自己手動生成ca證書吧,可以參考如下:

生成CA根證書
# mkdir /etc/pki/ca_test //創建CA更證書的目錄

# cd /etc/pki/ca_test

# mkdir root server client newcerts  //創建幾個相關的目錄

# echo 01 > serial   //定義序列號爲01

# echo 01 > crlnumber  //定義crl號爲01

# touch index.txt  //創建index.txt

# cd ..

# vi tls/openssl.cnf  //改配置文件
default_ca     = CA_default 改爲 default_ca     = CA_test
[ CA_default ] 改爲 [ CA_test ]
dir             = /etc/pki/CA  改爲  dir             = /etc/pki/ca_test
certificate = $dir/cacert.pem  改爲 certificate   = $dir/root/ca.crt
private_key = $dir/private/cakey.pe 改爲  private_key = $dir/root/ca.key

# openssl genrsa -out /etc/pki/ca_test/root/ca.key  //生成私鑰

# openssl req -new -key /etc/pki/ca_test/root/ca.key -out /etc/pki/ca_test/root/ca.csr   
//生成請求文件,會讓我們填寫一些指標,這裏要注意:如果在這一步填寫了相應的指標,
比如Country Name、State or Province Name、hostname。

# openssl x509 -req -days 3650 -in /etc/pki/ca_test/root/ca.csr -signkey /etc/pki/ca_test/root/ca.key -out /etc/pki/ca_test/root/ca.crt 
//生成crt文件
生成server端證書
# cd /etc/pki/ca_test/server

# openssl genrsa -out server.key   //生成私鑰文件

# openssl req -new -key server.key -out server.csr//生成證書請求文件,填寫信息需要和ca.csr中的Organization Name保持一致

# openssl ca -in server.csr -cert /etc/pki/ca_test/root/ca.crt -keyfile /etc/pki/ca_test/root/ca.key -out server.crt -days 3650  
//用根證書籤名server.csr,最後生成公鑰文件server.crt,此步驟會有兩個地方需要輸入y
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
生成客戶端證書
如果做ssl的雙向認證,還需要給客戶端生成一個證書,步驟和上面的基本一致
# cd /etc/pki/ca_test/client

# openssl genrsa -out  client.key  //生成私鑰文件

# openssl req -new  -key client.key -out client.csr  //生成請求文件,填寫信息需要和ca.csr中的Organization Name保持一致

# openssl ca -in client.csr -cert /etc/pki/ca_test/root/ca.crt -keyfile /etc/pki/ca_test/root/ca.key -out client.crt -days 3650 
//簽名client.csr, 生成client.crt,此步如果出現
failed to update database
TXT_DB error number 2

需執行:
# sed -i 's/unique_subject = yes/unique_subject = no/' /etc/pki/ca_test/index.txt.attr

執行完,再次重複執行簽名client.csr那個操作

免費ssl證書

這兩個網址和騰訊雲都提供免費的ssl服務

https://freessl.org/
https://www.trustocean.com/

  1. 安裝harbor
# cd harbor
編輯配置文件 
# vim harbor.cfg  
1)定義hostname(如 harbor.yuankeedu.com) 
2)定義ui_url_protocol爲https
3)定義ssl_cert/ssl_key 放置好ssl證書,修改路徑
4)定義harbor_admin_password
安裝 # sh install.sh   //自動安裝完成

修改後:

hostname = h.uedu.ml
ui_url_protocol = https
max_job_workers = 10 
customize_crt = on
ssl_cert = /root/harbor/START-uedu-ml.pem
ssl_cert_key = /root/harbor/START-uedu-ml.key
secretkey_path = /data
admiral_url = NA
log_rotate_count = 50
log_rotate_size = 200M
http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,ui,registry
  1. 訪問

    https://h.uedu.ml/
    admin 默認密碼爲 Harbor12345
    enter image description here

enter image description here

  1. 創建項目

kubernetes之使用docker快速部署harbor

  1. 拉取公共鏡像

    docker pull tomcat
    docker tag tomcat h.uedu.ml/aikerlinux/tomcat:latest //打標籤爲上傳做準備

  2. 把tomcat鏡像推送到harbor

    docker login https://h.uedu.ml
    輸入用戶名和密碼
    docker push h.uedu.ml/aikerlinux/tomcat:latest

  3. 在kubernetes中使用harbor

以下操作在master上執行:
1)創建secret

 kubectl create secret docker-registry my-secret --docker-server=h.uedu.ml --docker-username=admin --docker-password=Harbor12345

創建完成後,可以用以下命令查看:

 # kubectl get secret

2)定義一個pod 首先,需要在harbo私有倉庫裏推送一個httpd的鏡像
,地址爲h.uedu.ml/aikerlinux/httpd:latest

docker pull httpd  
docker tag httpd h.uedu.ml/aikerlinux/httpd:latest  
docker login https://h.uedu.ml
docker push h.uedu.ml/aikerlinux/httpd:latest

然後再定義一個部署http pod的yaml文件

[root@master ~]# vim httpd.yaml               
apiVersion: v1
kind: Pod
metadata:
  name: httpd-pod
spec:
  containers:
  - image: h.uedu.ml/aikerlinux/httpd
    name: httpd-pod
  imagePullSecrets:
  - name: my-secret
  # kubectl create -f httpd.yaml 
 #  kubectl describe pod httpd-pod  //查看pod創建過程的信息,可能會存在的問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章