詹金斯CD管道到Kubernetes

时间:2017-07-17 05:35:56

标签: docker jenkins kubernetes continuous-deployment

我打算使用带有Jenkins的CD Pipeline来获取我的应用程序,将docker镜像发布到我的私有docker存储库。我想我知道该怎么做。

我不确定Kubernetes的一部分。我想拍摄该图像并将其部署到我的私人Kubernetes集群(目前是1个Master& 1 Slave)。

问题:安装了kubectl和docker的Jenkins Slave是否需要成为Kubernetes集群的一部分才能触发部署?如何触发该部署?

3 个答案:

答案 0 :(得分:4)

假设您在群集中进行了以下部署:

public class retornoRespostas
{
    public string Status { get; set; }
    public string Descricao { get; set; }
    public List<RespostaWrapper> Respostas { get; set; }
}

public class RespostaWrapper
{
    public Resposta Resposta { get; set; }
}

public class Resposta
{
    public string Campanha { get; set; }
    public string Telefone { get; set; }
    public string Data { get; set; }
    public string mensagem { get; set; }
}

你必须以某种方式让Jenkins告诉你的Kubernetes掌握以下命令:

apiVersion: apps/v1beta1 # for versions before 1.6.0 use 
extensions/v1beta1
kind: Deployment
metadata:
   name: foobar-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: foobar-app
    spec:
      containers:
      - name: foobar
        image: foobar-image:v1
        ports:
        - containerPort: 80

其中kubectl set image deployment/foobar-deployment foobar=foobar-image:version 是您刚刚使用Jenkins创建的新版本。这将自动触发使用此版本的重新部署。

只要您可以访问具有群集的Kubernetes主服务器(通过ssh或类似服务器),您就可以通过上述命令。通过此命令时,不要忘记跟踪version

答案 1 :(得分:3)

您可以使用kubectl命令从Yenkin触发部署。快速启动将kubernetes集群admin.conf或$ HOME / .kube / config文件复制到Jenkin从服务器。然后你可以像这样运行kubectl。

 Kubectl  --kubeconfig=admin.conf create –f <deployment.yml>

注意:

这将为群集提供完全管理员访问权限,对于长tream,您可以创建具有部署角色的帐户并使用该帐户进行部署。

答案 2 :(得分:1)

  

我打算使用带有Jenkins的CD Pipeline来获取我的应用程序,将docker镜像发布到我的私有docker存储库。我想我知道该怎么做。

没错,这是我们都熟悉的部分。

我的建议是,你实际上,不需要在CI中做更多的事情。

  

我不确定Kubernetes的一部分。我想拍摄该图像并将其部署到我的私人Kubernetes集群(目前是1个Master&amp; 1 Slave)。

很难将CI可靠地用作真相来源,您可以在其中跟踪部署的位置。您可以做的是将应用程序配置(部署+服务YAML文件)存储在git存储库中,并具有将该存储库连接到群集的git协调运算符,您甚至可以通过这种方式设置多个群集。

  

问题:安装了kubectl和docker的Jenkins Slave是否需要成为Kubernetes集群的一部分才能触发部署?如何触发该部署?

有些人在他们的Kubernetes集群中运行CI(例如Jenkins),这是一种合法的方法,但是,这意味着你有更多的东西要运行,并从那里的所有托管CI选项中削减自己。

我们现在已经练习了一段时间的方法被称为GitOps,我们在博客中介绍了这种方法的各种好处:

另见:

免责声明:我是Kubernetes的贡献者和Weaveworks员工。我们构建开源和商业工具,帮助人们更快地使用Kubernetes进行生产。