-
Notifications
You must be signed in to change notification settings - Fork 474
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Cannot load the graph: json: cannot unmarshal object into Go value of type []*kubernetes.RegistryEndpoint" #6510
Comments
Ha funny I found this, since I think I also broke it! istio/istio#46329 Looks like we depended on the internal implementation details of /debug/endpointz which isn't a stable interface |
same happening for me with maistra v 3.0 and openshift 4.13 |
This is going to affect the Kiali addon that ships with the upcoming Istio 1.19 release. It sounds like Kiali will need to update its usage of the /debug/endpointz, release Kiali with that change and peg Istio 1.19 support to at minimum that new Kiali version. @howardjohn if we update Kiali to fix this, it will be required that we update the Kiali addon (right now its at 1.72). |
it should be 1.20+ impacted only afaik
…On Thu, Aug 24, 2023, 6:52 AM John Mazzitelli ***@***.***> wrote:
This is going to affect the Kiali addon that ships with the upcoming Istio
1.19 release. It sounds like Kiali will need to update its usage of the
/debug/endpointz, release Kiali with that change and peg Istio 1.19 support
to at minimum that new Kiali version.
@howardjohn <https://github.com/howardjohn> if we update Kiali to fix
this, it will be required that we update the Kiali addon (right now its at
1.72).
—
Reply to this email directly, view it on GitHub
<#6510 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAEYGXOGLRGI76OQBLDKQETXW5MBZANCNFSM6AAAAAA32UAU4Y>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Ah. ok.. I see you are saying this was in master.. I was thinking that's 1.19 but its for 1.20 now. That will give us some time to figure out what to do. |
We are going to need to tweek this to take into account the changes: https://github.com/kiali/kiali/blob/v1.72.0/kubernetes/types.go#L283-L287 We need to track the changes here: https://github.com/istio/istio/blob/master/pilot/pkg/model/service.go |
Can we make the change and not break 1.19 and earlier? |
Some reported this same issue in Istio 1.19 - see #6591 |
hmm, istio/istio#46329 is definitely not in 1.19. Its possible the user just was running |
@snahil But what is the version of the images that are used? What you posted just shows the version of the helm chart used (which may or may not have been configured to load different version of binaries, such as Run this and see what the container image is for istiod:
Also, go into the Kiali "About" box and tell us what version of Istio it says it is talking to.. you get the About box from the top-right drop down menu: |
@snahil OK, there you go. You think you are using Istio 1.19, but you are not - notice So, your issue is not an issue today - it will be addressed before 1.20 is released. |
@jmazzitelli ok!. But I am using Helm chart version 1.19 looks like it does not have the same istio version, Kindly provide the Helm chart version that can be used as i have tested few of them and they had the same issue. |
I never install Istio with helm - I do not know where they are. Install Istio following the instructions here and you should be able to get Istio 1.19 installed properly: https://istio.io/latest/docs/setup/getting-started/ |
BTW: we have now veered away from the purpose of this issue. This is a question for the Istio team for "How do I install Istio 1.19 via helm"... please go to the general Istio slack channel or other Istio support channels for details on that. |
Cool!. Looks like that's the issue, the helm chart is not working in my case. |
Closing as this seems resolved! |
Only that off-track issue about the helm chart is resolved, not the original issue which was written up (FWIW, this is why I like to avoid hi-jacking issues with other unrelated issues). The original issue is still going to be a problem that we need to address before istio 1.20 is released |
Just documenting what the latest json looks like (I ran the latest 1.20 dev build and printed out the Istio 1.20 Registry Endpointz JSON Here's the currently expected type definition (for Kiali 1.73): https://github.com/kiali/kiali/blob/v1.73.0/kubernetes/types.go#L247-L282 JSON is much different. This is likely not going to be trivial to refactor. Also, we may not be able to support pre-1.20 and post.120 with the same Kiali server, though I am not sure (that is probably less of an issue to worry about - we just require an upgrade if going to 1.20+). I do not know why Kiali maintains its own type here, as opposed to using a type that comes with an istio client library. @howardjohn do you know if some istio Go library exists that clients can use that contain the debug/endpointz type? Here's a snippet from the start of the 1.19 json: [
{
"svc": "grafana.istio-system.svc.cluster.local:service",
"ep": [
{
"service": {
"Attributes": {
"ServiceRegistry": "Kubernetes",
"Name": "grafana",
"Namespace": "istio-system",
"Labels": {
"app.kubernetes.io/instance": "grafana",
"app.kubernetes.io/managed-by": "Helm",
"app.kubernetes.io/name": "grafana",
"app.kubernetes.io/version": "9.5.5",
"helm.sh/chart": "grafana-6.57.4"
},
"ExportTo": null,
"LabelSelectors": {
"app.kubernetes.io/instance": "grafana",
"app.kubernetes.io/name": "grafana"
},
"ClusterExternalAddresses": null,
"ClusterExternalPorts": null,
"Type": "ClusterIP",
"ExternalName": "",
"NodeLocal": false
},
"ports": [
{
"name": "service",
"port": 3000,
"protocol": "UnsupportedProtocol"
}
],
"creationTime": "2023-09-14T16:09:00Z",
"hostname": "grafana.istio-system.svc.cluster.local",
"clusterVIPs": {
"Addresses": {
"Kubernetes": [
"10.96.111.173"
]
}
},
"defaultAddress": "10.96.111.173",
"Resolution": 0,
"MeshExternal": false,
"ResourceVersion": "11196"
},
"servicePort": {
"name": "service",
"port": 3000,
"protocol": "UnsupportedProtocol"
},
"endpoint": {
"Labels": {
"app": "grafana",
"app.kubernetes.io/instance": "grafana",
"app.kubernetes.io/name": "grafana",
"kubernetes.io/hostname": "kind-control-plane",
"pod-template-hash": "5f9b8c6c5d",
"sidecar.istio.io/inject": "false",
"topology.istio.io/cluster": "Kubernetes",
"topology.istio.io/network": ""
},
"Address": "10.244.0.24",
"ServicePortName": "service",
"ServiceAccount": "spiffe://cluster.local/ns/istio-system/sa/grafana",
"Network": "",
"Locality": {
"Label": "",
"ClusterID": "Kubernetes"
},
"EndpointPort": 3000,
"LbWeight": 0,
"TLSMode": "disabled",
"Namespace": "istio-system",
"WorkloadName": "grafana",
"HostName": "",
"SubDomain": "",
"HealthStatus": 1,
"NodeName": "kind-control-plane"
}
}
]
},
{
"svc": "istio-egressgateway.istio-system.svc.cluster.local:http2",
... And here's 1.20: {
"grafana.istio-system.svc.cluster.local": {
"istio-system": {
"Shards": {
"Kubernetes/Kubernetes": [
{
"Labels": {
"app": "grafana",
"app.kubernetes.io/instance": "grafana",
"app.kubernetes.io/name": "grafana",
"kubernetes.io/hostname": "kind-control-plane",
"pod-template-hash": "5f9b8c6c5d",
"sidecar.istio.io/inject": "false",
"topology.istio.io/cluster": "Kubernetes",
"topology.istio.io/network": ""
},
"Address": "10.244.0.16",
"ServicePortName": "service",
"ServiceAccount": "spiffe://cluster.local/ns/istio-system/sa/grafana",
"Network": "",
"Locality": {
"Label": "",
"ClusterID": "Kubernetes"
},
"EndpointPort": 3000,
"LbWeight": 0,
"TLSMode": "disabled",
"Namespace": "istio-system",
"WorkloadName": "grafana",
"HostName": "",
"SubDomain": "",
"HealthStatus": 1,
"NodeName": "kind-control-plane"
}
]
},
"ServiceAccounts": {
"spiffe://cluster.local/ns/istio-system/sa/grafana": {}
}
}
},
"istio-egressgateway.istio-system.svc.cluster.local": {
... |
It's understood that we depend on an unstable interface, but it should be noted that to do a lot of valuable things from the observability and mgmt side, this interface is very important. It would be great if there were a stable mgmt interface. |
One thing that scares me with this change is the https://github.com/kiali/kiali/blob/v1.73.0/kubernetes/types.go#L255 Service IstioService `json:"service,omitempty"` That Service data provides things like protocol (among other things) that is not in the JSON that comes back from |
To get a good example of what it now looks like, deploy istio 1.20 and the electronic demo and look at istiod's /debug/endpointz results: Install Istio 1.20 (only available as a dev build right now):
Install demo:
Get istiod data:
|
* refactor for the /debug/endpointz changes in Istio 1.20 fixes: #6510 * changes to code that account for the data model changes * stub out endpointz data * remove everything endpointz related. SetRegistryEndpoints is still there to show what data was needed but it is never called. * remove remaining remnants of /debug/endpointz
in istio 1.18.1 and kiali 1.67.0, following error occurs: ``` json: cannot unmarshal object into Go value of type []*kubernetes.RegistryEndpoint ``` this is fixed in 1.75.0: - https://kiali.io/news/release-notes/#1750 - kiali/kiali#6510 bump for each 1.20.0/1.76.0, addons are by: ```sh for ADDON in kiali jaeger prometheus grafana do ADDON_URL="https://raw.githubusercontent.com/istio/istio/release-1.20/samples/addons/$ADDON.yaml" kubectl apply -f $ADDON_URL done ```
* refactor for the /debug/endpointz changes in Istio 1.20 fixes: kiali#6510 * changes to code that account for the data model changes * stub out endpointz data * remove everything endpointz related. SetRegistryEndpoints is still there to show what data was needed but it is never called. * remove remaining remnants of /debug/endpointz
* refactor for the /debug/endpointz changes in Istio 1.20 fixes: #6510 * changes to code that account for the data model changes * stub out endpointz data * remove everything endpointz related. SetRegistryEndpoints is still there to show what data was needed but it is never called. * remove remaining remnants of /debug/endpointz Co-authored-by: John Mazzitelli <mazz@redhat.com>
UI fails to load with this error:
Cannot load the graph: json: cannot unmarshal object into Go value of type []*kubernetes.RegistryEndpoint
Image
quay.io/kiali/kiali:v1.72
Cluster is GKE 1.27
Running OSS Istio from master with ambient enabled
The text was updated successfully, but these errors were encountered: