Re: Does Helm has a plan to support the complete Operator maturity level?
Devdatta Kulkarni
Hi Anil,
To complement and add to Paul and Matt's response.
Going a step further beyond understanding the difference between an Operator and Helm, there are also some Operators in the community that are written to automate distribution and management of Helm charts, such as the Helm Operator from Operator SDK and our
project KubePlus (https://github.com/cloud-ark/kubeplus). These Operators essentially wrap a Kubernetes-native API around Helm charts. The need for such Operators arises in situations when there
are multiple teams or personas involved, such as provider of the application and consumer of the application, - say a DevOps team is looking to deliver an application as a service to their product team. For such a service-based delivery model, the typical
day 2 operations include things like - ability to apply resource policies at application-level, ability to troubleshoot the deployed applications, ability to track resource consumption per application instance, etc. Generic Operators like KubePlus can help
with these operations. If you are looking
for day 2 operations such as the above, you can check out KubePlus.
-Devdatta
From: cncf-helm@... on behalf of Matt Farina Sent: Wednesday, October 6, 2021 2:04 PM To: Anil Kumar Cc: cncf-helm@...; Paul C Subject: Re: [cncf-helm] Does Helm has a plan to support the complete Operator maturity level?
I’d like to add to what Paul said.
Helm and operators are two different types of things. They don’t solve the same problem. Think of it this way, would I ask apt or yum to implement ansible features? The answer is obviously no because they solve two different problems and can be
used to compliment each other. Ansible regularly uses RPMs and Debian packages.
Helm is a package manager like apt or yum. It is used to install, upgrade, and uninstall packages.
Operators are more complex. To quote the original definition of
operators…
It’s about managing instances of applications. This reminds me of something like ansible or Chef. It’s more like Chef conceptually because Chef did things with agents and a pull based model.
These two can complement each other. An operator can use Helm and charts for the install, upgrade, and uninstall elements. In fact, some do.
So, I would not expect to have Helm support operator capabilities because they solve different problems. The fact that they’re compared that way is marketing rather than technical.
- Matt Farina
|
|||
|
|||
Re: Does Helm has a plan to support the complete Operator maturity level?
Fox, Kevin M <Kevin.Fox@...>
I don't think they ever designed their lifecycle definition to be agnostic to operators. The page there is talking specifically about: Operator Capability Levels. So I don't knock them for being operator specific.
That being said, the view of cloud native app packaging needing these kinds of capabilities, and easy description thereof is a good thing. Maybe a workgroup under the CNCF could form (or one already exists) to standardize some terminology and encourage its use? Anyone interested in doing that? Thanks, Kevin ________________________________________ From: cncf-helm@... <cncf-helm@...> on behalf of Paul C <username.taken@...> Sent: Wednesday, October 6, 2021 8:31 AM To: Anil Kumar Cc: cncf-helm@... Subject: Re: [cncf-helm] Does Helm has a plan to support the complete Operator maturity level? Check twice before you click! This email originated from outside PNNL. The complete Operator capability level is a bit of a misnomer and very self serving and are often not operator specific, but assume the operator writer has implemented extra things. There not really much there that a well written Helm Chart can't/won't do. * Full lifecycle - Assuming the app is fairly cloud native the kube controllers (deployment/statefulset/etc) will manage most failure recoveries, and jobs/cronjobs for backups, and helm hooks for assisting with upgrade tasks. * Deep insight - this isn't really an operator thing, except for the fact an operator can automatically set up prometheus (and similar) servicemonitors/alerts etc, all things you can do with your helm charts * Auto Pilot - most of the auto-scaling can be done with kube HPA/VPA and similar techniques, I've seens cronjobs used to do scheduled scaling as well, abnormality detection etc can be done as easily with a sidecar application as it can with an operator. On Wed, Oct 6, 2021 at 3:53 AM Anil Kumar <anil181@...<mailto:anil181@...>> wrote: Hello Helm Team, We are using Helm in our product for the deployments and upgrade. We are looking at the next step of introducing the Kubernetes Operator for handling the Day 2 Operations. Going through this page we see that Helm does not support complete Operator capability level:https://sdk.operatorframework.io/docs/overview/operator-capabilities/<https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsdk.operatorframework.io%2Fdocs%2Foverview%2Foperator-capabilities%2F&data=04%7C01%7CKevin.Fox%40pnnl.gov%7C0268ce034cde496114e308d988de8670%7Cd6faa5f90ae240338c0130048a38deeb%7C0%7C0%7C637691312500956290%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=2HAcTqHjb84hpT00bwJ10unC1B4aCUNt44a5JBkafug%3D&reserved=0> Could someone let me know if Helm has a plan to support the complete Operator maturity level on the roadmap as we see with Ansible and Go. Thanks and Regards, Anil Kumar
|
|||
|
|||
Re: Does Helm has a plan to support the complete Operator maturity level?
Fox, Kevin M <Kevin.Fox@...>
That url is a bit misleading. Its describing their "helm based operator sdk"s capabilities. I have personally done more advanced things then possible with the "helm based operator sdk" can do using a combination of the "ansible based operator sdk" and helm.
Thanks, Kevin ________________________________________ From: cncf-helm@... <cncf-helm@...> on behalf of Anil Kumar <anil181@...> Sent: Wednesday, October 6, 2021 1:52 AM To: cncf-helm@... Subject: [cncf-helm] Does Helm has a plan to support the complete Operator maturity level? Check twice before you click! This email originated from outside PNNL. Hello Helm Team, We are using Helm in our product for the deployments and upgrade. We are looking at the next step of introducing the Kubernetes Operator for handling the Day 2 Operations. Going through this page we see that Helm does not support complete Operator capability level:https://sdk.operatorframework.io/docs/overview/operator-capabilities/<https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fsdk.operatorframework.io%2Fdocs%2Foverview%2Foperator-capabilities%2F&data=04%7C01%7CKevin.Fox%40pnnl.gov%7C24354ce801a448b2a2fe08d988a6d126%7Cd6faa5f90ae240338c0130048a38deeb%7C0%7C0%7C637691072956766292%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=q4fizH5nDmOI8a4ex06ykUIrNT3aPInNvTYxkEVkrtM%3D&reserved=0> Could someone let me know if Helm has a plan to support the complete Operator maturity level on the roadmap as we see with Ansible and Go. Thanks and Regards, Anil Kumar
|
|||
|
|||
Re: Does Helm has a plan to support the complete Operator maturity level?
Michael Hrivnak
The "Operator Capability Levels" you reference are comparing helm-based operators, ansible-based operators, and go-based operators as supported by the operator-sdk. Those are the three operator types that operator-sdk can help you make. The capability levels *do not* draw a comparison of operators vs. helm. For very brief background: the operator-sdk enables you to use a helm chart as the basis for a simple operator, with no coding required. You get a CRD to represent your operand, and a controller that applies the chart during reconciliation. That can be useful, but the resulting operator is limited to whatever the chart can do. Michael
On Wed, Oct 6, 2021 at 3:07 PM Matt Farina <matt@...> wrote:
--
Michael Hrivnak Senior Principal Software Engineer, RHCERed Hat
|
|||
|
|||
Re: Does Helm has a plan to support the complete Operator maturity level?
Matt Farina
I’d like to add to what Paul said. Helm and operators are two different types of things. They don’t solve the same problem. Think of it this way, would I ask apt or yum to implement ansible features? The answer is obviously no because they solve two different problems and can be used to compliment each other. Ansible regularly uses RPMs and Debian packages. Helm is a package manager like apt or yum. It is used to install, upgrade, and uninstall packages. Operators are more complex. To quote the original definition of operators…
It’s about managing instances of applications. This reminds me of something like ansible or Chef. It’s more like Chef conceptually because Chef did things with agents and a pull based model. These two can complement each other. An operator can use Helm and charts for the install, upgrade, and uninstall elements. In fact, some do. So, I would not expect to have Helm support operator capabilities because they solve different problems. The fact that they’re compared that way is marketing rather than technical. - Matt Farina
|
|||
|
|||
Re: Does Helm has a plan to support the complete Operator maturity level?
Paul C
The complete Operator capability level is a bit of a misnomer and very self serving and are often not operator specific, but assume the operator writer has implemented extra things. There not really much there that a well written Helm Chart can't/won't do. * Full lifecycle - Assuming the app is fairly cloud native the kube controllers (deployment/statefulset/etc) will manage most failure recoveries, and jobs/cronjobs for backups, and helm hooks for assisting with upgrade tasks. * Deep insight - this isn't really an operator thing, except for the fact an operator can automatically set up prometheus (and similar) servicemonitors/alerts etc, all things you can do with your helm charts * Auto Pilot - most of the auto-scaling can be done with kube HPA/VPA and similar techniques, I've seens cronjobs used to do scheduled scaling as well, abnormality detection etc can be done as easily with a sidecar application as it can with an operator.
On Wed, Oct 6, 2021 at 3:53 AM Anil Kumar <anil181@...> wrote:
|
|||
|
|||
Does Helm has a plan to support the complete Operator maturity level?
Anil Kumar <anil181@...>
Hello Helm Team, We are using Helm in our product for the deployments and upgrade. We are looking at the next step of introducing the Kubernetes Operator for handling the Day 2 Operations. Going through this page we see that Helm does not support complete Operator capability level:https://sdk.operatorframework.io/docs/overview/operator-capabilities/ Could someone let me know if Helm has a plan to support the complete Operator maturity level on the roadmap as we see with Ansible and Go. Thanks and Regards, Anil Kumar
|
|||
|
|||
Re: [EXTERNAL] Re: [cncf-helm] Self nomination to help maintain helm/helm
Matt Butcher <matt.butcher@...>
Hey all,
My apologies for not noticing this first, but this was the incorrect list to have started the actual voting on (Usually, the nomination happens here and the voting is to be conducted on the core maintainer's list in order to respect confidentiality).
This was my mistake for not noticing right at the outset, and I apologize for that.
Matt Farina and I have consulted the governance doc, and we believe we can count these votes under the particular circumstances. But that's a loophole we'll close in a future iteration of the governance doc.
Again, super sorry for the confusion.
Matt
From: cncf-helm@... <cncf-helm@...> on behalf of Reinhard Nägele via lists.cncf.io <unguiculus=gmail.com@...>
Sent: Monday, September 20, 2021 11:25 PM To: cncf-helm@... <cncf-helm@...> Cc: Scott Rigby <scott@...> Subject: Re: [EXTERNAL] Re: [cncf-helm] Self nomination to help maintain helm/helm +1 🎉👏
Am 21.09.2021 um 00:43 schrieb Matt Butcher via lists.cncf.io <matt.butcher=microsoft.com@...>:
|
|||
|
|||
Re: Self nomination to help maintain helm/helm
Josh Dolitsky
|
|||
|
|||
Re: Self nomination to help maintain helm/helm
Adam Reese
+1
|
|||
|
|||
Re: [EXTERNAL] Re: [cncf-helm] Self nomination to help maintain helm/helm
Reinhard Nägele
+1 🎉👏
Am 21.09.2021 um 00:43 schrieb Matt Butcher via lists.cncf.io <matt.butcher=microsoft.com@...>:
|
|||
|
|||
Re: [EXTERNAL] Re: [cncf-helm] Self nomination to help maintain helm/helm
Matt Butcher <matt.butcher@...>
+1 for Scott
From: cncf-helm@... <cncf-helm@...> on behalf of Carlos Tadeu Panato Jr via lists.cncf.io <ctadeu=gmail.com@...>
Sent: Friday, September 17, 2021 1:40 AM To: Scott Rigby <scott@...> Cc: cncf-helm@... <cncf-helm@...> Subject: [EXTERNAL] Re: [cncf-helm] Self nomination to help maintain helm/helm
+1 for Scott!
thanks for all the work you do!
Em qui., 16 de set. de 2021 às 21:08, Scott Rigby <scott@...> escreveu:
|
|||
|
|||
Re: Self nomination to help maintain helm/helm
+1
Scott has been very helpful with the charts testing/releasing features and associated GitHub actions!
|
|||
|
|||
Re: Self nomination to help maintain helm/helm
Martin Hickey
+1
Regards, Martin
----- Original message -----
|
|||
|
|||
Re: Self nomination to help maintain helm/helm
+1 for Scott! thanks for all the work you do! Em qui., 16 de set. de 2021 às 21:08, Scott Rigby <scott@...> escreveu:
|
|||
|
|||
Self nomination to help maintain helm/helm
Hi again everyone 👋
Since last week's Helm dev call, I planned to self nominate to help with helm/helm triage via the new Triage role. I've also already been wanting to volunteer time to help with helm/helm repo maintainer duties for a while now.
If I understand the Triage Maintainer HIP and Governance correctly, I would only need to self nominate as a core maintainer to be able to help with both of these. I'm I need to self nominate for the triage maintainer role too, please lmk 🙂 I've been on the Helm team since 2017. I'm a Helm Org maintainer, and Charts maintainer (the team who oversaw the now archived helm/charts, as who continues to maintain charts automation and tooling such as helm/chart-testing, helm/chart-releaser, and the Helm Charts GitHub actions in this working demo). However while I have contributed a bit to Helm core in the past, it's been a while and I have never been a maintainer of the helm/helm repo. I'm currently on the DX team at Weaveworks, and help maintain other CNCF community projects such as Flux, and OpenGitOps, and co-chair the GitOps Working Group under App Delivery TAG. In addition to other helm/helm duties, I'd like to help us keep prioritizing the Helm SDK as the Helm project continues to evolve. I've been spending time with k8s controller-runtime as a step toward helping more with the Flux Helm Controller, which is an example of a project that makes full use of the Helm's SDK. So I will already be a more active SDK end user, as well as be more active helping support others who use Helm's SDK. I'm finally in a role that can support me doing some of this, and happy to help with helm/helm maintenance however I can if current maintainers think it makes sense. Tweets: https://twitter.com/r6by
xo, Scott -- Scott Rigby
Developer Experience, Weaveworks
|
|||
|
|||
Triage Maintainer Self Nomination: Allen Bai
Allen Bai
Hello everyone!
As discussed during today's (Sept. 9) weekly Helm developer meeting, I'd like to nominate myself as one of the triage maintainers. I'm a software engineer at Red Hat and working on Helm integration within OpenShift. I've been attending weekly Helm developer calls for ~3 months since I joined the Helm team at Red Hat on May 25th. Although relatively new to `helm/helm` and Go, I am actively learning and catching up. I would like this opportunity to work with other Helm maintainers to triage and review code and contribute to the Helm community. Doc references: - Triage Maintainer HIP: https://github.com/helm/community/blob/main/hips/hip-0014.md - Governance Documentation: https://github.com/helm/community/blob/main/governance/governance.md Github: https://github.com/zonggen Best regards, Allen Bai
|
|||
|
|||
[HIP] cascade option for uninstall and upgrade commands
Péter Laukó <peter.lauko@...>
Hi, I would like to propose a 'cascade' option for the uninstall and upgrade commands. The current implementation of these commands hardcodes metav1.DeletePropagationBackground and removes all dependent objects unconditionally. This is the preferred behaviour for most of the time, but I think it would make sense to make it configurable. For example we set owner references between custom resources (default configuration pieces provided by our application and their user overrides) and most of the time we would like them to come and go together. However if an upgrade fails, the owned objects (user overrides) should be kept in place, and being able to turn off cascading would make fixing the failed release easier. Please let me know if you think this idea makes sense and I'm happy to prepare a formal proposal and provide the patch. Best, Peter
|
|||
|
|||
[proposal] Reference packaged value files
Riccardo Piccoli
Hi all!
I am planning to write an HIP about referencing packaged values in dependency charts. Before doing that, I would like to check if there is any interest in the proposal, or if I should just implement it as a plugin. ## Problem Some of our applications are composed by multiple independent software, bound together by a router. As a practical example, we can have the following FooBar application: - Router (routes incoming requests) - Foo Server (serving /foo/* pages) - Bar Server (serving /bar/* pages) * Foobar application needs to be deployed in different environments (i.e. dev/staging/prod) and different regions (i.e. europe/us/asia) * Foo and Bar are developed independently, so we should change its dev/staging/prod/region values in the same repo. * Some of the application (Router-Foo, Router-Bar in this case) are be related, so we want to define them in the same place ## Current solutions Unfortunately I can't see a clean way to do this at the moment, as we cannot reference packaged value files. We could: 1) organize all possible dimensions (cluster, environment, etc) in keys with enable/disable switch, and enable/disable from parent chart. 2) write all values in parent chart Solution one is very hacky, and would greatly complicate our charts. Solution two will complicate development of each solution, as values should be modified in multiple parts of the code (in our case, in multiple repos) ## Proposed solution Ideally it would look something like this: Parent chart: foobar ├── Chart.yaml ├── values.yaml ├── values.dev.yaml └── values.staging.yaml The dependency section would look something like: dependencies: - name: router version: 1.0.0 repository: "@mycharts" - name: foo version: 1.0.0 repository: "@mycharts" - name: bar version: 1.0.0 repository: "@mycharts" subcharts: foo ├── Chart.yaml ├── values.yaml ├── values.dev.yaml ├── values.europe.yaml ├── values.us.yaml ├── values.asia.yaml └── values.staging.yaml bar ├── Chart.yaml ├── values.yaml ├── values.dev.yaml ├── values.europe.yaml ├── values.us.yaml ├── values.asia.yaml └── values.staging.yaml ## Proposed implementation We could reference dependencies' *packaged value files* as follows: `helm upgrade . -f values.yaml -f foo/values.europe.yaml -f foo/values.yaml -f bar/values.europe.yaml -f bar/values.yaml` For example, if this is run from `foobar` directory, helm could check: - if value file exists in the filesystem, it will be used - if not, we check if the prefix (until `/` char) is a dependency (name/alias). If it is, we chan look for the file there This would be preferable to a custom switch, so it can be integrated with already existing tools (i.e. ArgoCD, skaffold, etc) without the need of a downstream change. Any feedback you might have is welcome! Cheers, Riccardo
|
|||
|
|||
Use a config from a sub-chart to an other
Stéphane Brunner
Hello, I write this in the dependencies or my Chart.yaml - name: redis-config repository: file://../../configs/redis import-values: - child: config parent: redis - name: redis version: 14.8.6 And I expected that all the config is injected in the Redis chart but only the empty dict will be filled ... Is it possible to have a chart with a config and use it in another chart? My goal is to share some configuration without impose the version of the chart. CU Stéphane --
|
|||
|