All Projects → deliverybot → helm

deliverybot / helm

Licence: MIT License
GitHub action for deploying Helm charts.

Programming Languages

javascript
184084 projects - #8 most used programming language
shell
77523 projects
Smarty
1635 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to helm

deployment-status
GitHub action for updating deployments with status events.
Stars: ✭ 24 (-77.57%)
Mutual labels:  deployment, action, deployment-automation
kafkaer
Template based Kafka topic/cluster/ACL management
Stars: ✭ 37 (-65.42%)
Mutual labels:  deployment, deployment-automation
Meli
Platform for deploying static sites and frontend applications easily. Automatic SSL, deploy previews, reverse proxy, and more.
Stars: ✭ 2,125 (+1885.98%)
Mutual labels:  deployment, deployment-automation
draughtsman
An in-cluster agent that handles Helm based deployments
Stars: ✭ 31 (-71.03%)
Mutual labels:  deployment, helm
AutoDeploy
Building an automated deployment system which is similar to AWS CodeDeploy
Stars: ✭ 44 (-58.88%)
Mutual labels:  deployment, deployment-automation
Keel
Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates
Stars: ✭ 1,870 (+1647.66%)
Mutual labels:  deployment, helm
corda-kubernetes-deployment
Corda Kubernetes Deployment
Stars: ✭ 30 (-71.96%)
Mutual labels:  helm, deployment-automation
Rsync Deployments
GitHub Action for deploying code via rsync over ssh
Stars: ✭ 59 (-44.86%)
Mutual labels:  deployment, action
deployer-php-action
Deploy PHP projects using Deployer from Github Actions
Stars: ✭ 57 (-46.73%)
Mutual labels:  deployment, action
configurator
Synchronize and Version Control ConfigMaps & Secrets across Deployment Rollouts.
Stars: ✭ 68 (-36.45%)
Mutual labels:  deployment, helm
useful-playbooks
🚚 Useful Ansible playbooks for easily deploy your website or webapp to absolutely fresh remote virtual server and automation many processes. Only 3 minutes from the playbook run to complete setup server and start it.
Stars: ✭ 52 (-51.4%)
Mutual labels:  deployment, deployment-automation
K8s Deployment Strategies
Kubernetes deployment strategies explained
Stars: ✭ 2,649 (+2375.7%)
Mutual labels:  helm, deployment-automation
bitops
Automate the provisioning and configuration of cloud infrastructure.
Stars: ✭ 28 (-73.83%)
Mutual labels:  helm, deployment-automation
AutoDeploy
AutoDeploy is a single configuration deployment library
Stars: ✭ 43 (-59.81%)
Mutual labels:  deployment, deployment-automation
monitoring-rancher
🤠How to Set up Rancher Server Monitoring with TIG Stack?
Stars: ✭ 22 (-79.44%)
Mutual labels:  deployment, deployment-automation
workflow-webhook
A Github workflow action to call a webhook with payload data from the event. Support for JSON or URL encoded endpoints.
Stars: ✭ 90 (-15.89%)
Mutual labels:  deployment, action
trueChart-Menubar4Sense
MENUBAR as visualization extension for Qlik Sense® allows for vertical and horizontal buttons and selections (fields, master dimensions and variables) as well as unlimited trigger based Actions. #trueChart #menubar #highcoordination
Stars: ✭ 19 (-82.24%)
Mutual labels:  action
k8s-istio-demo
Demo showing the capabilities of Istio
Stars: ✭ 22 (-79.44%)
Mutual labels:  helm
litmus-helm
Helm Charts for the Litmus Chaos Operator & CRDs
Stars: ✭ 23 (-78.5%)
Mutual labels:  helm
floyer
🚀 Floyer is simple and fast deployment tool using git/svn and (S)FTP - especially useful for shared hosting.
Stars: ✭ 57 (-46.73%)
Mutual labels:  deployment

Helm Action

Deploys a helm chart using GitHub actions. Supports canary deployments and provides a built in helm chart for apps that listen over http to get your ramped up quickly.

View an example repository using this action at github.com/deliverybot/example-helm.

