Answers: <p>You have all the necessary tools for the 2 use cases you mentioned. For application development, it looks like you have something already set up.  I'm assuming, for time's sake, you have automated both code quality and security scanning of your application and that is all working.  If you haven't already started packaging your applications into helm to deploy into kubernetes I suggest you do that.  What your looking to do is automate your deployments of pre-built applications and infrastructure into EKS or cloud (aws). </p>
  
  <p>To deploy applications onto your EKS cluster terraform allows you to deploy via helm.  So your Jenkins pipeline can deploy your terraform infrastructure which utilize the providers for kubernetes, eks, helm, AWS and more to provision and configure your infrastructure and applications. There is a separate pipeline usually for custom apps, pre-built apps, and infrastructure.  Each has it's own quality, security, and resiliency checks needed so you may need some additional tools as you go forward. </p>
  
  <p>For example here is a link to the Hashicorps website on using terraform in automated pipelines.  Note it's considered advanced <a href="https://learn.hashicorp.com/terraform/development/running-terraform-in-automation" rel="nofollow noreferrer">https://learn.hashicorp.com/terraform/development/running-terraform-in-automation</a></p>
  
  <p>At this point I'm not sure what you're using Ansible for as that's not necessary for EKS and it's services but if you still need it in parallel to terraform there are plugins to Jenkins <a href="https://plugins.jenkins.io/ansible/" rel="nofollow noreferrer">https://plugins.jenkins.io/ansible/</a>.   There's also one for terraform <a href="https://plugins.jenkins.io/terraform//" rel="nofollow noreferrer">https://plugins.jenkins.io/terraform//</a> </p>
  
  <p>So in short, no need to start adding tools but exploring the ones you have.  The way to look at it is this: </p>
  
  <ul>
  <li>Task Runner and orchestrator for CI/CD: Jenkins
  
  <ul>
  <li>this will orchestrate all CI/CD</li>
  </ul></li>
  <li>Application deployment: Helm
  
  <ul>
  <li>this would deploy and version all applications</li>
  <li>applications can be deployed via jenkins or terraform</li>
  </ul></li>
  <li>Infrastructure deployment: Terraform
  
  <ul>
  <li>initial testing done manually but Jenkins can run terraform to deploy infrastructure and base services.  </li>
  </ul></li>
  </ul>
  
Answers: CC BY-SA 4.0
Answers: 2020-05-20T02:44:59.980Z
Answers: 2020-05-20T02:44:59.980Z
Answers: Jeff Garrett
Answers: <p>If you are looking to combine all your CI\CD activities into one single process\pipeline, i would suggest to go with Azure DevOps which also supports Jenkins, Ansible, Kubernetes and almost all the 3rd party\Open source CI\CD tools. So that you could also use your existing tools like Jenkins and Ansible and connect with Azure Devops to make it connected pipelines. I have used this and i was able to do all my CI\CD activity in a single automated pipeline. Have a try maybe.</p>
  
Answers: CC BY-SA 4.0
Answers: 2020-05-14T09:02:52.130Z
Answers: 2020-05-14T09:02:52.130Z
Answers: Jerry
Body: <p>This may also be a general pulse; but here lies the issue</p>
  
  <p>We use EKS, we have Jenkins, we have Ansible, we have Terraform, we have BitBucket; but none of these really form a pipeline and I'm stuck with answering; do we need more (FluxCD/AgroCD/drone.io) etc... or what we have is enough and it's simply about stringing these things together.</p>
  
  <p>Currently, Jenkins really just does mostly app deployment stuff of <em>business app</em> for our devs; but if I wanted to deploy like Fluentd to our clusters or pod security policies, it'll usually require me to manually deploy it.</p>
  
  <p>Really trying to think of a modern CICD approach with security as the forefront, most of our usescases is deploying stuff to kubernetes; but that is not all of our usecase (some scragglers like firewall automation)</p>
  
