一、安装底层需求
Python应该是 应 2.7或更高版本 Docker引擎应为 引 1.10或更高版本 DockerCompose需要为 需 1.6.0或更高版本 docker-compose curl -Lhttps://github.com/docker/compose/releases/download/1.9.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
二 Harbor 安装
Harbor官方地址:https://github.com/vmware/harbor/releases
1、解压软件包:
https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-offline-installer-v1.2.0.tgz tar xvf harbor-offline-installer-<version>.tgz
2、配置 、 harbor.cfg
cd harbor vim harbor.cfg #需要修改的参数是: hostname = Harbor.tan.com ui_url_protocol = https
a、必选参数
hostname:目标的主机名或者完全限定域名 ui_url_protocol:http或https #默认为 http db_password:用于 : db_auth的MySQL数据库的根密码。更改此密码进行任何生产用途 数 max_job_workers:(默认值为 : 3)作业服务中的复制工作人员的最大数量。对于每个映像复制作业, ) 工作人员将存储库的所有标签同步到远程目标。增加此数字允许系统中更多的并发复制作业。但是,由于每个工 工作人员都会消耗一定数量的网络 作 / CPU/IO资源,请根据主机的硬件资源,仔细选择该属性的值 资 customize_crt:(: on或off。默认为 。 on)当此属性打开时, ) prepare脚本将为注册表的令牌的生成 脚 /验证创 验 建私钥和根证书 ssl_cert:SSL证书的路径,仅当协议设置为 证 https时才应用 ssl_cert_key:SSL密钥的路径,仅当协议设置为 密 https时才应用 secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径
3、创建https 证书以及配置相关目录权限
由于harbor.cfg中,配置的证书路劲:ssl_cert = /data/cert/server.crt
所以创建对应的目录及证书
mkdir /data/cert chmod -R 777 /data/cert cd /data/cert openssl genrsa -des3 -out server.key 2048 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr-signkey server.key -out server.crt
4、运行脚本进行安装
./install.sh
5、访问测试
https://reg.yourdomain.com的管理员门户(将 的 reg.yourdomain.com更改为您的主机名 更 harbor.cfg)。请注意,默 ) 认管理员用户名 认 /密码为 密 admin /Harbor12345
6、上传镜像进行上传测试
a、指定镜像仓库地址
vim/etc/docker/daemon.json #倒数第二行加 "insecure-registries": ["harbor.tan.com"] } [root@tan-node01 ~]# systemctl daemon-reload [root@tan-node01 ~]# systemctl restart docker
b、下载测试镜像
docker pull hello-world
c、给镜像重新打标签
docker tag hello-world harbor.tan.com/library/myapp:v1
d、登录进行上传
[root@tan-node01 ~]# docker login https://harbor.tan.com Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [root@tan-node01 ~]# docker push harbor.tan.com/library/myapp:v1 kubectl run nginx-deployment --image=harbor.tan.com/library/myapp:v1 --port=8888 --replicas=2 [root@tan-master 2、资料]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-5c47758fb9-6x4rv 1/1 Running 0 16m 10.244.1.2 tan-node01 <none> <none> nginx-deployment-5c47758fb9-zfq9m 1/1 Running 0 7m48s 10.244.1.3 tan-node01 <none> <none>
扩展副本数
[root@tan-master 2、资料]# kubectl scale --replicas=1 deployment/nginx-deployment deployment.extensions/nginx-deployment scaled [root@tan-master 2、资料]# [root@tan-master 2、资料]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-5c47758fb9-6x4rv 1/1 Running 0 18m 10.244.1.2 tan-node01 <none> <none> nginx-deployment-5c47758fb9-zfq9m 0/1 Terminating 0 10m 10.244.1.3 tan-node01 <none> <none> [root@tan-master 2、资料]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-5c47758fb9-6x4rv 1/1 Running 0 19m 10.244.1.2 tan-node01 <none> <none> [root@tan-master 2、资料]# kubectl scale deployment nginx-deployment --replicas=3 deployment.extensions/nginx-deployment scaled [root@tan-master 2、资料]# [root@tan-master 2、资料]# kubectl get pod
修改集团的内外访问端口
[root@tan-master 2、资料]# kubectl expose -h | grep port # Create a service for an nginx deployment, which serves on port 80 and connects to the containers on port 8000. kubectl expose deployment nginx --port=80 --target-port=8000 [root@tan-master 2、资料]# kubectl expose deployment nginx-deployment --port=30000 --target-port=80 service/nginx-deployment exposed [root@tan-master 2、资料]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6h58m nginx-deployment ClusterIP 10.102.140.194 <none> 30000/TCP 12s #测试 [root@tan-master 2、资料]# curl 10.102.140.194:30000/hostname.html nginx-deployment-5c47758fb9-wqsqr [root@tan-master 2、资料]# curl 10.102.140.194:30000/hostname.html nginx-deployment-5c47758fb9-fzbmm [root@tan-master 2、资料]# curl 10.102.140.194:30000/hostname.html nginx-deployment-5c47758fb9-6x4rv #原因 [root@tan-master 2、资料]# ipvsadm -Ln | egrep -A 3 10.102.140.194 TCP 10.102.140.194:30000 rr -> 10.244.1.2:80 Masq 1 0 0 -> 10.244.1.4:80 Masq 1 0 0 -> 10.244.2.3:80 Masq 1 0 0
修改为外网可访问
[root@tan-master 2、资料]# kubectl edit svc nginx-deployment 修改ClusterIP为NodePort type: NodePort [root@tan-master 2、资料]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h10m nginx-deployment NodePort 10.102.140.194 <none> 30000:32507/TCP 12m curl http://192.168.80.95:32507/hostname.html
7、其它
Docker客户端下载测试 a、指定镜像仓库地址 vim/etc/docker/daemon.json {"insecure-registries": ["serverip"] } b、下载测试镜像 docker pull serverip/hello-world:latest
三 Harbor 原理说明
1、软件资源介绍
Harbor是VMware公司开源的企业级 公 DockerRegistry项目,项目地址为 项 https://github.com/vmware/harbor。其目 。 标是帮助用户迅速搭建一个企业级的 标 Dockerregistry服务。它以 服 Docker公司开源的 公 registry为基础,提供了管理 为 UI, 基于角色的访问控制 基 (Role BasedAccess Control),AD/LDAP集成、以及审计日志 集 (Auditlogging) 等企业用户需求的功 等 能,同时还原生支持中文。 能 Harbor的每个组件都是以 的 Docker容器的形式构建的,使用 容 DockerCompose来对它进行部 来 署。用于部署 署 Harbor的DockerCompose模板位于 模 /Deployer/docker-compose.yml,由, 5个容器组成,这几个容器通过 个 Dockerlink的形式连接在一起,在容器之间通过容器名字互相访问。对终端用户而言,只需要暴露 的 proxy ( 即 Nginx)的服务端口 )
.....
Comments | NOTHING