在 Kubernetes 中运行 Kubernetes

前面其实我们在 Windows 系统的 WSL2 下面使用 KinD 搭建了一套 Kubernetes 集群,KinD 是一个非常轻量级的 Kubernetes 安装工具,他将 Docker 容器当成 Kubernetes 的节点,使用非常方便。既然在 Docker 容器中可以运行 Kubernetes 集群,那么我们自然就会想到是否可以在 Pod 中来运行呢?在 Pod 中运行会遇到哪些问题呢?

[阅读全文]

加速开发流程的 Dockerfile 最佳实践

Dockerfile 是创建 Docker 镜像的起点,该文件提供了一组定义良好的指令,可以让我们复制文件或文件夹,运行命令,设置环境变量以及执行创建容器镜像所需的其他任务。编写 Dockerfile 来确保生成的镜像安全、小巧、快速构建和快速更新非常重要。

本文我们将看到如何编写良好的 Dockerfile 来加快开发流程,确保构建的可重用性,并生成可放心部署到生产中的镜像。

[阅读全文]

获取客户端访问真实 IP

通常,当集群内的客户端连接到服务的时候,是支持服务的 Pod 可以获取到客户端的 IP 地址的,但是,当通过节点端口接收到连接时,由于对数据包执行了源网络地址转换(SNAT),因此数据包的源 IP 地址会发生变化,后端的 Pod 无法看到实际的客户端 IP,对于某些应用来说是个问题,比如,nginx 的请求日志就无法获取准确的客户端访问 IP 了。

[阅读全文]

在 Kubernetes 中配置 Container Capabilities

我们在使用 Kubernetes 过程中,偶尔会遇到如下所示的一段配置:

securityContext:
  capabilities:
    drop:
    - ALL
    add:
    - NET_BIND_SERVICE

实际上这是配置对应的容器的 Capabilities,在我们使用 docker run 的时候可以通过 --cap-add--cap-drop 命令来给容器添加 Linux Capabilities。对于大部分同学可能又要疑问 Linux Capabilities 是什么呢?

[阅读全文]

使用 Configuration-As-Code 运行 Jenkins

今天了解到一个名为Configuration as Code (JcasC)的插件可以来创建Jenkins,这个插件允许你用 YAML 文件来定义 Jenkins 配置。一般我们在使用 Jenkins 的时候多少知道我们需要哪些插件或者其他配置来配合我们的 CI/CD 工作,使用 JcasC 插件,我们就可以将这些信息配置在可读性更高的 YAML 文件中。在本文中,我们会为大家演示如何使用Configuration as Code插件来创建 Jenkins,然后使用 Git、Maven 等工具来编写一个声明式的 Pipeline 去构建一个 Java 应用,另外还会展示如何使用Vault来管理一些私密数据。

[阅读全文]

基于 Jenkins、Gitlab、Harbor、Helm 和 Kubernetes 的 CI/CD(一)

上节课和大家介绍了Gitlab CI结合Kubernetes进行 CI/CD 的完整过程。这节课结合前面所学的知识点给大家介绍一个完整的示例:使用 Jenkins + Gitlab + Harbor + Helm + Kubernetes 来实现一个完整的 CI/CD 流水线作业。

其实前面的课程中我们就已经学习了 Jenkins Pipeline 与 Kubernetes 的完美结合,我们利用 Kubernetes 来动态运行 Jenkins 的 Slave 节点,可以和好的来解决传统的 Jenkins Slave 浪费大量资源的缺点。之前的示例中我们是将项目放置在 Github 仓库上的,将 Docker 镜像推送到了 Docker Hub,这节课我们来结合我们前面学习的知识点来综合运用下,使用 Jenkins、Gitlab、Harbor、Helm、Kubernetes 来实现一个完整的持续集成和持续部署的流水线作业。

[阅读全文]

在 Kubernetes 上安装 Gitlab

gitlab on k8s

Gitlab官方提供了 Helm 的方式在 Kubernetes 集群中来快速安装,但是在使用的过程中发现 Helm 提供的 Chart 包中有很多其他额外的配置,所以我们这里使用自定义的方式来安装,也就是自己来定义一些资源清单文件。

Gitlab主要涉及到3个应用:Redis、Postgresql、Gitlab 核心程序,实际上我们只要将这3个应用分别启动起来,然后加上对应的配置就可以很方便的安装 Gitlab 了,我们这里选择使用的镜像不是官方的,而是 Gitlab 容器化中使用非常多的一个第三方镜像:sameersbn/gitlab,基本上和官方保持同步更新,地址:http://www.damagehead.com/docker-gitlab/

[阅读全文]

Harbor 源码浅析

harbor

Harbor 是一个CNCF基金会托管的开源的可信的云原生docker registry项目,可以用于存储、签名、扫描镜像内容,Harbor 通过添加一些常用的功能如安全性、身份权限管理等来扩展 docker registry 项目,此外还支持在 registry 之间复制镜像,还提供更加高级的安全功能,如用户管理、访问控制和活动审计等,在新版本中还添加了Helm仓库托管的支持。

[阅读全文]

Docker 镜像分析工具 Dive(附视频)

我们知道用docker inspect命令可以查看一个 docker 镜像的 meta 信息,用docker history命令可以了解一个镜像的构建历史,但是这些信息对我们去分析一个镜像的具体一层的组成来说还是不太够,不够清晰明了。

[阅读全文]

Dockerfile 最佳实践

Docker官方关于Dockerfile最佳实践原文链接地址:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

Docker可以通过从Dockerfile包含所有命令的文本文件中读取指令自动构建镜像,以便构建给定镜像。

Dockerfiles使用特定的格式并使用一组特定的指令。您可以在 Dockerfile Reference 页面上了解基础知识 。如果你是新手写作Dockerfile,你应该从那里开始。

本文档介绍了由 Docker,Inc. 和 Docker 社区推荐的用于构建高效镜像的最佳实践和方法。要查看更多实践和建议,请查看 Dockerfile for buildpack-deps

[阅读全文]