kubernetes进阶 (二) 搭建harbor仓库及镜像制作

我遇到的场景规模较大,F5后有很多个仓库。 并且仓库直接还存在同步关系,因为拉取镜像走的是F5,当碰到莫名其妙的原因(仓库挂了,或者维护、磁盘满了),上送到根仓库的镜像没有同步到其他所以的仓库,就会导致应用在使用的时候拉不到镜像,全量同步又太消耗资源,而我能做的也只是通过计划任务在特定的时间,对当天上送的镜像进行检查并推送到其他仓库,减少手动同步的次数

一、安装harbor仓库

#拉取软件包
wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/download/v2.3.3/harbor-offline-installer-v2.3.3.tgz

#安装docker-compose
curl -L "https://ghproxy.com/https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
 
#解压缩拷贝模板文件
tar -zxvf harbor-offline-installer-v2.3.3.tgz && cd harbor
cp harbor.yml.tmpl harbor.yml

vi harbor.yml

      5 hostname: 10.0.16.15          #修改ip
      6 
      7 # http related config
      8 http:
     10   port: 30007             #对外端口暴露
     11 
     12 # https related config
     13 #https:                                      #将https这块和证书都注释掉
     14   # https port for harbor, default is 443
     15 #  port: 443
     16   # The path of cert and key files for nginx
     17 #  certificate: /your/certificate/path
     18 #  private_key: /your/private/key/path


     47 data_volume: /approot1/paas/harbor/data   #定义数据目录

启动

#--with-chartmuseum 支持后面传helm用的包
./install.sh --with-chartmuseum

登录查看

http://101.43.156.78:30007/

kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第1张图片

二、安装django框架

我们要制作一个镜像需要一个前台进程,我们这里就直接用django的

参考文档

https://blog.csdn.net/qq_42883074/article/details/130720709

安装库

//配置清华镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn
 
//安装
pip install django==4.2.1

创建项目

#在windows终端执行
django-admin startproject   Django_demo

cd django_demo
python manage.py startapp app_demo

kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第2张图片

修改全局配置

vi Django_demo/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
 
 
    'app_demo', #注册新创建的应用app
]

ALLOWED_HOSTS = ['*']   #允许所有人访问


LANGUAGE_CODE = 'zh-Hans'   #中文语言
 
TIME_ZONE = 'Asia/Shanghai'  #中国时区

编辑视图函数

 vi app_demo/view.py

from django.http import HttpResponse
 
def login(request): 

    return HttpResponse("登录页面")  

添加路由方法

vi Django_demo/urls.py

from django.urls import path,re_path   
from app_demo import views 
 
urlpatterns = [
    path("login/", views.login),       
    re_path(r'^hello/$', views.login),
]

运行测试

python manage.py runserver

访问测试

http://127.0.0.1:8000/login/

kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第3张图片

三、镜像环境准备

假设我们上面已经开发好了一个完整的项目,现在我需要将他打包成镜像

 1、拉取基础镜像

#拉取基础镜像
docker pull python:alpine


#查看镜像大小
docker images | grep python

2、 测试镜像环境

我们拿到一个基础镜像的时候其实不太知道他符不符合咱们的要求,我们就先建一个临时的容器去测试一下

#创建容器
docker run -itd --name test    python:alpine  sh

#登录容器
docker exec -it test sh


#查看python 版本
python -V


#查看并添加pip 源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn

 kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第4张图片

这边我们确定这个容器已经把基础python环境架起来了,pip命令也有,现在我们去idea把依赖的库整理下准备打包

四、制作镜像

1、保存项目依赖库文件

pip freeze > requirements.txt

kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第5张图片

获取到依赖库的文件列表后,我们把整个项目目录扔到linux 的/approot1/目录下

 kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第6张图片

刚才忘了一个东西,因为我们是在项目根目录的位置获取的依赖,但打包的时候只需要Django_demo 目录即可,这里要把库列表文件仍到打包的目录下

 kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第7张图片

2、编写dockerfile

vi Dockerfile

FROM python:alpine
COPY ./Django_demo /data/
WORKDIR /data
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
    && pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn \
    && pip install --upgrade pip \
    && pip install -r requirements.txt

CMD ["python","./manage.py","runserver","0.0.0.0:8000"]

编译

docker build . -f Dockerfile -t django:v1

 kubernetes进阶 (二) 搭建harbor仓库及镜像制作_第8张图片

3、部署容器

#创建容器
docker run -d  --name test3  -p 30009:8000 django:v1

#访问页面
http://101.43.156.78:30009/login/

你可能感兴趣的:(kubernetes,新,kubernetes,容器,云原生)