120.部署harbor以及使用harbor

部署harbornode

在kubernetes中使用harborlinux

 

 

 

 

harbor是一個離線的鏡像,最終會造成一個容器,跑起來。而咱們把這個容器做爲咱們的倉庫。只不過部署的時候使用docker-composenginx

cs架構,須要搭建一個服務器git

咱們要在k8s中使用這個harbor,好比我要建立一個pod,那這個pod引用的images就是從harbor這下載的。github

(第9步驟開始)那此時你要在k8s中使用這個harbor,要在k8s中建立一個安全機制,讓這些node節點知道這個harbor是誰,而且要知道harbor的用戶及密碼是誰web

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

審計日誌等。vim

一. 手動部署harborapi

1. 下載最新的docker-compose二進制文件瀏覽器

# curl -L https://github.com/docker/compose/releases/download/1.22.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose

# chmod +x /usr/bin/docker-compose

2. 下載harbor離線安裝包

github地址 https://github.com/goharbor/harbor/releases #下載的是1.6的

# wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0-rc3.tgz #linux上下載太慢了。去瀏覽器上下載1.6的

# tar zxvf harbor-offline-installer-v1.6.0-rc3.tgz

3. 準備ca證書(建議你們購買一個便宜的域名,並去申請一個免費的ssl證書)

若是不想購買域名,那就本身手動生成ca證書吧,能夠參考這個文檔

(https://coding.net/u/aminglinux/p/nginx/git/blob/master/ssl/key.md )

免費ssl證書 https://freessl.org/

在安裝他以前要準備一套ca證書。在這有提供一個harbor.yuankedeu.com這個域名的證書(連接:https://pan.baidu.com/s/1FWNWKaGmo9jUql9cgo-1PQ 提取碼:e4oh),能夠直接用,下載這個包,裏面有key文件還有crt文件。若是想用本身的域名,就去購買一個便宜的域名,到 https://freessl.org/去申請一個免費的ca證書(能夠用一年)。線上的話更定是要購買合格的證書

不想購買就手動生成去(參考上面那個連接文檔手動生成ca證書),可是這種不合規,訪問的時候須要讓瀏覽器把它加入白名單,才能夠正常訪問

 

4. 安裝harbor

# cd harbor

編輯配置文件

# vim harbor.cfg

1)定義hostname(如 harbor.yuankeedu.com)

2)定義ui_url_protocol爲https

3)定義ssl_cert/ssl_key

4)定義harbor_admin_password

安裝

# sh install.sh //自動安裝完成

#docker-compose down 能夠將所有的容器關閉

#docker-compose up -d 將所有的容器開啓,-d後臺啓動

5. 訪問

https://harbor.yuankeedu.com #要寫host,後者訪問ip

admin 默認密碼爲 Harbor12345 #實驗中修改的密碼爲Harbor-abc1

6. 建立項目

會在這個項目了添加一個鏡像,把這個鏡像搞過來

7. 拉取公共鏡像

docker pull tomcat

docker tag tomcat harbor.yuankeedu.com/aminglinux/tomcat:latest #axin實驗的時候須要執行這一步才能夠

8. 把tomcat鏡像推送到harbor

# docker login https://harbor.yuankeedu.com

輸入用戶名和密碼

# docker push harbor.yuankeedu.com/aminglinux/tomcat:latest #執行此步驟就能夠將鏡像推上去了

擴展: 鏡像複製,參考 https://blog.csdn.net/aixiaoyang168/article/details/73549898

問題: x509: certificate signed by unknown authority

1) echo -n | openssl s_client -showcerts -connect harbor.yuankeedu.com:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-bundle.trust.crt

2)systemctl restart docker

3)docker-compose up -d

若是以上步驟沒法解決該問題,嘗試使用如下步驟:

# mkdir -p /etc/docker/certs.d/harbor.yuankeedu.com

# vim /etc/docker/certs.d/harbor.yuankeedu.com/ca.crt //內容以下(注意,這個只針對harbor.yuankedu.com域名的,這個其實就是免費的ca證書壓縮包裏的ca文件內容)

-----BEGIN CERTIFICATE-----

MIIErjCCA5agAwIBAgIQBYAmfwbylVM0jhwYWl7uLjANBgkqhkiG9w0BAQsFADBh

MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3

d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD

QTAeFw0xNzEyMDgxMjI4MjZaFw0yNzEyMDgxMjI4MjZaMHIxCzAJBgNVBAYTAkNO

MSUwIwYDVQQKExxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMR0wGwYDVQQL

ExREb21haW4gVmFsaWRhdGVkIFNTTDEdMBsGA1UEAxMUVHJ1c3RBc2lhIFRMUyBS

U0EgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgWa9X+ph+wAm8

Yh1Fk1MjKbQ5QwBOOKVaZR/OfCh+F6f93u7vZHGcUU/lvVGgUQnbzJhR1UV2epJa

e+m7cxnXIKdD0/VS9btAgwJszGFvwoqXeaCqFoP71wPmXjjUwLT70+qvX4hdyYfO

