continuous-deployment-on-kubernetes | Get up and running with Jenkins on Google Kubernetes Engine | Continuous Deployment library

 by   GoogleCloudPlatform Shell Version: Current License: Apache-2.0

kandi X-RAY | continuous-deployment-on-kubernetes Summary

kandi X-RAY | continuous-deployment-on-kubernetes Summary

continuous-deployment-on-kubernetes is a Shell library typically used in Devops, Continuous Deployment, Jenkin, Docker applications. continuous-deployment-on-kubernetes has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

This guide will take you through the steps necessary to continuously deliver your software to end users by leveraging Google Container Engine and Jenkins to orchestrate the software delivery pipeline. If you are not familiar with basic Kubernetes concepts, have a look at Kubernetes 101.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              continuous-deployment-on-kubernetes has a medium active ecosystem.
              It has 1564 star(s) with 871 fork(s). There are 130 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 15 open issues and 82 have been closed. On average issues are closed in 184 days. There are 7 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of continuous-deployment-on-kubernetes is current.

            kandi-Quality Quality

              continuous-deployment-on-kubernetes has no bugs reported.

            kandi-Security Security

              continuous-deployment-on-kubernetes has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              continuous-deployment-on-kubernetes is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              continuous-deployment-on-kubernetes releases are not available. You will need to build from source code and install.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of continuous-deployment-on-kubernetes
            Get all kandi verified functions for this library.

            continuous-deployment-on-kubernetes Key Features

            No Key Features are available at this moment for continuous-deployment-on-kubernetes.

            continuous-deployment-on-kubernetes Examples and Code Snippets

            No Code Snippets are available at this moment for continuous-deployment-on-kubernetes.

            Community Discussions

            QUESTION

            Combining Terraform wth CI/CD pipelines when provisioning is a rare event compared to usual code pushes
            Asked 2022-Feb-15 at 09:04

            You see a lot of articles on combining GitHub actions with Terraform. It makes sense that anytime one wants to provision something different in their infrastructure that a CI/CD pipeline would add visibility and repeatability to an otherwise manual process.

            But some article make it sound as though Terraform is doing the deploying of any change. For example, this article says "anytime there is a push to the src directory it will kick off the action which will have Terraform deploy the changes made to your website."

            But doesn't this only make sense if the change you are making is related to provisioning infrastructure? Why would you want any code push to trigger a Terraform job if most pushes to the codecase have nothing to do with provisioning new infrastrucutre? Aren't most code pushes things like changing some CSS on the website, or adding a function to a back-end node script. These don't require provisioning new infrastructure, as the code is just placed onto existing infrastructure.

            Or perhaps the article is suggesting the repo is dedicated only to Terraform.

            ...

            ANSWER

            Answered 2022-Feb-15 at 09:04

            In my case the changes are from terraform(only) repos. Any change to infra would be triggered by these repos. In rest of the actual app code, it would always be Ansible-Jenkins. Deploying terraform infrastructure change everytime there is a push to app-code might bring down the uptime of the application. In case of containerized application it would be Helm-kubernetes doing the application bit.

            Source https://stackoverflow.com/questions/71115103

            QUESTION

            argocd app create in CI pipeline (GitHub Actions, Tekton, ...) throws "PermissionDenied desc = permission denied: applications, create, default/myapp"
            Asked 2022-Feb-10 at 15:01

            From our Tekton pipeline we want to use ArgoCD CLI to do a argocd app create and argocd app sync dynamically based on the app that is build. We created a new user as described in the docs by adding a accounts.tekton: apiKey to the argocd-cm ConfigMap:

            ...

            ANSWER

            Answered 2022-Feb-10 at 15:01

            The problem is mentioned in Argo's useraccounts docs:

            When you create local users, each of those users will need additional RBAC rules set up, otherwise they will fall back to the default policy specified by policy.default field of the argocd-rbac-cm ConfigMap.

            But these additional RBAC rules could be setup the simplest using ArgoCD Projects. And with such a AppProject you don't even need to create a user like tekton in the ConfigMap argocd-cm. ArgoCD projects have the ability to define Project roles:

            Projects include a feature called roles that enable automated access to a project's applications. These can be used to give a CI pipeline a restricted set of permissions. For example, a CI system may only be able to sync a single app (but not change its source or destination).

            There are 2 solutions how to configure the AppProject, role & permissions incl. role token:

            1. using argocd CLI
            2. using a manifest YAML file
            1.) Use argocd CLI to create AppProject, role & permissions incl. role token

            So let's get our hands dirty and create a ArgoCD AppProject using the argocd CLI called apps2deploy:

            Source https://stackoverflow.com/questions/71052421

            QUESTION

            Deploy GCP Cloud functions to Artifact Registry using Terraform
            Asked 2022-Feb-07 at 21:21

            I am trying to deploy cloud function to artifact registry instead of container registry using Terraform.

            I have created an artifact repository in GCP and Using the google-beta provider. But I am not able to understand where to mention "docker-registry" path(path for artifact registry)

            Following in my main tf file's create CF:- I have added a parameter called docker-repository(this doesn't exist in terraform) based on https://cloud.google.com/functions/docs/building#image_registry_options But looks like this parameter doesn't exist in terraform and is giving me errors.

            ...

            ANSWER

            Answered 2022-Feb-07 at 21:21

            At this time, your will need to use Terraform plus Cloud Build to specify the repository to use. You can then use gcloud --docker-repository in a Cloud Build step.

            This document explains how to integrate Terraform with Cloud Build.

            Managing infrastructure as code with Terraform, Cloud Build, and GitOps

            Source https://stackoverflow.com/questions/71017452

            QUESTION

            CI/CD Kubernetes Deployment using Github Actions
            Asked 2022-Jan-05 at 18:43

            We are thinking about migrating our infrastructure to Kubernetes. All our Source-code is in GitHub, Docker containers are in Docker Hub.

            I would like to have a CI/CD pipeline for Kubernetes only using GitHub and Docker Hub. Is there a way?

            If not, what tools (as few as possible) should we use?

            ...

            ANSWER

            Answered 2022-Jan-05 at 18:43

            You can go it as per need using the Github Action and Docker hub only.

            You should also checkout the keel with GitHub :https://github.com/keel-hq/keel

            Step: 1

            Source https://stackoverflow.com/questions/70594453

            QUESTION

            Jenkins "unable to resolve class Declarative" error when building Python script
            Asked 2021-Dec-23 at 12:01

            I began learning to use to Jenkins and wanted to make it run a Python script of mine automatically. I followed their tutorial and created a new Project called Pipeline Test.

            I've also added the GitHub repo of a Python script I wanted to test (https://github.com/mateasmario/spam-bot).

            As you can see, I've created a Jenkinsfile in that repo. Because my script is called spam-bot.py, I want my Jenkinsfile to run that script every time I click "Build now" inside Jenkins. This is the content of my Jenkinsfile:

            ...

            ANSWER

            Answered 2021-Dec-23 at 12:01

            Your Jenkinsfile contains invalid syntax on the first line, which is why the error is being thrown. Assuming you intended that first line to be a comment, you can modify the pipeline code to be:

            Source https://stackoverflow.com/questions/70459146

            QUESTION

            How to deploy an AWS Kinesis Data Analytics App without downtime
            Asked 2021-Dec-14 at 09:41

            We currently have an AWS Kinesis Data Analytics app that requires a .jar file to run.

            We have automated the deployment for our .jar file that resides in an S3 bucket.

            Our issue is, whenever the .jar file is updated we are forced to restart the kinesis app to get the new build which is causing downtime

            Does anyone have a workaround or another way of deploying the app Without causing downtime ?

            ...

            ANSWER

            Answered 2021-Dec-14 at 09:41

            Flink itself does not support zero-downtime deployments. While a few users have built their own solutions for this, it requires implementing application-specific deployment automation and tooling. See

            for examples.

            Source https://stackoverflow.com/questions/70346220

            QUESTION

            ArgoCD app-of-apps create the child app but doesn't deploy the manifests inside the app
            Asked 2021-Dec-08 at 13:55

            I want to use the App-of-apps practice with ArgoCD. So I created a simple folder structure like the one below. Then I created a project called dev and I created an app that will look inside the folder apps, so when new Application manifests are included, it will automatically create new applications. This last part works. Every time I add a new Application manifest, a new app is created as a child of the apps. However, the actual app that will monitor the respective folder and create the service and deployment is not created and I can't figure out what I am doing wrong. I have followed different tutorials that use Helm and Kustomize and all have given the same end result.

            Can someone spot what am I missing here?

            • Folder structure
            ...

            ANSWER

            Answered 2021-Dec-08 at 13:55
            Posting comment as the community wiki answer for better visibility

            It turns out that at the moment ArgoCD can only recognize application declarations made in ArgoCD namespace, but @everspader was doing it in the default namespace. For more info, please refer to GitHub Issue

            Source https://stackoverflow.com/questions/70211189

            QUESTION

            Does implementing CI/CD require prerequisite steps?
            Asked 2021-Nov-30 at 19:58

            I'm trying to understand CI/CD strategy.

            Many CI/CD articles mention that it's a automation services of build, test, deploy phase.

            I would to know does CI/CD concept have any prerequisites step(s)?

            For example, if I make a simple tool that automatically builds and deploys, but test step is manual - can this be considered CI/CD?

            ...

            ANSWER

            Answered 2021-Nov-30 at 19:58

            There's a minor point of minutia that should be mentioned first: the "D" in "CI/CD" can either mean "Delivery" or "Deployment". For the sake of this question, we'll accept the two terms as relatively interchangeable -- but be aware that others may apply a more narrow definition, which may be slightly different depending on which "D" you mean, specifically. For additional context, see: Continuous Integration vs. Continuous Delivery vs. Continuous Deployment

            For example, if I make a simple tool that automatically builds and deploys, but test step is manual - can this be considered CI/CD?

            Let's break this down. Beforehand, let's establish what can be considered "CI/CD". Easy enough: if your (automated) process is practicing both CI (continuous integration) and CD (continuous deployment), then we can consider the solution as being some form of "CI/CD".

            We'll need some definitions for CI and CD (see above link), which may vary by opinion. But if the question is whether this can be considered CI/CD, we can proceed on the lowest common denominator / bare minimum of popular/accepted definitions and apply those definitions liberally as they relate to the principles of CI/CD.

            With that context, let's proceed to determine whether the constituent components are present.

            Is Continuous Integration being practiced?

            Yes. Continuous Integration is being practiced in this scenario. Continuous integration, in its most basic sense, is making sure that your ongoing work is regularly (continually) integrated (tested).

            The whole idea is to combat the consequences of integrating (testing) too infrequently. If you do many many changes and never try to build/test the software, any of those changes may have very well broken the build, but you won't know until the point in time where integration (testing) occurs.

            You are regularly integrating your changes and making sure the software still builds. This is unequivocally CI in practice.

            But there are no automated tests?!

            One may make an objection to the effect of "if you're not running what is traditionally thought of as tests (unit|integration|smoke|etc) as part of your automated process, it's not CI" -- this is a demonstrably false statement.

            Even though in this case you mention that your "test" steps would be manual, it's still fair to say that simply building your application would be sufficient to meet the basic definition of a "test" in the sense of continuous integration. Successfully building (e.g. compiling) your code is, in itself IS a test. You are effectively testing "can it build". If your code change breaks the compile/build process, your CI process will tell you so right after committing your code -- that's CI in action.

            Just like code changes may break a unit test, they can also break the compilation process -- automating your build tests that your changes did not break the build and is, therefore, a kind of continuous integration, without question.

            Sure, your product can be broken by your changes even if it compiles successfully. It may even be the case that those software defects would have been caught by sufficient unit testing. But the same could be said of projects with proper unit tests, even projects with "100% code coverage". We certainly don't consider projects with test gaps as not practicing CI. The size of the test gap doesn't make the distinction between CI and non-CI; it's irrelevant to the definition.

            Bottom line: building your software exercises (integrates/tests) your code changes, if even only in a minimally significant degree. Doing this on a continuous basis is a form of continuous integration.

            Is Continuous Deployment/Delivery being practiced

            Yes. It is plain to see in this scenario that, if you are deploying/delivering your software to whatever its 'production environment' is in an automated fashion then you have the "CD" component to CI/CD, at least in some minimal degree. The fact that your tests may be manual is not consequential.

            Similar to the above, reasonable people could disagree on the effectiveness of the implementation depending on the details, but one would not be able to make the case that this practice is non-CD, by definition.

            Conclusion: can this practice be considered "CI/CD"?

            Yes. Both elements of CI and CD are present in at least a minimum degree. The practices used probably can't reasonably be called non-CI or non-CD. Therefore, it should be concluded this described practice can be considered "CI/CD".

            I think it goes without saying that the described CI/CD process has gaps and could benefit from improvement and, with the lack of automated tests and other features, doesn't reap all the possible benefits of a robust CI/CD process could offer. However, this doesn't render the process non-CICD by any means. It's certainly CI/CD in practice; whether it's a particularly good or robust CI/CD practice is a subject of opinion.

            does CI/CD concept have any prerequisites step(s)?

            No, there are no specific prerequisites (like writing automated software tests, for example) to applying CI/CD concepts. You can apply both CI and CD independently of one another without any prerequisites.

            To further illustrate, let's think of an even more minimal project with "CI/CD"...

            CD could be as simple as committing to the main branch repository of a GitHub Pages. If that same Pages repo, for example, uses Jekyll, then you have CI, too, as GitHub will build your project automatically in addition to deploying it and inform you of build errors when they occur.

            In this basic example, the only thing that was needed to implement "CI/CD" was commit the Jekyll project code to a GitHub Pages repository. No prerequisites.

            There's even cases where you can accurately consider a project as having a CI process and the CI process might not even build any software at all! CI could, for example, consist solely of code style checks or other trivial checks like checking for newlines at the end of files. When projects only include these kinds of checks alone, we would still call that check process "CI" and it wouldn't be an inaccurate description of the process.

            Source https://stackoverflow.com/questions/70166800

            QUESTION

            Build works on local but fails on codemagic | Execution failed for task ':app:stripDebugDebugSymbols'
            Asked 2021-Nov-09 at 10:54

            I'm trying to implement a continuous deployment system to build my app and deploy to Google Play using codemagic. Doing a build works fine locally but fails remotely on codemagic.

            Error summary:

            ...

            ANSWER

            Answered 2021-Nov-09 at 10:54

            to fix this you need to upgrade Gradle version in android/gradle/wrapper/gradle-wrapper.properties to 6.7.1 or commit gradle wrapper to your repository if you don't have this file.

            Additional to that you also might need to upgrade Android Gradle plugin in andriod/build.gradle

            Source https://stackoverflow.com/questions/69876065

            QUESTION

            Why does Azure Pipelines say "The environment does not exist or has not been authorized for use"?
            Asked 2021-Oct-28 at 12:24

            In Azure Pipelines YAML, you can specify an environment for a job to run in.

            ...

            ANSWER

            Answered 2021-Oct-13 at 07:32

            Why does Azure Pipelines say "The environment does not exist or has not been authorized for use"?

            First, you need to make sure you are Creator in the Security of environment:

            Second, make sure change/create the environment name from yaml editor, not from repo.

            If above not help you, may I know what is your role in the project, Project Reader?

            Source https://stackoverflow.com/questions/69546506

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install continuous-deployment-on-kubernetes

            For a more in depth best practices guide, go to the solution posted here.
            In this lab, you will use Helm to install Jenkins with a stable chart. Helm is a package manager that makes it easy to configure and deploy Kubernetes applications. Once you have Jenkins installed, you'll be able to set up your CI/CD pipleline.
            Download and install the helm binary wget https://get.helm.sh/helm-v3.2.1-linux-amd64.tar.gz
            Unzip the file to your local system: tar zxfv helm-v3.2.1-linux-amd64.tar.gz cp linux-amd64/helm .
            Add the official stable repository. ./helm repo add stable https://kubernetes-charts.storage.googleapis.com
            Ensure Helm is properly installed by running the following command. You should see version v3.2.1 appear: ./helm version Output (do not copy): version.BuildInfo{Version:"v3.2.1", GitCommit:"fe51cd1e31e6a202cba7dead9552a6d418ded79a", GitTreeState:"clean", GoVersion:"go1.13.10"}
            You will use a custom values file to add the GCP specific plugin necessary to use service account credentials to reach your Cloud Source Repository.
            Use the Helm CLI to deploy the chart with your configuration set. ./helm install cd-jenkins -f jenkins/values.yaml stable/jenkins --version 1.7.3 --wait Output (do not copy): ... For more information on running Jenkins on Kubernetes, visit: https://cloud.google.com/solutions/jenkins-on-container-engine
            The Jenkins pod STATUS should change to Running when it's ready: kubectl get pods Output (do not copy): NAME READY STATUS RESTARTS AGE cd-jenkins-7c786475dd-vbhg4 1/1 Running 0 1m
            Configure the Jenkins service account to be able to deploy to the cluster. kubectl create clusterrolebinding jenkins-deploy --clusterrole=cluster-admin --serviceaccount=default:cd-jenkins Output (do not copy): clusterrolebinding.rbac.authorization.k8s.io/jenkins-deploy created
            Set up port forwarding to the Jenkins UI, from Cloud Shell: export JENKINS_POD_NAME=$(kubectl get pods -l "app.kubernetes.io/component=jenkins-master" -o jsonpath="{.items[0].metadata.name}") kubectl port-forward $JENKINS_POD_NAME 8080:8080 >> /dev/null &
            Now, check that the Jenkins Service was created properly: kubectl get svc Output (do not copy): NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE cd-jenkins 10.35.249.67 <none> 8080/TCP 3h cd-jenkins-agent 10.35.248.1 <none> 50000/TCP 3h kubernetes 10.35.240.1 <none> 443/TCP 9h This Jenkins configuration is using the Kubernetes Plugin, so that builder nodes will be automatically launched as necessary when the Jenkins master requests them. Upon completion of the work, the builder nodes will be automatically turned down, and their resources added back to the cluster's resource pool. Notice that this service exposes ports 8080 and 50000 for any pods that match the selector. This will expose the Jenkins web UI and builder/agent registration ports within the Kubernetes cluster. Additionally the jenkins-ui services is exposed using a ClusterIP so that it is not accessible from outside the cluster.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git

          • CLI

            gh repo clone GoogleCloudPlatform/continuous-deployment-on-kubernetes

          • sshUrl

            git@github.com:GoogleCloudPlatform/continuous-deployment-on-kubernetes.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Consider Popular Continuous Deployment Libraries

            Try Top Libraries by GoogleCloudPlatform

            microservices-demo

            by GoogleCloudPlatformPython

            terraformer

            by GoogleCloudPlatformGo

            training-data-analyst

            by GoogleCloudPlatformJupyter Notebook

            python-docs-samples

            by GoogleCloudPlatformJupyter Notebook

            golang-samples

            by GoogleCloudPlatformGo