harbor&helm的初体验

1,957 阅读2分钟

harbor的安装使用

下载

https://github.com/goharbor/harbor/releases/download/v2.0.0/harbor-offline-installer-v2.0.0.tgz

安装

yum install docker-compose -y
rpm -qa docker-compose
tar xf harbor-offline-installer-v2.0.0.tgz -C /opt
cd /opt/harbor
./install

注意:此处使用443端口,需要自签证书,

浏览器访问:

192.168.11.138,并登录harbor

配置客户端仓库地址

vim /etc/docker/daemon.json

{"insecure-registries":["192.168.11.138"]}
systemctl daemon-reload
systemctl restart docker

客户端登录harbor私有仓库,账admin,密 Harbor12345

docker login 192.168.11.138

替换镜像标签,并推送

docker tag ubuntu:latest 192.168.11.138/test/ubuntu:v1
docker push 192.168.11.138/test/ubuntu:v1
docker push 192.168.11.138/test/linux:v1

Dockerfile

FROM ubuntu:latest
MAINTAINER bq-test
ADD test.file /
EXPOSE 22

docker镜像的导出与导入

导出:
docker save -o 要保存的文件名  要保存的镜像
导入镜像:
docker load --input 文件
docker load < 文件名
eg:
docker save -o ./test.tar test:v1
docker load --input test.tar
docker load < ubuntu.tar

docker镜像的制作

  • 基于dockerfile的制作

    # 基础镜像
    FROM centos
    
    # 维护者信息
    MAINTAINER lemon 
    
    # 设置环境变量
    ENV PATH /usr/local/nginx/sbin:$PATH
    
    # 文件放在当前目录下,拷过去会自动解压
    ADD nginx-1.8.0.tar.gz /usr/local/  
    
    # 执行以下命令 
    RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
    RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
    RUN useradd -s /sbin/nologin -M www
    
    # 映射端口
    EXPOSR 80
    
  • 在原有基础上制作

    1、进入到镜像生成的容器中进行修改,修改后,保存退出镜像
    2、查找修改的容器信息,并构建新的镜像
    3、上传仓库
    

QA

Q:一次客户端登录harbor时,出现以下错误,

Error response from daemon: Get https://192.168.11.120:80/v2/: http: server gave HTTP response to HTTPS client
Error response from daemon: Get https://192.168.11.120/v2/: dial tcp 192.168.11.120:443: connect: connection refused

A:首先清处原有的镜像,然后重起docker,重新登录

systemctl restart docker
# docker login 192.168.11.120
Username: admin
Password: 

harbor管理helm-chart

harbor安装的时候默认没有helm charts的仓库,启用 harbor 的 chart repository 服务

docker-compose stop
./install.sh  --with-chartmuseum

helm 二进制安装

#从官网下载最新版本的二进制安装包到本地:https://github.com/kubernetes/helm/releases
tar -zxvf helm-v3.2.1-linux-amd64.tar.gz # 解压压缩包
# 把 helm 指令放到bin目录下
mv linux-amd64/helm /usr/bin/helm
helm help # 验证

安装helm插件

helm plugin install https://github.com/chartmuseum/helm-push

添加chart仓库

helm repo add docker --username admin --password=Harbor12345 http://192.168.11.120:80/chartrepo/docker
helm repo list

创建chart

helm create test-app
cd test-app

chart文件结构此处以test-app为例

./
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml

打包:

helm package test-app

推送仓库

helm repo list
helm push test-app-0.1.0.tgz
[root@test-k8s-01 templates]# helm repo list
NAME        URL                                                   
mylibrary   http://192.168.11.120:80/chartrepo/library            
stable      https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
myrepo      http://192.168.11.120:80/chartrepo/test               
docker      http://192.168.11.120:80/chartrepo/docker 
[root@test-k8s-01 ~]# helm push test-app-0.1.0.tgz docker
Pushing test-app-0.1.0.tgz to docker...
Done.
[root@test-k8s-01 ~]#

下载

helm fetch stable/redis-ha