JcjeTz5QKtg8zQwxaK9x4JT9CoOmoVdVhEBAiD3DwR5fFgOHDwwGxdJWVBvktnoA

zjdTLXDdbSVC5jZ0u8oq9BiTDv7jAlsB5F8aZgvSZDOQeFrwaOTbKWSEInEhnchK

ZTD1dz6aBlk1xGEI5PZWAnVAba/ofH33ktymaTDsE6xRDnW97pDkimCRak6CEbfe

3dXw6OV5AgMBAAGjggFPMIIBSzAdBgNVHQ4EFgQUf9OZ86BHDjEAVlYijrfMnt3K

AYowHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQD

AgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAG

AQH/AgEAMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3Au

ZGlnaWNlcnQuY29tMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2lj

ZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwTAYDVR0gBEUwQzA3Bglg

hkgBhv1sAQIwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29t

L0NQUzAIBgZngQwBAgEwDQYJKoZIhvcNAQELBQADggEBAK3dVOj5dlv4MzK2i233

lDYvyJ3slFY2X2HKTYGte8nbK6i5/fsDImMYihAkp6VaNY/en8WZ5qcrQPVLuJrJ

DSXT04NnMeZOQDUoj/NHAmdfCBB/h1bZ5OGK6Sf1h5Yx/5wR4f3TUoPgGlnU7EuP

ISLNdMRiDrXntcImDAiRvkh5GJuH4YCVE6XEntqaNIgGkRwxKSgnU3Id3iuFbW9F

UQ9Qqtb1GX91AJ7i4153TikGgYCdwYkBURD8gSVe8OAco6IfZOYt/TEwii1Ivi1C

qnuUlWpsF1LdQNIdfbW3TSe0BhQa7ifbVIfvPWHYOu3rkg1ZeMo6XRU9B4n5VyJY

RmE=

# chmod 400 /etc/docker/certs.d/harbor.yuankeedu.com/ca.crt

# systemctl restart docker

 

 

二. 在kubernetes中使用harbor

9. 在kubernetes中使用harbor

如下操做在master上執行:

1)建立secret #可理解爲存放密碼的媒介,咱們能夠把harbor對應的用戶名和密碼存放在這個裏面,以後咱們全部的節點就均可以使用用戶名和密碼了

# kubectl create secret docker-registry my-secret --docker-server=harbor.yuankeedu.com --dockerusername=admin --docker-password=Harbor12345 #my-secret名字自定義

建立完成後,能夠用如下命令查看:

# kubectl get secret

2)定義一個pod

首先,須要在harbo私有倉庫裏推送一個httpd的鏡像,地址爲harbor.yuankeedu.com/aminglinux/httpd:latest

# docker pull httpd #提早推到harbor上去,好下一步引用下載地址

# docker tag httpd harbor.yuankeedu.com/aminglinux/httpd:latest

# docker login https://harbor.yuankeedu.com

# docker push

而後再定義yaml文件

# vim httpd.yaml //內容以下

apiVersion: v1

kind: Pod

metadata:

name: httpd-pod

spec:

containers:

- image: harbor.yuankeedu.com/aminglinux/httpd:latest #此處的下載地址就是harbor

name: httpd-pod

imagePullSecrets: #在這就引用了secret,此處若是不引用。上面的images是沒辦法下載的

- name: my-secret

# kubectl create -f httpd.yaml

# kubectl describe pod httpd-pod //查看pod建立過程的信息,可能會存在問題

若是建立pod的時候依然出現509的錯誤,是由於在分配節點的時候,這個幾點上並無認證證書,就是第8步驟,ca文件要寫入到哪一個文件裏去。因此要在全部的節點上,認證ca證書

總結:

首先要建立secret(登記harbor服務器地址、用戶名、密碼。可建立多個)

而後建立pod(或者建立rc或者deploy)的時候,指定這個參數(對應的用戶的secret)

 

二. 利用kubeasz項目部署(1.6.0版本的harbor並未實驗成功,你們能夠嘗試作一下)

1)下載docker-compose二進制文件,更名後把它放到項目/etc/ansible/bin/目錄下

wget https://github.com/docker/compose/releases/download/1.18.0/docker-compose-Linux-x86_64

mv docker-compose-Linux-x86_64 /etc/ansible/bin/docker-compose

2)下載habor安裝文件

github地址 https://github.com/goharbor/harbor/releases

wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0-rc3.tgz

3)因爲ansible解壓的一些問題,須要將官方的tgz包,從新打包爲zip包

tar zxf harbor-offline-installer-v1.6.0-rc3.tgz

zip -r harbor-offline-installer-v1.6.0-rc3.zip harbor

mv harbor-offline-installer-v1.6.0-rc3.zip /etc/ansible/down/harbor-offline-installer-v1.6.0.zip

4)在deploy節點編輯/etc/ansible/hosts文件

5)在deploy節點執行

vim /etc/ansible/roles/harbor/defaults/main.yml //修改版本號

相關文章
相關標籤/搜索