在gitlab中的使用kaniko打造流水线

文章目录

kaniko工具介绍

kaniko 是一种从容器或 Kubernetes 集群内的 Dockerfile 构建容器镜像的工具。

kaniko 解决了使用 Docker-in-Docker 构建方法的两个问题:

  • Docker-in-Docker需要特权模式才能运行,这是一个重大的安全问题。
  • Docker-in-Docker通常会降低性能,并且速度可能非常慢。

对应runner的执行器选择:

环境说明

系统版本

  • CentOS 7.9.2009

组件版本

  • gitlab-jh-15.6.0
  • harbor.v2.4.3
  • Docker 20.10.22
  • Docker-compose 1.18.0

组件部署参考链接

部署harbor

下载

复制代码
mkdir /data
cd /data
wget https://storage.googleapis.com/harbor-releases/release-2.4.0/harbor-offline-installer-v2.4.3.tgz

解压、创建相关目录

复制代码
cd /data
tar -xf harbor-offline-installer-v2.4.3.tgz
cd harbor
mkdir {ssl,data}

配置

复制代码
cd /data/harbor
cp harbor.yml.tmpl harbor.yml

vim harbor.yml

复制代码
hostname: harbor.bdeet.top
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 8000
https:
  # https port for harbor, default is 443
  port: 8443
  # The path of cert and key files for nginx
  certificate: /data/harbor/ssl/harbor.bdeet.top.crt
  private_key: /data/harbor/ssl/harbor.bdeet.top.key
harbor_admin_password: Wkx@123!#
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: root123
  # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
  max_idle_conns: 100
  # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
  # Note: the default number of connections is 1024 for postgres of harbor.
  max_open_conns: 900
data_volume: /data/harbor/data
...
...

部署

复制代码
cd /data/harbor
./install.sh

gitlab集成harbor

集成

Select project -> Settings -> Integrations -> Add an integration(Harbor)

项目ci配置

复制代码
docker:
  stage: build
  variables:
    HARBOR_PORT: 8443
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: ['']
  script:
    - mkdir -p /kaniko/.docker
    - echo "{\"auths\":{\"${HARBOR_URL}\":{\"auth\":\"$(echo -n ${HARBOR_USERNAME}:${HARBOR_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json
    - cat /kaniko/.docker/config.json
    - echo /kaniko/executor --context "${CI_PROJECT_DIR}" --dockerfile "${CI_PROJECT_DIR}/Dockerfile"  --destination "${HARBOR_HOST}:${HARBOR_PORT}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:v1"
    - >-
      /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
      --destination "${HARBOR_HOST}:${HARBOR_PORT}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:${CI_COMMIT_SHORT_SHA}"
  rules:
  - if: $CI_COMMIT_BRANCH == "master"
    when: always

最终结果

相关推荐
星释2 天前
如何自动部署GitLab项目
gitlab
keson要进步2 天前
CICD实战(二)-----gitlab的安装与配置
linux·运维·gitlab
猫头虎2 天前
[特殊字符]解决 “IDEA 登录失败。不支持早于 14.0 的 GitLab 版本” 问题的几种方法
java·ide·网络协议·http·https·gitlab·intellij-idea
风早君2 天前
jenkins集成gitlab发布到远程服务器
服务器·gitlab·jenkins
大白要努力!4 天前
在 Android Studio 中使用 GitLab 添加图片到 README.md
android·gitlab·android studio
星释4 天前
如何编写GitLab-CI配置文件
ci/cd·gitlab
馨羽的玩具4 天前
gitlab rss订阅失败
gitlab
t198751285 天前
jenkins结合gitlab实现CI
ci/cd·gitlab·jenkins
一颗小豆5 天前
07-接着玩-linux的CD/CI全流程体验
gitlab