Skip to content
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

istioctl x kube-uninject doesn't restore probes #45002

Closed
3 of 14 tasks
betonetotbo opened this issue May 19, 2023 · 2 comments
Closed
3 of 14 tasks

istioctl x kube-uninject doesn't restore probes #45002

betonetotbo opened this issue May 19, 2023 · 2 comments

Comments

@betonetotbo
Copy link

betonetotbo commented May 19, 2023

Bug Description

istioctl x kube-uninject doesn't restore probes (liveness e readiness).

Try this:

  • Create a deployment with 1 or 2 containers
  • In each container, configure a livenessProbe and readnessProbe configuration
  • Inject the proxy with kubectl get deploy $DEPLOY | istioctl kube-inject -f - | kubectl apply -f -
  • Now try to uninject the proxy with: kubectl get deploy $DEPLOY | istioctl x kube-uninject -f - | kubectl apply -f -

Note that when I inject the istio-proxy it will create a new container, and the proxy will hold an env ISTIO_KUBE_APP_PROBERS having the real probes.

Now the problem, when the kube-uninject is ran it will not restore the original probes from that env ISTIO_KUBE_APP_PROBERS and will keep the old ones on app containers ( ex.: /app-health/container_name/readyz and /app-health/container_name/livez ).

Lets see an example:

This is how the containers probes are been keeped after the kube-inject and kube-uninject:

         livenessProbe:
           httpGet:
             path: /app-health/platform-iassist/livez
             port: 15020
             scheme: HTTP
         readinessProbe:
           httpGet:
             path: /app-health/platform-iassist/readyz
             port: 15020
             scheme: HTTP

And here is the probes that I expected to be restored from proxy env ISTIO_KUBE_APP_PROBERS after the kube-uninject ran:

- name: ISTIO_KUBE_APP_PROBERS
              value: '{"/app-health/platform-iassist/livez":{"httpGet":{"path":"/x/health","port":80,"scheme":"HTTP"},"timeoutSeconds":1},"/app-health/platform-iassist/readyz":{"httpGet":{"path":"/x/health","port":80,"scheme":"HTTP"},"timeoutSeconds":1},"/app-health/sidecar/livez":{"httpGet":{"path":"/x/health","port":8080}},"/app-health/sidecar/readyz":{"httpGet":{"path":"/x/health","port":8080}}}'

Version

$ istioctl version
client version: 1.14.5
control plane version: 1.14.5
data plane version: 1.14.5 (3 proxies)

$ kubectl version --short
Flag --short has been deprecated, and will be removed in the future. The --short output will become the default.
Client Version: v1.24.12
Kustomize Version: v4.5.4
Server Version: v1.24.13

Additional Information

No response

Affected product area

  • Ambient
  • Docs
  • Installation
  • Networking
  • Performance and Scalability
  • Extensions and Telemetry
  • Security
  • Test and Release
  • User Experience
  • Developer Infrastructure
  • Upgrade
  • Multi Cluster
  • Virtual Machine
  • Control Plane Revisions
@howardjohn
Copy link
Member

We have (almost) arrived at the conclusion this command is fundamentally flawed and cannot really be fixed, so it is slated for removal: #44967.

If there is a compelling reason we should not remove it, your feedback would be appreciated.

@hanxiaop
Copy link
Member

Closed due to its removal. Feel free to reopen it if you have any compelling reasons.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants