代码之家  ›  专栏  ›  技术社区  ›  Jacob

使用kubectl命令,使用kubernetes和jenkins部署pods

  •  1
  • Jacob  · 技术社区  · 6 年前

    我正在尝试为我的Spring引导微服务部署实现CI/CD管道。这里我有一些微服务示例。当我研究Kubernetes时,我发现pods、服务、副本集/控制器、状态集等。我正确地理解了这些Kubernetes术语。我计划使用Docker Hub进行图像注册。

    我的要求

    当提交到我的SVN代码存储库时,Jenkins需要从Subversion存储库中提取代码,并需要构建项目、创建Docker映像、推入Docker Hub——如前所述。之后需要通过Jenkins将其从Dockerhub部署到我的测试环境中。

    我的困惑

    1. 当我创建服务和pods时,如何在pod/services/statefulset中定义docker映像路径?因为它从Docker Hub拉出来进行部署。
    2. 我可以直接在jenkins pipeline schedule作业中添加kubectl命令吗?如何使用kubectl命令部署kubernetes?
    2 回复  |  直到 6 年前
        1
  •  3
  •   mszalbach    6 年前

    只要工具已经安装并且可以访问,詹金斯就可以做任何你能做的事情。所以一个简单的解决方案是在Jenkins上安装docker和kubectl,并为他提供正确的kube配置,这样他就可以访问集群了。所以如果你的主人可以使用Kubectl,你可以看看 $HOME/.kube/config 文件。

    所以在你的工作中,你可以像对待主人那样使用Kubectl。

    关于Docker Hub的图像:

    Docker Hub是Docker的默认Docker注册表,所以通常情况下,只有当您想使用自己的私有托管注册表时,才不需要更改集群中的任何内容。如果您在任何云提供商上运行集群,我都会使用There Docker注册表,因为它们更好地集成了。

    所以部署的这一部分将把nginx从Docker Hub中拉出来,不需要为它指定任何特殊的内容:

        spec:
          containers:
          - name: nginx
          Image: nginx:1.7.9
    

    因此,确保Jenkins可以从命令行执行以下操作:

    1. 构建Docker图像
    2. 推送Docker图像(确保您在Jenkins上调用了Docker登录)
    3. 通过访问群集 kubectl get pods

    因此,一个简单的管道需要简单地执行以下步骤:

    1. SVN更改时触发
    2. 签出代码
    3. 创建唯一版本,可以是内部版本号、SVN修订版和日期)
    4. 构建/测试
    5. 构建Docker图像
    6. 使用唯一版本标记Docker图像
    7. Push Docker图像
    8. 将kubernetes deployment.yaml中的image line更改为新构建的版本(如果您使用的是Jenkins管道,则可以使用readyAML、writeyaml来实现此操作)
    9. 呼叫 kubectl apply -f deployment.yaml

    根据您使用的构建系统和语言,有一些有用的工具可以帮助构建和推送Docker映像,并确保唯一的标记。例如,对于Java和Maven,您可以使用 Maven CI Friendly Versions 使用任何Maven Docker插件或 jib .

        2
  •  1
  •   Oron Golan    6 年前

    要创建部署,需要创建yaml文件。 在yaml文件中,行为: 图片:oronboni/serviceb

    把你带到一个容器,在这种情况下,在Dockerhub。

    apiVersion:扩展/v1beta1 种类:部署 元数据: 姓名:ServiceB 命名空间:默认 规格: 副本:1 选择器: 匹配标签: 应用程序:服务B 模板: 元数据: 标签: 应用程序:服务B 规格: 容器: -姓名:ServiceB 图片:oronboni/serviceb 端口: -集装箱港口:5002

    我强烈建议您在下面的链接中看到Kubernetes部署网络研讨会: https://m.youtube.com/watch?v=_vHTaIJm9uY

    祝你好运。