Parameters

Inputs

Inputs below are additionally loaded from the payload of the deployment event payload if the action was triggered by a deployment.

  • release: Helm release name. Will be combined with track if set. (required)
  • namespace: Kubernetes namespace name. (required)
  • chart: Helm chart path. If set to "app" this will use the built in helm chart found in this repository. (required)
  • chart_version: The version of the helm chart you want to deploy (distinct from app version)
  • values: Helm chart values, expected to be a YAML or JSON string.
  • track: Track for the deployment. If the track is not "stable" it activates the canary workflow described below.
  • task: Task name. If the task is "remove" it will remove the configured helm release.
  • dry-run: Helm dry-run option.
  • token: Github repository token. If included and the event is a deployment then the deployment_status event will be fired.
  • value-files: Additional value files to apply to the helm chart. Expects a JSON encoded array or a string.
  • secrets: Secret variables to include in value file interpolation. Expects a JSON encoded map.
  • helm: Helm binary to execute, one of: [helm, helm3].
  • version: Version of the app, usually commit sha works here.
  • timeout: specify a timeout for helm deployment
  • repository: specify the URL for a helm repo to come from
  • atomic: If true, upgrade process rolls back changes made in case of failed upgrade. Defaults to true.

Additional parameters: If the action is being triggered by a deployment event and the task parameter in the deployment event is set to "remove" then this action will execute a helm delete $service

Versions

  • helm: v2.16.1
  • helm3: v3.0.0

Environment

  • KUBECONFIG_FILE: Kubeconfig file for Kubernetes cluster access.

Value file interpolation

The following syntax allows variables to be used in value files:

  • ${{ secrets.KEY }}: References secret variables passed in the secrets input.
  • ${{ deployment }}: References the deployment event that triggered this action.

Example

# .github/workflows/deploy.yml
name: Deploy
on: ['deployment']

jobs:
  deployment:
    runs-on: 'ubuntu-latest'
    steps:
    - uses: actions/checkout@v1

    - name: 'Deploy'
      uses: 'deliverybot/helm@v1'
      with:
        release: 'nginx'
        namespace: 'default'
        chart: 'app'
        token: '${{ github.token }}'
        values: |
          name: foobar
        value-files: >-
        [
          "values.yaml", 
          "values.production.yaml"
        ]
      env:
        KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}'

Example canary

If a track is chosen that is equal to canary, this updates the helm chart in a few ways:

  1. Release name is changed to {release}-{track} (eg. myapp-canary).
  2. The service is disabled on the helm chart service.enabled=false
  3. The ingress is disabled on the helm chart ingress.enabled=false

Not enabling the service or ingress allows the stable ingress and service resources to pick up the canary pods and route traffic to them.

# .github/workflows/deploy.yml
name: Deploy
on: ['deployment']

jobs:
  deployment:
    runs-on: 'ubuntu-latest'
    steps:
    - uses: actions/checkout@v1

    - name: 'Deploy'
      uses: 'deliverybot/helm@v1'
      with:
        release: 'nginx'
        track: canary
        namespace: 'default'
        chart: 'app'
        token: '${{ github.token }}'
        values: |
          name: foobar
      env:
        KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}'

Example pr cleanup

If you are creating an environment per pull request with Helm you may have the issue where pull request environments like pr123 sit around in your cluster. By using GitHub actions we can clean those up by listening for pull request close events.

# .github/workflows/pr-cleanup.yml
name: PRCleanup
on:
  pull_request:
    types: [closed]

jobs:
  deployment:
    runs-on: 'ubuntu-latest'
    steps:
    - name: 'Deploy'
      uses: 'deliverybot/helm@v1'
      with:
        # Task remove means to remove the helm release.
        task: 'remove'
        release: 'review-myapp-${{ github.event.pull_request.number }}'
        version: '${{ github.sha }}'
        track: 'stable'
        chart: 'app'
        namespace: 'example-helm'
        token: '${{ github.token }}'
      env:
        KUBECONFIG_FILE: '${{ secrets.KUBECONFIG }}'
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].