streamnative / charts Goto Github PK
View Code? Open in Web Editor NEWStreamNative Helm Charts Repository: Apache Pulsar, Pulsar Operators, StreamNative Platform, Function Mesh
Home Page: https://charts.streamnative.io
StreamNative Helm Charts Repository: Apache Pulsar, Pulsar Operators, StreamNative Platform, Function Mesh
Home Page: https://charts.streamnative.io
There are two components in the Loki, Loki server and log agent named Promtail. All of these components support Helm installation. Here are tutorials for Loki and Promtail, https://github.com/grafana/loki/blob/v1.4.1/docs/installation/helm.md#installing-loki-with-helm. https://github.com/grafana/loki/blob/v1.4.1/docs/clients/promtail/installation.md#installing-promtail.
Loki also have a docker log driver. https://github.com/grafana/loki/tree/master/cmd/docker-driver#overview. This one is easier to use and looks don't need to install Promtail.
Is your feature request related to a problem? Please describe.
Charts like those of bookkeeper and zookeeper do not provide for a way to ensure that pod placement is rack aware
Describe the solution you'd like
Ability to configure appropriate label to use which can be used to get rack info and then ensuring that pods are not placed in the same rack. This should be optional.
Describe alternatives you've considered
No clear alternatives.
Additional context
Discussed this with @addisonj in a different chat.
pulsar chart 里面 pulsar-manager image版本0.6.0,应该是0.2.0
The secrets created by the vault init job are not deleted after the helm release is deleted at the moment. This may make the console init job be not able to complete because of mounting invalid secrets when the helm release is reinstalled. The post-deletion job may be added to remove those secrets after the deletion of the helm release.
Currently, the charts do not support adding persistence to grafana.
This means that if you add custom charts and then lose the instance, the charts are lost.
We should support adding a persistent volume to grafana for this use case
Motivation
Enable the websocket service
We've been switching over from a custom pulsar helm deployment to using this one.
I've noticed that the PVC template functions either use a local-storage class or define a new one based on the storageClass
object within the different components.
In our on-prem k8s cluster we have already defined several storageclasses, so we would only need a place to add our storageClassName
so an appropriate PVC is made.
e.g.
zookeeper:
component: zookeeper
replicaCount: 3
volumes:
# use a persistent volume or emptyDir
persistence: true
data:
name: data
size: 50Gi
local_storage: false
storageClassName: <our-custom-storageclass>
Now we can only deploy relying on our default
storageclass but this is less then ideal.
Is it enough to add this storageClassName
entry to all component's volumes object and add a clause to the template functions which make the PVCs? I could add this and start a pull request.
Currently pulsar chart provides a way to specify the namespace using .Values.namepsace
. I would propose that when the .Values.namespace is not defined, the chart falls back to using .Release.Namespace
.
I think this would make the chart easier to reuse in other charts while still allowing the namespace to be set explicitly.
There is some discussion around best practices for helm namespaces here
In various parts of the chart templates there is a seperator '/' missing for Zook URIs.
e.g.
zookeeperServers: "{{ template "pulsar.zookeeper.connect" . }}{{ .Values.metadataPrefix }}"
should be
zookeeperServers: "{{ template "pulsar.zookeeper.connect" . }}/{{ .Values.metadataPrefix }}"
so that the port doesn't combine with the metadata prefix.
With a custom template file with metadata prefix specified, the bad template snippet renders as,
#> helm template -f dev-values.yaml dev streamnative/pulsar | grep -n 2181pulsar-prd
831: zookeeperServers: "dev-pulsar-zookeeper:2181pulsar-prd"
832: configurationStoreServers: "dev-pulsar-zookeeper:2181pulsar-prd"
1717: zookeeperServers: "dev-pulsar-zookeeper:2181pulsar-prd"
1718: configurationStoreServers: "dev-pulsar-zookeeper:2181pulsar-prd"
5165: --zookeeper dev-pulsar-zookeeper:2181pulsar-prd \
5166: --configuration-store dev-pulsar-zookeeper:2181pulsar-prd \
Affected template files,
pulsar/templates/broker/broker-configmap.yaml
pulsar/templates/proxy/websocket-configmap.yaml
pulsar/templates/pulsar-cluster-initialize.yaml
Hi, i am trying to enable pulsar-manager in the 1.2.1 version of the chart. When doing this, i am running into an issue where --redirect.host flag is failing.
08:33:07.878 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalArgumentException: Invalid argument syntax: --redirect.host=
at org.springframework.core.env.SimpleCommandLineArgsParser.parse(SimpleCommandLineArgsParser.java:75)
at org.springframework.core.env.SimpleCommandLinePropertySource.<init>(SimpleCommandLinePropertySource.java:90)
at org.springframework.boot.DefaultApplicationArguments$Source.<init>(DefaultApplicationArguments.java:76)
at org.springframework.boot.DefaultApplicationArguments.<init>(DefaultApplicationArguments.java:42)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243)
at org.apache.pulsar.manager.PulsarManagerApplication.main(PulsarManagerApplication.java:27)
I am not using tls, and just enabling the pulsar manager so i think the issue lies on this line: https://github.com/streamnative/charts/blob/master/charts/pulsar/templates/pulsar-manager/pulsar-manager-configmap.yaml#L85
Update
current config in my values file:
pulsar_manager:
component: pulsar-manager
ports:
frontend: 9527
backend: 7750
replicaCount: 1
superuser:
user: "zyx"
password: "xyz"
description: "Pulsar Manager Admin"
email: [email protected]
redirect:
host: localhost
scripts:
backend_entrypoint:
command: /pulsar-manager/pulsar-manager/bin/pulsar-manager
But if i check my configmap i see the following:
apiVersion: v1
data:
backend_entrypoint.sh: |
/pulsar-manager/pulsar-manager/bin/pulsar-manager \
--spring.datasource.initialization-mode=never \
--spring.datasource.driver-class-name=org.postgresql.Driver \
--spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/pulsar_manager \
--spring.datasource.username=pulsar \
--spring.datasource.password=pulsar \
--pagehelper.helperDialect=postgresql \
--backend.jwt.token="$(cat /pulsar/tokens/pulsar_manager/token)" \
--jwt.broker.token.mode=PRIVATE \
--jwt.broker.public.key=file:///pulsar/keys/token/public.key \
--jwt.broker.private.key=file:///pulsar/keys/token/private.key \
--bookie.host="http://pulsar-bookie:8000" \
--bookie.enable=true \
--redirect.scheme=http \
--redirect.port=80 \
--redirect.host= \
...
For some reason, the redirect.host is not filled in correctly.
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m57s default-scheduler Successfully assigned pulsar/yong-test-pulsar-grafana-7b7974cfb8-vxbjx to gke-yong-dev-default-pool-2b931959-68dm
Normal Pulling 2m55s kubelet, gke-yong-dev-default-pool-2b931959-68dm Pulling image "streamnative/apache-pulsar-grafana-dashboard-k8s:0.0.4"
Normal Pulled 2m33s kubelet, gke-yong-dev-default-pool-2b931959-68dm Successfully pulled image "streamnative/apache-pulsar-grafana-dashboard-k8s:0.0.4"
Warning Failed 24s (x12 over 2m33s) kubelet, gke-yong-dev-default-pool-2b931959-68dm Error: secret "yong-test-pulsar-admin-secret" not found
Normal Pulled 24s (x11 over 2m33s) kubelet, gke-yong-dev-default-pool-2b931959-68dm Container image "streamnative/apache-pulsar-grafana-dashboard-k8s:0.0.4" already present on machine
➜ streamnative-ci git:(master) kubectl get secrets -n pulsar
NAME TYPE DATA AGE
default-token-z4qbs kubernetes.io/service-account-token 3 7m48s
yong-test-admin-secret Opaque 2 7m47s
yong-test-pulsar-broker-acct-token-t77q2 kubernetes.io/service-account-token 3 3m17s
yong-test-pulsar-pulsar-operator-token-t5gwt kubernetes.io/service-account-token 3 3m17s
yong-test-token-admin Opaque 2 7m32s
yong-test-token-asymmetric-key Opaque 2 7m45s
yong-test-token-broker-admin Opaque 2 7m37s
yong-test-token-proxy-admin Opaque 2 7m41s
Using prepare_helm_release.sh
generate a secret and the secret name is yong-test-admin-secret
, but the grafana need a secret named yong-test-pulsar-admin-secret
.
See the 3rd section of https://github.com/streamnative/charts#deploy-pulsar-to-kubernetes.
When I run helm dependency update pulsar
, it failed with following error:
Error: could not find pulsar: stat pulsar: no such file or directory
See https://github.com/streamnative/charts#customize-the-deployment.
The link of detailed guideline is https://streamnative.io/docs/v1.0.0/install-and-upgrade/helm/install/deployment. However, now it will be redirected to https://docs.streamnative.io/.
I hope we can process these issues ASAP.
I've ran against an issue that got resolved in #108 but the chart did not get bumped. Is there anything i can do to help this getting released?
It contains a fix for the offloading that i am looking to introduce in our stack.
Thanks in advance!
I use helm to install a bookkeeper cluster and set up a metadataPrefix by default value "/configuration-store".
metadataPrefix: "/configuration-store"
components:
# zookeeper
zookeeper: true
# bookkeeper
bookkeeper: true
# bookkeeper - autorecovery
autorecovery: true
# broker
broker: false
# proxy
proxy: false
# toolset
toolset: false
# pulsar manager
pulsar_manager: false
monitoring:
# monitoring - prometheus
prometheus: false
# monitoring - grafana
grafana: false
I find that pulsar-bookie-init job still running but not terminate, I found it was blocking in the process that command below
{{- if not (eq .Values.metadataPrefix "") }}
bin/bookkeeper org.apache.zookeeper.ZooKeeperMain -server {{ template "pulsar.fullname" . }}-{{ .Values.zookeeper.component }} create {{ .Values.metadataPrefix }} 'created for pulsar cluster "{{ template "pulsar.fullname" . }}"' || yes &&
{{- end }}
When I replace the metadataPrefix value to "" and the job skip that process and completed normally.
I can't certain whether it is a bug or I need some extra configuration.
I followed the platform-quickstart to deploy the platform in Kind K8s environment with the values_cluster.yaml. Then i created a Kafka client pod to connect the KoP by the kafka-console-producer.sh
but get connection error.
In the Kafka client pod, i run the below command to connect KoP:
kafka-console-producer.sh \
--producer-property security.protocol=SASL_PLAINTEXT \
--producer-property sasl.mechanism=PLAIN \
--producer-property 'sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="public/default" password="token:M2ZjMTZlMmEtODVkNi02ZTQ4LTZhY2EtMTljMmE1ZWIyY2FhOjMxYTUyZGI3LTJmMWMtZjAwMC00OTY3LTM1YjE4ZDhjMDIyYw==";' \
--broker-list sn-platform-broker:9092 --topic test-kop-1
sn-platform-broker is the broker service by ClusterIP type:
$ kc get svc -n sn
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sn-platform-broker ClusterIP 10.96.219.184 <none> 6650/TCP,8080/TCP,9092/TCP 45h
sn-platform-broker-headless ClusterIP None <none> 6650/TCP,8080/TCP,9092/TCP 45h
After execute the kafka-console-producer.sh command, the connection to KoP should be successful. But after running the message in the console, i will get the connection error message.
root@sn-platform-toolset-0:/kafka_2.13-2.6.0/bin# ./kafka-console-producer.sh \
> --producer-property security.protocol=SASL_PLAINTEXT \
> --producer-property sasl.mechanism=PLAIN \
> --producer-property 'sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="public/default" password="token:M2ZjMTZlMmEtODVkNi02ZTQ4LTZhY2EtMTljMmE1ZWIyY2FhOjMxYTUyZGI3LTJmMWMtZjAwMC00OTY3LTM1YjE4ZDhjMDIyYw==";' \
> --broker-list sn-platform-broker:9092 --topic test-kop-1
>
root@sn-platform-toolset-0:/kafka_2.13-2.6.0/bin# ./kafka-console-producer.sh \
> --producer-property security.protocol=SASL_PLAINTEXT \
> --producer-property sasl.mechanism=PLAIN \
> --producer-property 'sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="public/default" password="token:M2ZjMTZlMmEtODVkNi02ZTQ4LTZhY2EtMTljMmE1ZWIyY2FhOjMxYTUyZGI3LTJmMWMtZjAwMC00OTY3LTM1YjE4ZDhjMDIyYw==";' \
> --broker-list sn-platform-broker:9092 --topic test-kop-1
>test
[2021-08-25 03:05:50,391] WARN [Producer clientId=console-producer] Error connecting to node sn-platform-broker-0.sn-platform-broker-headless..svc.cluster.local:9092 (id: 2015490984 rack: null) (org.apache.kafka.clients.NetworkClient)
java.net.UnknownHostException: sn-platform-broker-0.sn-platform-broker-headless..svc.cluster.local: Name or service not known
at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929)
at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1519)
at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1368)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1302)
at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:110)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:403)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.access$200(ClusterConnectionStates.java:363)
at org.apache.kafka.clients.ClusterConnectionStates.currentAddress(ClusterConnectionStates.java:151)
at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:958)
at org.apache.kafka.clients.NetworkClient.access$600(NetworkClient.java:74)
at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1131)
at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1019)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:542)
at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:325)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:240)
at java.base/java.lang.Thread.run(Thread.java:829)
[2021-08-25 03:05:50,489] WARN [Producer clientId=console-producer] Error connecting to node sn-platform-broker-0.sn-platform-broker-headless..svc.cluster.local:9092 (id: 2015490984 rack: null) (org.apache.kafka.clients.NetworkClient)
java.net.UnknownHostException: sn-platform-broker-0.sn-platform-broker-headless..svc.cluster.local
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1368)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1302)
at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:110)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:403)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.access$200(ClusterConnectionStates.java:363)
at org.apache.kafka.clients.ClusterConnectionStates.currentAddress(ClusterConnectionStates.java:151)
at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:958)
at org.apache.kafka.clients.NetworkClient.access$600(NetworkClient.java:74)
at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1131)
at org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.maybeUpdate(NetworkClient.java:1019)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:542)
at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:325)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:240)
at java.base/java.lang.Thread.run(Thread.java:829)
[2021-08-25 03:05:50,589] WARN [Producer clientId=console-producer] Error connecting to node sn-platform-broker-1.sn-platform-broker-headless..svc.cluster.local:9092 (id: 688476253 rack: null) (org.apache.kafka.clients.NetworkClient)
java.net.UnknownHostException: sn-platform-broker-1.sn-platform-broker-headless..svc.cluster.local: Name or service not known
at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929)
at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1519)
at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1368)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1302)
at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:110)
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:403)
sn-platform version: streamnative/sn-platform:2.8.0.5
kafka client version: kafka_2.13-2.6.0
I enabled JWT Authentication in values.YAML then upgraded the chart and somehow Pulsar manager stops working.
Error In pulsar manager after enabling JWT auth:-503 Service Temporarily Unavailable
I followed the official doc of stream native (how-to-enable-authentication-and-authorization.md)
I am also facing the issue that how we can configure our pulsar-admin cli to do some operations.
Tried different method of auth with pulsar-admin cli but didn't work
Hello,
We've used this chart to deploy Pulsar locally without issue, in a kind
k8s cluster (version 0.8.1) with persistence. However, when we deploy the same configuration to EKS, we run into issues, specifically with PVCs. We are using Kubernetes version 1.15, and Helm 2.14.0.
We're correctly seeing the volumes being created (e.g. pulsar-bookie-{journal,ledgers}-pulsar-bookie-{0..2}
). However, several pods are having issues with messages such as this being repeated, and the bookies never being ready:
pod didn't trigger scale-up (it wouldn't fit if a new node is added): 1 node(s) had taints that the pod didn't tolerate, 1 node(s) had no available volume zone
Our EKS cluster currently operates in 2 availability zones. We tried disabling anti-affinity, but it had no impact.
Any advice would be greatly appreciated!
Hi @sijie
I tried this out and it worked great!
Is there a way to pass the IP address of the Broker, Zookeeper and Bookkeeper services when installing?
I have tried out Helm's lookup function and encountered issues using it!
May be you can help in figuring it out!
I would not mind for a presto deployment example using charts!
[root@daspdev1 helm]# helm install local-storage-provisioner streamnative/local-storage-provisioner \
--set namespace=local-storage -n local-storage
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "DaemonSet" in version "extensions/v1beta1"
Is your feature request related to a problem? Please describe.
Describe the solution you'd like
Describe alternatives you've considered
No clear alternatives.
Additional context
Trying to upgrade to latest chart version but apparently there are changes to the statefulset of bookkeeper
'''
Error: UPGRADE FAILED: cannot patch "pulsar-bookie" with kind StatefulSet: StatefulSet.apps "pulsar-bookie" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden
'''
These are the only values for bookie that I override/set:
bookkeeper:
component: bookie
replicaCount: 4
volumes:
# use a persistent volume or emptyDir
persistence: true
journal:
name: journal
size: 10Gi
local_storage: false
## If the storage class is left undefined when using persistence
## the default storage class for the cluster will be used.
##
ledgers:
name: ledgers
size: 5Gi
local_storage: false
Upgrading from Chart version 1.2.2 to 1.3.1
What would be the best approach to perform the upgrade here? Some settings I need to set or will I have to remove the statefulset entirely?
This is an odd issue. Taking a naive values.yaml and simply enabling kop
# kop
kop: true
results in helm camelCasing the sevice name in,
pulsar/templates/broker/broker-service-ingress.yaml
pulsar/templates/broker/broker-service.yaml
pulsar/templates/broker/broker-statefulset.yaml
#> helm version
version.BuildInfo{Version:"v3.5.0", GitCommit:"32c22239423b3b4ba6706d450bd044baffdcf9e6", GitTreeState:"clean", GoVersion:"go1.15.6"}
When reusing the pulsar chart, some of the values can be dependent on values used elsewhere (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) or the name of the release (s3ManagedLedgerOffladServiceEndpoint).
I propose that we use helm's tmpl function to allow references to other values from within values supplied to the chart.
Since https://github.com/streamnative/pulsar-detector/pull/9 added support for authentication, expose authentication-related params in helm chart.
I deployed the streamnative helm chart as per this guide https://github.com/streamnative/charts, however, when I go to log in to pulsar manager, neither (pulsar, pulsar) or (pulsarmanager, welovepulsar) works. I am missing something?
Thanks
Version: master
Reproduce:
the error as follows:
Hey Everyone,
Small enhancement request for secret data (AWS/GCP credentials) be provided in the helm chart as a secret name which shoudl be expected to exist in the target namespace before deployment. It would keep the values a bit more protected and out of source code. :)
J
Motivation
Currently, backup/restore tool service can not configure TLS for the zookeeper connect. We need to support to configure the TLS in the configmaps.
When trying to apply the CRDs of pulsar-operator (either through a helm chart create or manual via kubectl apply
) the CRD spec does not pass validation.
This is on kubernetes cluster v1.21.5
Bookkeeper CRD
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
The CustomResourceDefinition "bookkeeperclusters.bookkeeper.streamnative.io" is invalid:
* spec.validation.openAPIV3Schema.properties[spec].properties[autoRecovery].properties[pod].properties[initContainers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
* spec.validation.openAPIV3Schema.properties[spec].properties[pod].properties[initContainers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
Zookeeper CRD
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
The CustomResourceDefinition "zookeeperclusters.zookeeper.streamnative.io" is invalid:
* spec.validation.openAPIV3Schema.properties[spec].properties[pod].properties[sidecars].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
* spec.validation.openAPIV3Schema.properties[spec].properties[pod].properties[initContainers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
Pulsar broker
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
The CustomResourceDefinition "pulsarbrokers.pulsar.streamnative.io" is invalid:
* spec.validation.openAPIV3Schema.properties[spec].properties[initJobPod].properties[initContainers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
* spec.validation.openAPIV3Schema.properties[spec].properties[initJobPod].properties[sidecars].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
* spec.validation.openAPIV3Schema.properties[spec].properties[pod].properties[initContainers].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
* spec.validation.openAPIV3Schema.properties[spec].properties[pod].properties[sidecars].items.properties[ports].items.properties[protocol].default: Required value: this property is in x-kubernetes-list-map-keys, so it must have a default or be a required property
Setting adding the protocol to a required property lets you install the CRD, defaulting it is only enabled in the v1 CRD API. I tried converting it but this leads to numerous other issues and I'm not familiar with CRD API.
Are there plans on updating the CRDs soon and can these CRDs be rolled back to a working version?
Motivation
Currently, KoP is supported by the Pulsar operator. But it is not well supported by the Pulsar helm chart. This issue is to port the changes from Pulsar operator to Pulsar helm chart.
When you enable vault based authentication, we aren't properly adding the authentication provider for the vault based authentication, instead you have to manually add via the configData.
That should be implied when setting the auth values
In our environment, "kubectl" binary file name is not actually "kubectl", but something else.
So, should we add a config for the "kubectl" alias? While the default setting is "kubectl", nothing different as what it is so far, then we can re-direct it to a certain filename from config.
With chart version 1.2.1 the pulsar-manager-configmap has no value for redirect.host
resulting in pulsar-manager failing to start with illegal argument syntax.
Seems like a regression bug. In 1.2.0 it was --redirect.host=admin.pulsar.pulsar.example.local
kubectl version
Output:
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.6", GitCommit:"72c30166b2105cd7d3350f2c28a219e6abcd79eb", GitTreeState:"clean", BuildDate:"2020-01-18T23:31:31Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14+", GitVersion:"v1.14.10-gke.27", GitCommit:"145f9e21a4515947d6fb10819e5a336aff1b6959", GitTreeState:"clean", BuildDate:"2020-02-21T18:01:40Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}
helm version
Output:
version.BuildInfo{Version:"v3.0.3", GitCommit:"ac925eb7279f4a6955df663a0128044a8a6b7593", GitTreeState:"clean", GoVersion:"go1.13.7"}
0. helm repo add streamnative https://charts.streamnative.io
1. git clone https://github.com/streamnative/charts.git
2. ./scripts/pulsar/prepare_helm_release.sh -n pulsar -k pulsar-1.0.0. -c --control-center-admin admin --control-center-password admin
3. helm install pulsar-1.0.0 streamnative/pulsar
Error output as follows:
Error: Service "pulsar-1.0.0-pulsar-manager" is invalid: metadata.name: Invalid value: "pulsar-1.0.0-pulsar-manager": a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')
NAME READY STATUS RESTARTS AGE
function-mesh-pulsar-alert-manager-0 2/2 Running 0 5m52s
function-mesh-pulsar-bookie-0 0/1 Pending 0 5m52s
function-mesh-pulsar-bookie-1 0/1 Pending 0 5m52s
function-mesh-pulsar-bookie-2 0/1 Pending 0 5m51s
function-mesh-pulsar-bookie-3 0/1 Pending 0 5m50s
function-mesh-pulsar-bookie-init-bzt42 0/1 Completed 0 5m51s
function-mesh-pulsar-broker-0 0/1 Init:1/2 0 5m52s
function-mesh-pulsar-broker-1 0/1 Init:1/2 0 5m52s
function-mesh-pulsar-broker-2 0/1 Init:1/2 0 5m51s
function-mesh-pulsar-grafana-c8f575ff5-nlmvc 1/1 Running 0 5m53s
function-mesh-pulsar-node-exporter-5w42f 1/1 Running 0 5m53s
function-mesh-pulsar-node-exporter-64whq 1/1 Running 0 5m53s
function-mesh-pulsar-node-exporter-fsmv5 1/1 Running 0 5m53s
function-mesh-pulsar-prometheus-0 2/2 Running 0 5m52s
function-mesh-pulsar-proxy-0 0/1 Init:1/2 0 5m51s
function-mesh-pulsar-proxy-1 0/1 Init:1/2 0 5m51s
function-mesh-pulsar-proxy-2 0/1 Init:1/2 0 5m51s
function-mesh-pulsar-pulsar-init-xzdfq 0/1 Completed 0 5m51s
function-mesh-pulsar-pulsar-manager-0 0/1 Init:0/1 0 5m52s
function-mesh-pulsar-pulsar-manager-init-s5sch 0/1 Init:0/1 0 5m51s
function-mesh-pulsar-recovery-0 1/1 Running 0 5m52s
function-mesh-pulsar-toolset-0 1/1 Running 0 5m52s
function-mesh-pulsar-zookeeper-0 1/1 Running 0 5m52s
function-mesh-pulsar-zookeeper-1 1/1 Running 0 5m3s
function-mesh-pulsar-zookeeper-2 1/1 Running 0 4m8s
And the bk pods are always pending
Following the README.md
, the -c
means A k8s namespace for installing the Pulsar release, when the -c
is specified, the out as follows:
$ ./scripts/pulsar/prepare_helm_release.sh -n pulsar -k sn-platform-pulsar -c --control-center-admin admin --control-center-password admin
Output:
create the credentials for the admin user of control center (grafana & pulsar-manager)
Error from server (NotFound): namespaces "pulsar" not found
generate the token keys for the pulsar cluster
The private key and public key are generated to /var/folders/qz/g2fh76dx5rj4q_fbkfh1q3th0000gn/T/tmp.1Ia65DaF and /var/folders/qz/g2fh76dx5rj4q_fbkfh1q3th0000gn/T/tmp.qzeh7zvU successfully.
Error from server (NotFound): namespaces "pulsar" not found
generate the tokens for the super-users: proxy-admin,broker-admin,admin
generate the token for proxy-admin
Error from server (NotFound): namespaces "pulsar" not found
generate the token for broker-admin
Error from server (NotFound): namespaces "pulsar" not found
generate the token for admin
^C
So i used the following command to create namespace:
$ kubectl create namespace pulsar
Output:
namespace/pulsar created
And then run the command, everything is ok:
$ ./scripts/pulsar/prepare_helm_release.sh -n pulsar -k sn-platform-pulsar -c --control-center-admin admin --control-center-password admin
create the credentials for the admin user of control center (grafana & pulsar-manager)
secret/sn-platform-pulsar-admin-secret created
generate the token keys for the pulsar cluster
The private key and public key are generated to /var/folders/qz/g2fh76dx5rj4q_fbkfh1q3th0000gn/T/tmp.R9eO84Aa and /var/folders/qz/g2fh76dx5rj4q_fbkfh1q3th0000gn/T/tmp.xbc7OHke successfully.
secret/sn-platform-pulsar-token-asymmetric-key created
generate the tokens for the super-users: proxy-admin,broker-admin,admin
generate the token for proxy-admin
secret/sn-platform-pulsar-token-proxy-admin created
generate the token for broker-admin
secret/sn-platform-pulsar-token-broker-admin created
generate the token for admin
secret/sn-platform-pulsar-token-admin created
-------------------------------------
The jwt token secret keys are generated under:
- 'sn-platform-pulsar-token-asymmetric-key'
The jwt tokens for superusers are generated and stored as below:
- 'proxy-admin':secret('sn-platform-pulsar-token-proxy-admin')
- 'broker-admin':secret('sn-platform-pulsar-token-broker-admin')
- 'admin':secret('sn-platform-pulsar-token-admin')
The credentials of the administrator of Control Center (Grafana & Pulsar Manager)
is stored at secret 'sn-platform-pulsar-admin-secret
Currently it is hard for helm charts users to install custom connectors as built-in connector, mostly user needs to build custom image with connector, and it is painful. (please correct me if I have missed something)
I came up with a solution to ease the process is to customize the connectors using initContainers
, but need to add a new volume & volumeMounts to /pulsar/connectors
or connectorsDirectory
, then we can have initContainers
to download or customize connectors to connectorsDirectory
.
If the solution is okay, I can help to create a pr for it.
We've found a few missed instances of the old way of setting the namespace
in some of the .tpl
files:
charts/charts/pulsar/templates/zookeeper/_zookeeper.tpl
Lines 23 to 25 in 58b0b8b
I've found reference to the direct .namespace
value in the following directories' _{dir}.tpl
Originally posted by @austince in #101 (comment)
In order to support more flexible grafana configurations, such as adding secrets needed for custom auth, we need to add support for injecting custom env vars from secrets. This allows for overriding using technique: https://grafana.com/docs/grafana/latest/administration/configuration/#override-configuration-with-environment-variables
Describe the bug
Helm charts are managing namespace.
helm does not position it self as a namespace manager, as namespaces in kubernetes are considered as a higher control structure that is not part of the application.
To Reproduce
Use helm for installation without prior syncing namespaces in chart values and installation cmd:
kubectl create ns pulsartest
helm upgrade --install pulsar -n pulsartest streamnative/pulsar
Error: namespaces "pulsar" not found
even with namespaceCreate: false
Expected behavior
Do not manage kubernetes namespaces in helm charts.
{ .Release.Namespace }
Desktop (please complete the following information):
Hi,
At https://pulsar.apache.org/docs/en/helm-overview/ I've found that official apache pulsar helm chart is based on this chart. I find streamnative chart superior to official one, as it contains required fixes.
We've found that all or most of streamnative repositories are licensed under Apache2. But what about distributions published into https://charts.streamnative.io repository and docker images published on dockerhub (streamnative/platform, streamnative/apache-pulsar-grafana-dashboard-k8s, streamnative/pulsar-manager, streamnative/sn-pulsar).
Is your feature request related to a problem? Please describe.
Charts do not follow common guideline: chart templates bring dependencies into the main chart instead of using Helm dependency
Describe the solution you'd like
Move services like prometheus, alert-manager, zookeeper to a chart dependencies, That would simplified helm chart support and usage.
Describe alternatives you've considered
Do not see other options, cause the issue is that Chart structure is inconsistent and does not follow best practices
Additional context
As a chart reference with a lot of dependencies GitLab helm chart could be taken..
We are using chart v1.2.0 in production and are hesitating to upgrade to v1.3.0 because when we tried function workers did not work out of the box.
From looking at
it looks like functions should work out of the box with the default values
Also we would love try out the function state although still in developer preview. In production we currently use an external cache (etcd, redis) for aggregating & caching.
Do you know of any examples on how to enable the function state and how to make it play well with the function workers using the k8s-runtime?
Probably off-topic but somehow related:
Hi
Currently, the helm charts are referring to the pods by the hostnames at various config locations. In clusters where there is no support for DNS, all the various components are registering themselves with hostnames instead of IP addresses.
As DNS is not present in the cluster, the clients and the other components in the clusters are not able to resolve the hostnames to IP address and they are not able to connect.
I have tried to follow this
for changing the advertised address for the pod to contain IP instead of hostname, but there are other locations where the hostname is used.Some places where we need this to be changed is
I found charts for:
and I'm curious the differences, is there a good reason to use the operator? Typically I think of using Operators to add some kind of business operations to the chart. Things that don't fit eventual consistency. Right now we've been evaluating the public chart https://pulsar.apache.org/docs/en/helm-overview/ but want to make sure I'm using the best helm chart for Pulsar.
Simplicity is a key factor since this will be deployed to lots of clients/k8s clusters
To deploy presto, I have this:
bin/apply-config-from-env.py conf/presto/config.properties
bin/apply-config-from-env.py conf/presto/catalog/pulsar.properties
bin/pulsar sql-worker run
I get this error:
File "bin/apply-config-from-env.py", line 50, in <module>
k,v = line.split('=', 1)
ValueError: need more than 1 value to unpack
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.