scalyr / helm-scalyr Goto Github PK
View Code? Open in Web Editor NEWA helm chart for the Scalyr agent.
Home Page: https://scalyr.github.io/helm-scalyr/
License: Apache License 2.0
A helm chart for the Scalyr agent.
Home Page: https://scalyr.github.io/helm-scalyr/
License: Apache License 2.0
volumeMounts
from values.yaml
file is not used in daemonset manifest template. volume
is used instead in volumeMounts
spec.
https://github.com/scalyr/helm-scalyr/blob/scalyr-agent-0.2.19/charts/scalyr-agent/templates/daemonset.yaml#L147-L149
volumeMounts
should be used in volumeMounts
spec in daemonset manifest template.
Chart version: 0.2.19
I recently set about upgrading our old scalyr chart which we had manually downloaded and modified because at the time serviceAccount annotations were not supported.
While serviceAccount annotations are now working, obtaining the apiKey from parameter store is not. We are used to our old manual deployment having this environment variable value:
- name: SCALYR_API_KEY
value: arn:aws:ssm:us-east-1:<account-id-redacted>:parameter/<path-to-key-redacted>
Then a mutating webhook for kube-secrets-init changes this to the actual parameter store value. However, there appears to be no way to do this in practice. The templates are hardcoded to use a secret, even though the README talks about using parameter store instead of a secret. I don't see a way to do this with the current chart.
Using scalyr.config
produces following error:
Error: UPGRADE FAILED: YAML parse error on scalyr-agent/templates/configmap.yaml: error converting YAML to JSON: yaml: line 31: did not find expected key
helm.go:88: [debug] error converting YAML to JSON: yaml: line 31: did not find expected key
YAML parse error on scalyr-agent/templates/configmap.yaml
helm.sh/helm/v3/pkg/releaseutil.(*manifestFile).sort
helm.sh/helm/v3/pkg/releaseutil/manifest_sorter.go:146
helm.sh/helm/v3/pkg/releaseutil.SortManifests
helm.sh/helm/v3/pkg/releaseutil/manifest_sorter.go:106
helm.sh/helm/v3/pkg/action.(*Configuration).renderResources
helm.sh/helm/v3/pkg/action/action.go:165
helm.sh/helm/v3/pkg/action.(*Upgrade).prepareUpgrade
helm.sh/helm/v3/pkg/action/upgrade.go:231
helm.sh/helm/v3/pkg/action.(*Upgrade).RunWithContext
helm.sh/helm/v3/pkg/action/upgrade.go:140
main.newUpgradeCmd.func2
helm.sh/helm/v3/cmd/helm/upgrade.go:200
github.com/spf13/cobra.(*Command).execute
github.com/spf13/[email protected]/command.go:856
github.com/spf13/cobra.(*Command).ExecuteC
github.com/spf13/[email protected]/command.go:974
github.com/spf13/cobra.(*Command).Execute
github.com/spf13/[email protected]/command.go:902
main.main
helm.sh/helm/v3/cmd/helm/helm.go:87
runtime.main
runtime/proc.go:225
runtime.goexit
runtime/asm_amd64.s:1371
UPGRADE FAILED
main.newUpgradeCmd.func2
helm.sh/helm/v3/cmd/helm/upgrade.go:202
github.com/spf13/cobra.(*Command).execute
github.com/spf13/[email protected]/command.go:856
github.com/spf13/cobra.(*Command).ExecuteC
github.com/spf13/[email protected]/command.go:974
github.com/spf13/cobra.(*Command).Execute
github.com/spf13/[email protected]/command.go:902
main.main
helm.sh/helm/v3/cmd/helm/helm.go:87
runtime.main
runtime/proc.go:225
runtime.goexit
runtime/asm_amd64.s:1371
Chart version: 0.2.19
The scalyr agent now supports argo rollouts BUT the helm chart doesn't properly setup the clusterrole to allow access to rollouts.
ERROR [monitor:kubernetes_monitor] [scalyr_agent.builtin_monitors.kubernetes_monitor:1580] An error of type perm_error was seen when warming container 67ee3037d3db697eb4dd577ee749b04434f3ae059d782847a8faa793fa5538dd. Exception was You don't have permission to access /apis/argoproj.io/v1alpha1/namespaces/default/rollouts/service1. Please ensure you have correctly configured the RBAC permissions for the scalyr-agent's service account: Traceback (most recent call last):
File "/usr/share/scalyr-agent-2/py/scalyr_agent/builtin_monitors/kubernetes_monitor.py", line 1611, in run_and_propagate
self.__k8s_cache.pod(
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 1625, in pod
return self._pods_cache.lookup(
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 802, in lookup
result = self._update_object(
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 655, in _update_object
result = self._processor.process_object(k8s, obj, query_options=query_options)
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 954, in process_object
controller = self._get_controller_from_owners(
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 917, in _get_controller_from_owners
parent_controller = self._controllers.lookup(
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 802, in lookup
result = self._update_object(
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 654, in _update_object
obj = k8s.query_object(kind, namespace, name, query_options=query_options)
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 2293, in query_object
return self.query_api_with_retries(
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 2023, in query_api_with_retries
return self.query_api(query)
File "/usr/share/scalyr-agent-2/py/scalyr_agent/monitor_utils/k8s.py", line 2204, in query_api
raise K8sApiAuthorizationException(
scalyr_agent.monitor_utils.k8s.K8sApiAuthorizationException: You don't have permission to access /apis/argoproj.io/v1alpha1/namespaces/default/rollouts/service1. Please ensure you have correctly configured the RBAC permissions for the scalyr-agent's service account
scalyr-agent gets a PriorityClass of default. When there's a cluster upgrade, there's a chance that the agent might not get scheduled on a Node because of all the resources already accounted for. Then the Pod is left in a pending state and you won't see any logs from Pods on that Node. Then manual intervention is needed. If scalyr-agent can be given a higher priority, it can be scheduled first and one will hopefully not run into this issue.
I recently set about upgrading our old scalyr chart which we had manually downloaded and modified because at the time serviceAccount annotations were not supported. However, attempting to use the latest chart with the 2.2.3 image gives me this error:
Warning FailedCreate 2s daemonset-controller Error creating: Internal error occurred: failed calling webhook "pods.kube-secrets-init.adm
ission.doit-intl.com": failed to call webhook: an error on the server ("{"kind":"AdmissionReview","apiVersion":"admission.k8s.io/v1beta1","response":{
"uid":"c5b44feb-95e6-46a2-b264-490e01c7e805","allowed":false,"status":{"metadata":{},"status":"Failure","message":"could not mutate object: failed to mutate pod: : cannot download manifest for image: Get \"https://index.docker.io/v2/scalyr/scalyr-k8s-agent/manifests/2.2.3\\\": http: non-successful response (status=404 body=\"{\\\"errors\\\":[{\\\"code\\\":\\\"MANIFEST_UNKNOWN\\\",\\\"message\\\":\\\"OCI index found, but accept header does not support OCI indexes\\\"}]}\\n\")"}}}") has prevented the request from succeeding
If I change my values file to set image.tag to the older version of 2.1.3, the problem goes away. We use kube-secrets-init to allow use of parameter store for secret values, so it is essential they work together (I have a second problem with this, but I will file this under a different issue).
As I was maintaining this I created an entry over at ArtifactHub. I'd like to transfer that unmaintained entry to you. If you don't want to do that, I'll remove it from Artifacthub. I'd recommend keeping it as ArtifactHub is the number one source to find Helm Charts.
imagePullSecrets
value expects map to be provided, but in Pod spec imagePullSecrets
is a list.
https://github.com/scalyr/helm-scalyr/blob/scalyr-agent-0.2.19/charts/scalyr-agent/templates/daemonset.yaml#L27-L30
imagePullSecrets
Helm value should accept list instead of map
Chart version: 0.2.19
Hello everyone,
first, I want to thank you for all the time you already spent into this project!
Unfortunately, there seems to be a small bug inside the volumeMounts
section of the daemonset.yaml and deployment.yaml chart templates.
For some reason .Values.volumes
is used there instead of .Values.volumeMounts
what makes it currently impossible, to add volume (mounts) via a values.yaml
file.
It would be great, If this issue could be fixed some day.
Many thanks in advance!
Johannes
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.