Git Product home page Git Product logo

quickstart-cloudbees-ci's Introduction

quickstart-cloudbees-ci

CloudBees CI on the AWS Cloud

This Quick Start deploys CloudBees Continuous Integration (CI) on the Amazon Web Services (AWS) Cloud, to provide a continuous integration and continuous delivery (CI/CD) solution that’s based on Jenkins and integrated with Amazon Elastic Container Service for Kubernetes (Amazon EKS).

The Quick Start sets up a CI/CD environment, according to AWS best practices, including high availability, automatic scaling, segregation of agent workloads, and Kubernetes-native integration with Amazon Elastic Compute Cloud (Amazon EC2) Spot Instances.

This deployment uses CloudFormation templates that automatically deploy CloudBees CI in about 45 minutes in your AWS account. After you deploy the Quick Start, you can use Jenkins plugins to add functionality to your CI/CD environment.

The Quick Start offers two deployment options:

  • Deploying CloudBees CI into a new virtual private cloud (VPC) on AWS
  • Deploying CloudBees CI into an existing VPC on AWS

You can also use the AWS CloudFormation templates as a starting point for your own implementation.

Quick Start architecture for CloudBees CI on AWS

For architectural details, best practices, step-by-step instructions, and customization options, see the deployment guide.

To post feedback, submit feature ideas, or report bugs, use the Issues section of this GitHub repo. If you'd like to submit code for this Quick Start, please review the AWS Quick Start Contributor's Kit.

quickstart-cloudbees-ci's People

Contributors

andrew-glenn avatar aws-ia-ci avatar davmayd avatar delfingala avatar fernandoespinosa avatar handans avatar ikurtz avatar jaymccon avatar jglick avatar kerogers-cloudbees avatar lucius-aws-quickstart avatar markewaite avatar schottsfired avatar tbulding avatar troy-ameigh avatar wellsiau-aws avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quickstart-cloudbees-ci's Issues

Domain name not exposed as a parameter

While it is possible to change the CloudBees Core domain name using kubectl, the change would be overwritten during an upgrade. Thus, domain name should be exposed as an optional parameter.

Once added, existing users should be able to fill in this parameter during their next upgrade. If the domain name was already changed using kubectl then there should be no effect on the environment.

For new installations, if a domain name is entered, then CloudBees Core won't be accessible until a CNAME is created which maps the domain name to the ELB.

Deployment guide feedback

Section heading:
Documentation issue description:
stack is failing with S3 Putpolicy error. This is not helping us to build environment at all

Ingress annotations are not applied

The annotations on ingress/cjoc:
https://github.com/aws-quickstart/quickstart-cloudbees-core/blob/master/templates/cloudbees-core-workload.template.yaml#L315-L323

Are not applied to the cluster during deployment:

[ec2-user@ip-10-0-152-53 ~]$ kubectl get ingress
NAME      HOSTS                                                                    ADDRESS   PORTS     AGE
cjoc      a5a069efd06ff11eaa5b60add6ba1aaf-151001025.us-east-1.elb.amazonaws.com             80        65m
[ec2-user@ip-10-0-152-53 ~]$ kubectl describe ingress cjoc
Name:             cjoc
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                                                                    Path  Backends
  ----                                                                    ----  --------
  a5a069efd06ff11eaa5b60add6ba1aaf-151001025.us-east-1.elb.amazonaws.com
                                                                          /cjoc   cjoc:80 (<none>)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"cjoc","namespace":"default"},"spec":{"rules":[{"host":"a5a069efd06ff11eaa5b60add6ba1aaf-151001025.us-east-1.elb.amazonaws.com","http":{"paths":[{"backend":{"serviceName":"cjoc","servicePort":80},"path":"/cjoc"}]}}]}}

Events:  <none>
[ec2-user@ip-10-0-152-53 ~]$

This issue is known to cause problems with the CLI (jenkins-cli.jar) in a default installation.

The issue is resolved by applying the annotations in the aforementioned link manually using kubectl edit ingress cjoc. Then find the ingress controller pod using kubectl get po -n ingress-nginx and delete (restart) it.

The CLI specifically needs the following annotation to function properly:
nginx.ingress.kubernetes.io/proxy-request-buffering: off

Deploy SSL certs via quick start guide template

Hi Team,

I’m trying to use your quick start guide templates to set up cloudbees ci in my environment.

I’m using this template( https://github.com/aws-quickstart/quickstart-cloudbees-ci/blob/main/templates/cloudbees-ci-workload.template.yaml ) to deploy jenkins into an existing cluster.

After jenkins set up I’m looking to deploy ssl Certs into jenkins url via cloudformation template but this quick start guide doesn’t provide that template.

cloudbees has ssl steps from below link which cannot be automated via cft. Do you have any way deploy ssl certs using cft please let me know
https://docs.cloudbees.com/docs/cloudbees-ci/2.235.2.3/cloud-admin-guide/kubernetes-self-signed-certificates#_installing_self_signed_certificates_on_kubernetes

SpotAgentNodesStack Template error: Unable to get mapping for K8sVersionMap::1.13::STD

When deploying to a fresh VPC I get this error in SpotAgentNodesStack:

Template error: Unable to get mapping for K8sVersionMap::1.13::STD

It looks like 1.13 needs to be added to the mapping below, and 1.10 should be dropped since it's no longer supported in the amazon-eks-nodegroup template.

https://github.com/aws-quickstart/quickstart-cloudbees-core/blob/3c13ac9a7514691b166d727971761c5f21713603/templates/cloudbees-core-spot-nodes.template.yaml#L439-L448.

Kubernetes builds don't run out of the box

After ce0d5a7, this appears in controller logs:

2021-01-21 13:32:49.407+0000 [id=36]	WARNING	o.c.j.p.k.KubernetesCloud#provision: Failed to count the # of live instances on Kubernetes
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://10.100.0.1/api/v1/namespaces/default/pods?labelSelector=jenkins%3Dslave. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods is forbidden: User "system:serviceaccount:default:jenkins" cannot list resource "pods" in API group "" in the namespace "default".
	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:589)
...

To fix the problem, add this to the Kubernetes Shared Cloud item in Operations Center:
image-20210106-152842

We expect a fix to be released in February which automatically configures this field.

OPTIONAL parameter LambdaZipsBucketName used unconditionally throughout cloudbees-core-existing-cluster.template.yaml

Issue

When tying to deploy to an existing EKS cluster using template cloudbees-core-existing-cluster.template.yaml the OPTIONAL parameter LambdaZipsBucketName is used unconditionally in Custom::CopyZips and all AWS::Lambda::Function resources.

While condition CreateLambdaZipsBucket based on presence of LambdaZipsBucketName is effectively used to create an S3 bucket, this bucket is never actually used.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.