我正在尝试为我的春季启动微服务部署实现CI / CD管道。在这里,我有一些微服务示例。当我探索Kubernetes时,我发现了pod,服务,副本集/控制器,有状态集等。我正确理解了这些Kubernetes术语。我计划将Docker Hub用于我的映像注册表。
我的要求
当对我的SVN代码存储库进行了提交时,Jenkins需要从Subversion存储库中提取代码,并需要构建项目,创建docker映像,推送到Docker中心-如前所述。然后,需要由詹金斯(Jenkins)拉动,从Dockerhub部署到我的测试环境中。
我的困惑
答案 0 :(得分:3)
只要工具已安装且可访问,Jenkins可以做任何事情。因此,一个简单的解决方案是在Jenkins上安装docker和kubectl并为他提供正确的kube配置,以便他可以访问集群。因此,如果您的主机可以使用kubectl,则可以查看$HOME/.kube/config
文件。
因此,在工作中,您可以像从主机上一样使用kubectl。
关于来自Docker Hub的图像:
无论如何,Docker Hub都是Docker的默认Docker注册表,因此通常仅在您要使用自己的私有托管注册表时才需要更改集群中的任何内容。如果您在任何云提供商处运行集群,那么我会在此使用Docker注册表,因为它们可以更好地集成。
因此,部署的这一部分将从Docker Hub中提取nginx,而无需为其指定任何特殊内容:
spec:
containers:
- name: nginx
Image: nginx:1.7.9
因此,请确保Jenkins可以从命令行执行以下操作:
kubectl get pods
因此,简单的管道只需执行以下步骤:
kubectl apply -f deployment.yaml
根据您所使用的构建系统和所使用的语言,有一些有用的工具可以帮助构建和推送Docker Image并确保唯一的标签。例如,对于Java和Maven,您可以将Maven CI Friendly Versions与任何maven docker插件或jib结合使用。
答案 1 :(得分:1)
要创建部署,您需要创建yaml文件。 在yaml文件中,该行: 图片:oronboni / serviceb
将您带到本例中的DockerHub中的容器。
apiVersion:扩展程序/ v1beta1 种类:部署 元数据: 名称:serviceb 命名空间:默认 规格: 复制品:1 选择器: matchLabels: 应用:serviceb 模板: 元数据: 标签: 应用:serviceb 规格: 容器: -名称:serviceb 图片:oronboni / serviceb 端口: -containerPort:5002
我强烈建议您在以下链接中看到kubernetes部署网络研讨会: https://m.youtube.com/watch?v=_vHTaIJm9uY
祝你好运。