成都網(wǎng)站建設(shè)平臺(tái)排名優(yōu)化方法
下載鏡像
docker pull registry:2
? ? ? 需要啟動(dòng)https功能,就要生成服務(wù)端的自簽名的證書和私鑰,以及在docker客戶端安裝這個(gè)經(jīng)過簽名的證書。 第一步:生成公私鑰信息,第二步,制作證書簽名申請(qǐng)文件, 第三步:用私鑰簽名申請(qǐng)文件(里面保護(hù)公鑰申請(qǐng)人的公鑰信息) 第四步: 把簽名后的證書配置到docker端,同時(shí)在registry端配置私鑰
制作公私鑰
? ? 首先熟悉下相關(guān)概念:
- x509:證書標(biāo)準(zhǔn)
- pem和der:兩種(包括公私鑰、證書簽名請(qǐng)求、證書等內(nèi)容的)的格式,前者是文本形式,linux常用,后者是二進(jìn)制形式,windows常用,僅僅是格式,不表明內(nèi)容,如果作為后綴就像html起的效果一樣。有時(shí)候用pem做公鑰的后綴
- crt和cer:常見的兩種證書后綴名,前者大多數(shù)情況為pem格式,后者大多數(shù)情況為der格式
- csr:證書簽名請(qǐng)求文件(后綴一般都是.csr),包含了公鑰、用戶名等信息
- key:常見的私鑰的后綴名
1、先創(chuàng)建一個(gè)公私鑰對(duì)
? ?openssl genpkey -algorithm RSA -out registry_private.key? -pkeyopt rsa_keygen_bits:2048
? ** -algorithm RSA是說明 生產(chǎn)公私鑰的算法,rsa_keygen_bits:2048 指定rsa算法密鑰的長(zhǎng)度,長(zhǎng)度越長(zhǎng)越安全,但是長(zhǎng)度長(zhǎng)解密時(shí)需要更長(zhǎng)時(shí)間。 也可以用 -aes256 選項(xiàng)表示加密保護(hù)私鑰。
2、查看使用openssl pkey -in registry_private.key -text -noout 查看生成后的私鑰信息
? ? ? 里面可以看到公鑰和私鑰部分信息
3、openssl rsa -in registry_private.key -pubout -out registry_public.key 生產(chǎn)一個(gè)公鑰信息文件
? ? ?
?生成證書簽名請(qǐng)求 (CSR)
? ?創(chuàng)建一個(gè)配置文件,內(nèi)容如下:
[root@master01 pki]# cat crs.conf?
[req]
distinguished_name ?= req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = CN
ST = CKG
L = CKG
O = ITTest
OU = IT
CN = 192.168.2.222
[v3_req]
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=master00.com
DNS.2=bqs.master00.com
IP.1 = 192.168.2.222? #這個(gè)ip就是你的鏡像服務(wù)的ip,如果有域名的域名也添加上面 DNS.1= xxx.com
執(zhí)行命令生成申請(qǐng)文件
openssl req -new -key registry_private.key -out registry.csr -config crs.conf
生成自簽名證書
openssl x509 -req -in registry.csr -signkey registry_private.key -out registry.crt -days 3650 -extfile crs.conf -extensions v3_req
-days 3650 指定證書的有效天數(shù)
?查看證書
openssl x509 -in registry.crt -text -noout
啟動(dòng)私有倉庫容器
docker run -d \
? --restart=always \
? --name registry \
? --memory 512m \
? -p 443:443 ?\
? -v /root/regimages:/var/lib/registry \
? --memory-swap -1 \
? -v /root/docker/pki:/etc/certs.d \? ?# 把剛才生成證書的目錄掛載到 容器中
? -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
? -e REGISTRY_HTTP_SECRET=secret \
? -e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/certs.d/registry.crt \? #指定了https的證書
? -e REGISTRY_HTTP_TLS_KEY=/etc/certs.d/registry_private.key \??? #指定了https的私鑰
? registry:2
把證書安裝到Docker客戶端
1、創(chuàng)建目錄? /etc/docker/certs.d/192.168.2.222/? ?[在其他主機(jī)上也是這個(gè)ip作為文件夾]??
? ? ? ?如果https的默認(rèn)端口不是443,比如是:444 ,那么文件夾的名稱端口也要加上:? 192.168.2.222:444
? ? ***? /etc/docker/certs.d/是固定的,后面IP目錄就是根據(jù)自己實(shí)際IP 或者域名創(chuàng)建文件夾名稱就行
2、把剛才生成的證書registry.crt 復(fù)制到上面的目錄,而且名稱要改成? ca.crt 。
3、重新啟動(dòng)Docker,就可以了
測(cè)試
***還有一種方式就是把用于簽名的證書,因?yàn)檫@里是自簽名,所以也就是這個(gè)自簽名正式直接加入到操作系統(tǒng)層面的 信任正式庫里面也可以。
#追加
? ?cat cat.crt >>? /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt??
#系統(tǒng)層面更新??
update-ca-trust
然后k8s中下載庫中的鏡像
在node上docker login 登錄鏡像庫 生成??$HOME/.docker/config.json
kubectl create secret generic harborregcred -n jtkjdev --from-file=.dockerconfigjson=$HOME/.docker/config.json ?--type=kubernetes.io/dockerconfigjson
? ? spec:
? ? ? imagePullSecrets:
? ? ? - name: harborregcred
? ? ? containers: