设为首页 收藏本站
查看: 655|回复: 0

[经验分享] kubernetes之使用docker快速部署harbor

[复制链接]

尚未签到

发表于 2019-2-20 07:14:25 | 显示全部楼层 |阅读模式
harbor
  Habor是由VMWare中国团队开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,水平扩展,同步,AD/LDAP集成以及审计日志等

安装步骤
  一. 手动部署


  • 下载最新的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


  • 下载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


  • 准备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/


  • 安装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


  •   访问
      https://h.uedu.ml/
    admin  默认密码为 Harbor12345





  • 创建项目



  •   拉取公共镜像
      docker pull tomcat
    docker tag tomcat h.uedu.ml/aikerlinux/tomcat:latest //打标签为上传做准备

  •   把tomcat镜像推送到harbor
      docker login https://h.uedu.ml
    输入用户名和密码
    docker push h.uedu.ml/aikerlinux/tomcat:latest

  • 在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创建过程的信息,可能会存在的问题



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-674567-1-1.html 上篇帖子: Docker容器资源限制隔离 下篇帖子: 在docker中用Tomcat运行web项目
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表