{"id":26059658,"url":"https://github.com/orange-cloudfoundry/helm-kubectl-boshrelease","last_synced_at":"2026-02-27T04:15:47.356Z","repository":{"id":51149633,"uuid":"136046082","full_name":"orange-cloudfoundry/helm-kubectl-boshrelease","owner":"orange-cloudfoundry","description":"https://orange-cloudfoundry.github.io/helm-kubectl-boshrelease/","archived":false,"fork":false,"pushed_at":"2025-02-15T21:11:16.000Z","size":778,"stargazers_count":6,"open_issues_count":20,"forks_count":1,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-02-15T22:20:41.538Z","etag":null,"topics":["bosh","cfcr","helm","k8s","kubectl"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orange-cloudfoundry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-04T15:31:56.000Z","updated_at":"2025-02-13T09:51:42.000Z","dependencies_parsed_at":"2024-05-31T06:23:17.969Z","dependency_job_id":"7b3a2ec5-b8e3-4b75-b8a3-b2395a621edc","html_url":"https://github.com/orange-cloudfoundry/helm-kubectl-boshrelease","commit_stats":null,"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fhelm-kubectl-boshrelease","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fhelm-kubectl-boshrelease/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fhelm-kubectl-boshrelease/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orange-cloudfoundry%2Fhelm-kubectl-boshrelease/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orange-cloudfoundry","download_url":"https://codeload.github.com/orange-cloudfoundry/helm-kubectl-boshrelease/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242555377,"owners_count":20148694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bosh","cfcr","helm","k8s","kubectl"],"created_at":"2025-03-08T13:27:10.049Z","updated_at":"2025-12-24T16:11:56.163Z","avatar_url":"https://github.com/orange-cloudfoundry.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BOSH Release for Helm and Kubectl\n\n## Purpose\nThe purpose of this bosh release is to offer a bosh deployment for Helm chart and Kubectl product\nYou can declare in your deployment helm repositories and helm charts, a default storage class and ingress rules. \nThis bosh release should be use as an errand to apply charts.\nIt uses Helm V3.\n\n## Usage\nsee web site: https://orange-cloudfoundry.github.io/helm-kubectl-boshrelease/\nThese bosh release is composed by 1 jobs\n\n- action\n  - it creates namespace\n  - it applies kubectl command\n  - it adds helm repository\n  - it creates helm chart instance, or any helm command\n  - it creates secret\n  - it creates basic auth secret\n  - it can execute any shell\n\nDuring undeploy of the bosh release every thing created by action will be deleted.\n \n### Upload the last release\nTo use this bosh release, first upload it to your bosh:\nNote: _change the index the helm-kubectl-[index].yml to the last version of the bosh release_\n\n```\nbosh target BOSH_HOST\ngit clone https://github.com/orange-cloudfoundry/helm-kubectl-boshrelease\ncd helm-kubectl-boshrelease\nbosh upload release releases/helm-kubectl/helm-kubectl-1.yml\n```\n\n\n### Base deployment\n\n\n``` yaml\n#Deployment Identification\nname: cfcr-addon\n\n#Features Block\n\n#Releases Block\nreleases:\n- name: helm-kubectl\n  version: latest\n\n#Stemcells Block\nstemcells:\n- alias: default\n  os: ubuntu-xenial\n  version: latest\n\n#Update Block\nupdate:\n  canaries: 1\n  max_in_flight: 2\n  canary_watch_time: 15000-30000\n  update_watch_time: 15000-300000\n\n#Instance Groups Block\ninstance_groups:\n- name: cfcr-helm-addons\n  vm_type: small\n  stemcell: default\n  networks:\n  - name: ((network))\n  azs: [z1]\n  instances: 1\n  jobs:\n  - name: action\n    release: helm-kubectl\n    properties:\n      kubernetes:\n        host: ((kubernetes.host))\n        port: ((kubernetes.port))\n        cluster_ca_certificate: ((kubernetes.cluster_ca_certificate))\n        password: ((kubernetes-password))\n        default_storageclass: ((default_storageclass))\n      proxy:\n        https: ((https_proxy))\n        http: ((http_proxy))\n        noproxy: ((no_proxy))\n      repository_mirror:\n        enabled: true\n        url: https://((helm_mirror_url))\n      actions:\n      - type: helm_repo\n        name: stable\n        url: https://kubernetes-charts.storage.googleapis.com/\n      - type: helm_repo\n        name: incubator\n        url: https://kubernetes-charts-incubator.storage.googleapis.com/\n```\n### Action job\nAction job provide an array of action. They are apply during bosh errand usage or on each deploy in case of `run_on_each_deploy=true`\nHow it works internally: Each action will be converted into kubectl or helm command \n## add namespace\nAs helm_V3 doesn't create namespace, you can create namespace by using this kind of operator.\n \nbasic example: \n``` yaml\n - type: replace\n   path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n   value:\n     type: namespace\n     name: my-namespace    \n```\n\nexample with annotations and labels:\n\n``` yaml\n - type: replace\n   path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n   value:\n     type: namespace\n     name: my-namespace\n     annotations:\n     - name: myannotation\n       value: hello\n     labels:\n     - name: mylabel\n       value: hello\n         \n```\n\n\nCaution: During bosh delete-deployment the created namespace will be deleted. So be careful do  not create `kube-system` namespace with this kind of operator. \n\n## add helm repository\nSome time the chart need to be loaded from a specific helm repository. You can do that with this operator.\n \n``` yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: helm_repo\n    name: gitlab\n    url: https://charts.gitlab.io                          \n```\n\n## add helm chart\nHelm chart deployment can be customize by properties or by value file  \n\n\n``` yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: helm_chart\n    name: gitlab\n    chart:  gitlab/gitlab\n    namespace: gitlab\n    version: ((gitlab-version))\n    properties:\n    - name: gitlab.unicorn.ingress.tls.secretName\n      value: release-gitlab-tls\n    - name: unicorn.ingress.enabled\n      value: false\n\n    values_file_content:\n      global:\n        ## GitLab operator is Alpha. Not for production use.\n        operator:\n          enabled: false\n        ## doc/installation/deployment.md#deploy-the-community-edition\n        edition: ce\n\n        ## doc/charts/globals.md#gitlab-version\n        # gitlabVersion: master\n\n        ## doc/charts/globals.md#application-resource\n        application:\n          create: false\n        ...\n                          \n```\nBy default the helm type will perform\n\nCaution: During bosh delete-deployment the created instance of chart will be deleted.\n\nHelm sample using custom command:\n``` yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: helm_chart\n    name: gitlab\n    chart:  gitlab/gitlab\n    namespace: gitlab\n    version: ((gitlab-version))\n    cmd: test # override default helm command (ie: 'upgrade') \n    options: # override default options (ie: '--install --atomic --cleanup-on-fail') and reset it\n```\n## add kubectl cmd\n\nexample of use with an apply deployment\n``` yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: kubectl\n    name: \"deploy-k8sdash\"\n    cmd: \"apply\"\n    options: \"\"\n    content:\n      kind: Deployment\n      apiVersion: apps/v1\n      metadata:\n        name: k8dash\n        namespace: kube-system\n      spec:\n        replicas: 1\n        selector:\n          matchLabels:\n            k8s-app: k8dash\n        template:\n          metadata:\n            labels:\n              k8s-app: k8dash\n          spec:\n            containers:\n            - name: k8dash\n              image: herbrandson/k8dash:latest\n              ports:\n              - containerPort: 4654\n              livenessProbe:\n                httpGet:\n                  scheme: HTTP\n                  path: /\n                  port: 4654\n                initialDelaySeconds: 30\n                timeoutSeconds: 30\n            nodeSelector:\n              'beta.kubernetes.io/os': linux\n```\n\nexample of use with direct apply on content from internet :\n\n``` yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: kubectl\n    name: \"crd-for-cert-manager\"\n    cmd: \"apply\"\n    options: \"-f https://github.com/jetstack/cert-manager/releases/download/v((cert-manager-version))/cert-manager-no-webhook.yaml\"\n``` \n\nexample of use to produce a config map with very large content:\n\n```  yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=kubectl/properties/commands/-\n  value:\n    name: \"cm-grafana-k8s-master-node-exporter-dashboard\"\n    cmd: \"replace\"\n    options: \" --force --save-config=false \"\n    apply:\n      apiVersion: v1\n      kind: ConfigMap\n      metadata:\n        name: dash-k8s-all-node-exporter\n        namespace: monitoring\n        labels:\n          grafana_dashboard: '1'\n      data:\n        grafana_k8d_all_node_exporter_dashboard.json: |\n          {\n            \"annotations\": {\n              \"list\": [\n                {\n                  \"builtIn\": 1,\n                  ....\n```                   \n                  \n## add secret\n\nThis action will encode in base64 the content of value and create a K8S secret in the namespace.\nBy default the type of the secret is generic but it can be override by `secret_type`  \n\nexample of use:\n``` yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: secret\n    name: cloud-credentials\n    namespace: velero\n    data:\n    - name: cloud\n      value: |\n        [default]\n        aws_access_key_id = backup_remote_s3_access_key_id\n        aws_secret_access_key = ((backup_remote_s3_secret_access_key))\n```\n## add secret for basic auth\n\nThis action will encode in base64 the content of value and create a K8S secret in the namespace.\n\nexample of use:\n``` yaml\n- type: replace\n  path: /instance_groups/name=cfcr-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: basic_auth_secret\n    name: mybasicauth\n    namespace: traefik\n    user: admin\n    password: ((mypassword))\n```\n\n## add exec action\nThis action let user to use kubelet or helm or kustomise in shell\nto perform any shell script.\n\nexample:\n\n``` \n- type: replace\n  path: /instance_groups/name=k8s-helm-addons/jobs/name=action/properties/actions/-\n  value:\n    type: exec\n    cmd: |\n      cat \u003c\u003c EOF \u003e /tmp/coredns.yml\n      ((coredns_clusterrole))\n      ---\n      ((coredns_clusterrolebinding))\n      ---\n      ((coredns_configmap))\n      ---\n      ((coredns_deployment))\n      ---\n      ((coredns_service))\n      EOF\n      kubectl apply -f  /tmp/coredns.yml\n```\n\n\n\n\n\n### Development\n\nAs a developer of this release, create new releases and upload them:\n\n```\nbosh create release --force \u0026\u0026 bosh -n upload release\n```\n\n### Final releases\n\nTo share final releases:\n\n```\nbosh create release --final\n```\n\nBy default the version number will be bumped to the next major number. You can specify alternate versions:\n\n\n```\nbosh create release --final --version 2.1\n```\n\nAfter the first release you need to contact [Dmitriy Kalinin](mailto://dkalinin@pivotal.io) to request your project is added to https://bosh.io/releases (as mentioned in README above).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-cloudfoundry%2Fhelm-kubectl-boshrelease","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forange-cloudfoundry%2Fhelm-kubectl-boshrelease","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forange-cloudfoundry%2Fhelm-kubectl-boshrelease/lists"}