kubernetes實踐之二十八:使用Harbor作為私有映象倉庫

百聯達發表於2018-04-30
一:前言
Harbor使用了基於角色的訪問控制策略,當從Harbor中拉去映象的時候,首先要進行身份認證,認證通過後才可以拉取映象。在命令列模式下,需要先執行docker login,登陸成功後,才可以docker pull。通常情況下,在私有云環境中使用kubernetes時,我們要從docker registry拉取映象的時候,都會給docker daemo配置–insecure-registry屬性來告訴docker daemo我們所使用的docker registry是可信的,這樣才能從私有的docker registry中拉取映象,但是如果要使用Harbor作為kubernetes的映象倉庫的話,這種方式就不適用了,下面讓我們看看如何來使用Harbor作為kubernetes的映象倉庫。
二:Harbor開啟HTTPS配置
1.生成ca證書和金鑰檔案(採用與部署Kubernetes時相同的方式
CA 配置檔案ca-config.json

點選(此處)摺疊或開啟

  1. {
  2. "signing": {
  3.   "default": {
  4.     "expiry": "87600h"
  5.    },
  6.   "profiles": {
  7.      "kubernetes": {
  8.        "usages": [
  9.           "signing",
  10.           "key encipherment",
  11.           "server auth",
  12.           "client auth"
  13.         ],
  14.         "expiry": "87600h"
  15.        }
  16.     }
  17.   }
  18. }
CA證書籤名請求檔案ca-csr.json

點選(此處)摺疊或開啟

  1. {
  2.     "CN": "kubernetes",
  3.     "key": {
  4.         "algo": "rsa",
  5.         "size": 2048
  6.     },
  7.     "names": [
  8.         {
  9.             "C": "CN",
  10.             "L": "BeiJing",
  11.             "ST": "BeiJing",
  12.             "O": "k8s",
  13.             "OU": "System"
  14.         }
  15.     ]
  16. }
生成CA證書和金鑰
cfssl gencert -initca ca-csr.json | cfssljson -bare ca

2.生成harbor的證書和金鑰

簽名請求檔案 harbor-csr.json

點選(此處)摺疊或開啟

  1. {
  2.   "CN": "harbor",
  3.   "hosts": [
  4.     "127.0.0.1",
  5.     "120.79.156.135"
  6.   ],
  7.   "key": {
  8.     "algo": "rsa",
  9.     "size": 2048
  10.   },
  11.   "names": [
  12.     {
  13.       "C": "CN",
  14.       "ST": "BeiJing",
  15.       "L": "BeiJing",
  16.       "O": "k8s",
  17.       "OU": "System"
  18.     }
  19.   ]
  20. }
生成證書和金鑰
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes harbor-csr.json | cfssljson -bare harbor

3.harbor引數配置(harbor.cfg)
ui_url_protocol = https
ssl_cert = /mnt/harbor/ssl/harbor.pem
ssl_cert_key = /mnt/harbor/ssl/harbor-key.pem
verify_remote_cert = off

4.重新啟動harbor
docker-compose down
./install.sh

啟動成功後,可以通過https://ip 訪問UI介面,通過admin進行登入

三:Kubernetes配置Harbor私有映象倉庫

1.harbor ca證書複製
在kUbernetes的所有node節點建立檔案目錄 
mkdir -p /etc/docker/certs.d/harborIp(harbor訪問IP地址)
將前面harbor使用的ca.pem 複製到/etc/docker/certs.d/harborIp
cp ca.pem /etc/docker/certs.d/harborIp/ca.crt

2.驗證ca證書是否可用
通過  docker login harborIp 驗證是否能夠成功登入harbor. 確保不出現錯誤:x509: certificate signed by unknown authority

3.kubernetes 建立secret

點選(此處)摺疊或開啟

  1. kubectl create secret docker-registry registry-secret --namespace=default --docker-server=harborIp --docker-username=desktop --docker-password=Weinongopde --docker-email=273936024@qq.com
desktop是在harbor中建立好的使用者,並且已經關聯到專案上。

4.建立測試busybox Pod

busybox.yaml

點選(此處)摺疊或開啟

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: busybox
  5.   namespace: default
  6. spec:
  7.   containers:
  8.   - image: 120.79.156.135/desktop/busybox:latest
  9.     command:
  10.       - sleep
  11.       - "3600"
  12.     imagePullPolicy: IfNotPresent
  13.     name: busybox
  14.   restartPolicy: Always
  15.   imagePullSecrets:
  16.   - name: registry-secret
kubectl create -f busybox.yaml  成功從Harbor私有映象庫pull映象busybox:latest,並建立Pod

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2153568/,如需轉載,請註明出處,否則將追究法律責任。

相關文章