我打算使用带有Jenkins的CD Pipeline来获取我的应用程序,将docker镜像发布到我的私有docker存储库。我想我知道该怎么做。
我不确定Kubernetes的一部分。我想拍摄该图像并将其部署到我的私人Kubernetes集群(目前是1个Master& 1 Slave)。
问题:安装了kubectl和docker的Jenkins Slave是否需要成为Kubernetes集群的一部分才能触发部署?如何触发该部署?
答案 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进行生产。