Comments: CC BY-SA 4.0
Comments: 2020-05-15T12:11:31.753Z
Comments: It seems to me you are dealing with an operational environment which has changes made to it _outside_ of the usuall application delivery pipeline. Instead of adding or worrying about tools, can you try to describe what _processes_ you feel are missing?
Comments: Bruce Becker
Tags: <jenkins><kubernetes><ansible><terraform><cicd>
Title: How do we move to a modern CICD approach
UserDisplayName: c0rruptbytes
ThreadText: # How do we move to a modern CICD approach
  
  (Asked by: username_0 on 2020-05-13)
  
  This may also be a general pulse; but here lies the issue
  
  We use EKS, we have Jenkins, we have Ansible, we have Terraform, we have BitBucket; but none of these really form a pipeline and I'm stuck with answering; do we need more (FluxCD/AgroCD/drone.io) etc... or what we have is enough and it's simply about stringing these things together.
  
  Currently, Jenkins really just does mostly app deployment stuff of *business app* for our devs; but if I wanted to deploy like Fluentd to our clusters or pod security policies, it'll usually require me to manually deploy it.
  
  Really trying to think of a modern CICD approach with security as the forefront, most of our usescases is deploying stuff to kubernetes; but that is not all of our usecase (some scragglers like firewall automation)
  
  **Tags:** jenkins, kubernetes, ansible, terraform, cicd
  
  > **Comments:**
  > **username_1**: It seems to me you are dealing with an operational environment which has changes made to it _outside_ of the usuall application delivery pipeline. Instead of adding or worrying about tools, can you try to describe what _processes_ you feel are missing?  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2020-05-20. Score: 2
  
  You have all the necessary tools for the 2 use cases you mentioned. For application development, it looks like you have something already set up. I'm assuming, for time's sake, you have automated both code quality and security scanning of your application and that is all working. If you haven't already started packaging your applications into helm to deploy into kubernetes I suggest you do that. What your looking to do is automate your deployments of pre-built applications and infrastructure into EKS or cloud (aws).
  
  To deploy applications onto your EKS cluster terraform allows you to deploy via helm. So your Jenkins pipeline can deploy your terraform infrastructure which utilize the providers for kubernetes, eks, helm, AWS and more to provision and configure your infrastructure and applications. There is a separate pipeline usually for custom apps, pre-built apps, and infrastructure. Each has it's own quality, security, and resiliency checks needed so you may need some additional tools as you go forward.
  
  For example here is a link to the Hashicorps website on using terraform in automated pipelines. Note it's considered advanced <https://learn.hashicorp.com/terraform/development/running-terraform-in-automation>
  
  At this point I'm not sure what you're using Ansible for as that's not necessary for EKS and it's services but if you still need it in parallel to terraform there are plugins to Jenkins <https://plugins.jenkins.io/ansible/>. There's also one for terraform <https://plugins.jenkins.io/terraform//>
  
  So in short, no need to start adding tools but exploring the ones you have. The way to look at it is this:
  
  * Task Runner and orchestrator for CI/CD: Jenkins
    + this will orchestrate all CI/CD
  * Application deployment: Helm
    + this would deploy and version all applications
    + applications can be deployed via jenkins or terraform
  * Infrastructure deployment: Terraform
    + initial testing done manually but Jenkins can run terraform to deploy infrastructure and base services.
  
  
  ---
  
  ### Answer by username_3 on 2020-05-14. Score: 0
  
  If you are looking to combine all your CI\CD activities into one single process\pipeline, i would suggest to go with Azure DevOps which also supports Jenkins, Ansible, Kubernetes and almost all the 3rd party\Open source CI\CD tools. So that you could also use your existing tools like Jenkins and Ansible and connect with Azure Devops to make it connected pipelines. I have used this and i was able to do all my CI\CD activity in a single automated pipeline. Have a try maybe.
  
  
  ---
  
  