istio: Istio proxy container is failing to start with Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system

Bug Description

2022-04-01T11:03:21.235838Z info  JWT policy is third-party-jwt
2022-04-01T11:03:21.235843Z info  using credential fetcher of JWT type in cluster.local trust domain
2022-04-01T11:03:22.256088Z info  SDS socket not found. Starting Istio SDS Server
2022-04-01T11:03:22.256131Z info  CA Endpoint istiod.istio-system.svc:15012, provider Citadel
2022-04-01T11:03:22.256104Z info  Opening status port 15020
2022-04-01T11:03:22.256156Z info  Using CA istiod.istio-system.svc:15012 cert with certs: var/run/secrets/istio/root-cert.pem
2022-04-01T11:03:22.256251Z info  citadelclient Citadel client using custom root cert: var/run/secrets/istio/root-cert.pem
2022-04-01T11:03:22.274596Z info  ads All caches have been synced up in 1.044429289s, marking server ready
2022-04-01T11:03:22.274803Z warn  Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system
2022-04-01T11:03:22.274849Z error sds Failed to set up UDS path: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory
2022-04-01T11:03:22.274855Z info  sds SDS server for workload certificates started, listening on "./var/run/secrets/workload-spiffe-uds/socket"
2022-04-01T11:03:22.274869Z info  xdsproxy  Initializing with upstream address "istiod.istio-system.svc:15012" and cluster "Kubernetes"
2022-04-01T11:03:22.276579Z info  sds Starting SDS grpc server
2022-04-01T11:03:22.276668Z warn  Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system
2022-04-01T11:03:22.276724Z error sds SDS grpc server for workload proxies failed to set up UDS: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory
2022-04-01T11:03:22.277375Z info  starting Http service at 127.0.0.1:15004
2022-04-01T11:03:22.278571Z info  Pilot SAN: [istiod.istio-system.svc]
2022-04-01T11:03:22.280450Z info  Starting proxy agent
2022-04-01T11:03:22.280480Z info  Epoch 0 starting
2022-04-01T11:03:22.280500Z info  Envoy command: [-c etc/istio/proxy/envoy-rev0.json --restart-epoch 0 --drain-time-s 45 --drain-strategy immediate --parent-shutdown-time-s 60 --local-address-ip-version v4 --file-flush-interval-msec 1000 --disable-hot-restart --log-format %Y-%m-%dT%T.%fZ  %l  envoy %n  %v -l warning --component-log-level misc:error]
2022-04-01T11:03:23.277451Z warn  Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system
2022-04-01T11:03:23.277582Z error sds SDS grpc server for workload proxies failed to set up UDS: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory
2022-04-01T11:03:23.283586Z warn  ca  ca request failed, starting attempt 1 in 103.583184ms
2022-04-01T11:03:23.387848Z warn  ca  ca request failed, starting attempt 2 in 205.386114ms
2022-04-01T11:03:23.593371Z warn  ca  ca request failed, starting attempt 3 in 429.688774ms
2022-04-01T11:03:24.024024Z warn  ca  ca request failed, starting attempt 4 in 723.617885ms
2022-04-01T11:03:25.278832Z warn  Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system
2022-04-01T11:03:25.278994Z error sds SDS grpc server for workload proxies failed to set up UDS: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory
2022-04-01T11:03:27.808166Z info  cache generated new workload certificate  latency=5.533264895s ttl=23h59m59.191843153s
2022-04-01T11:03:27.808203Z info  cache Root cert has changed, start rotating root cert
2022-04-01T11:03:27.808219Z info  ads XDS: Incremental Pushing:0 ConnectedEndpoints:0 Version:
2022-04-01T11:03:27.808282Z info  cache returned workload trust anchor from cache ttl=23h59m59.191720438s
2022-04-01T11:03:29.279726Z warn  Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system
2022-04-01T11:03:29.279814Z error sds SDS grpc server for workload proxies failed to set up UDS: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory
2022-04-01T11:03:29.662011Z info  xdsproxy  connected to upstream XDS server: istiod.istio-system.svc:15012
2022-04-01T11:03:37.280480Z warn  Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system
2022-04-01T11:03:37.280569Z error sds SDS grpc server for workload proxies failed to set up UDS: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory
2022-04-01T11:03:53.281441Z warn  sds SDS grpc server could not be started
2022-04-01T11:04:01.334132Z warning envoy config  StreamSecrets gRPC config stream closed since 31s ago: 14, upstream connect error or disconnect/reset before headers. reset reason: connection failure, transport failure reason: immediate connect error: No such file or directory

Version

Image:         gcr.io/istio-testing/proxyv2:latest
Image ID:      docker-pullable://gcr.io/istio-testing/proxyv2@sha256:c1a575c54eef3b8642ceca205c4f2551eda026d7a910e5b2330d8ab6613d366a

Additional Information

No response

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 2
  • Comments: 48 (20 by maintainers)

Commits related to this issue

Most upvoted comments

Catching up so sorry if this is repeated - the only supported helm charts are the official helm repository (highly recommended, only one documented on istio.io) or the release tar.gz.

Pulling from git, or any other method that uses latest is not supported

if you hit this issue you are installing in a dangerous an unsupported way

We were using the Helm Charts for istiod pointed to the tag 1.13.2. When the istio-testing was pushed to the container registry, inside the 1.13.2 helm chart there was a reference to latest which caused all new pods to not be able to connect since istiod was erroring with the above error. This required us to temporarily point to the master charts since they are the only ones with the updates to support the latest changes.

This error occurred due to a reference in the helm charts to latest that we have no control over. Can this be pointed to a stable tag instead of latest so it isn’t changed out from under us?

I think this is a correct statement but not intuitive if you are pointing to a tag and using a GitOps tool like Argo for helm. I think the issue of that we are pointing to the manifests that are in the Git repo and not the published charts. This might be expected but maybe there is a way to make it more clear that if you are using GitOps tooling that it won’t work as expected since there are some tasks that change the helm charts before they are published to the chart repo and that it is required to use that. I am double checking all that today to see if it clears all the issues.

yes

On Wed, Sep 7, 2022, 8:08 AM Dongfang Qu @.***> wrote:

Sorry, If I didn’t describe the issue clearly.

I got the following error:

{“level”:“warn”,“time”:“2022-09-07T15:04:10.125120Z”,“msg”:“Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets: permission denied”}`

Does that mean we need to give the istio-proxy user permission to mkdir /var/run/secrets somehow?

— Reply to this email directly, view it on GitHub https://github.com/istio/istio/issues/38217#issuecomment-1239516859, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAEYGXIUYLVL2UGU4LV3HHTV5CVVHANCNFSM5SIMW2JA . You are receiving this because you modified the open/close state.Message ID: @.***>

If you are seeing this you have a mismatch between docker image versions and configmaps

@hzxuzhonghu @spstarr running into this issue as well. We are trying to upgrade from 1.13.5. We are using tetrates distroless images. 1.14.1-tetratefips-v0-distroless https://istio.tetratelabs.io/

could the fact these are distroless images have something to do with the “read-only file system” errors?

2022-08-02T12:54:37.834833Z    warn    Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system              

2022-08-02T12:54:37.834905Z    error    sds    Failed to set up UDS path: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory
                                                               
2022-08-02T12:54:37.834914Z    info    sds    SDS server for workload certificates started, listening on "./var/run/secrets/workload-spiffe-uds/socket" 

2022-08-02T12:54:37.834935Z    info    xdsproxy    Initializing with upstream address "istiod.istio-system.svc:15012" and cluster "Kubernetes" 

2022-08-02T12:54:37.835496Z    info    sds    Starting SDS grpc server

2022-08-02T12:54:37.835567Z    warn    Failed to create directory for ./var/run/secrets/workload-spiffe-uds/socket: mkdir var/run/secrets/workload-spiffe-uds: read-only file system                                                                                                                                     

2022-08-02T12:54:37.835621Z    error    sds    SDS grpc server for workload proxies failed to set up UDS: failed to listen on unix socket "./var/run/secrets/workload-spiffe-uds/socket": listen unix ./var/run/secrets/workload-spiffe-uds/socket: bind: no such file or directory  

pulled down the Istio 1.14 manifests and used them for the install so manifests should be compatible.

any tips on how we can further debug this?

@bryankaraffa I understand how to see the error by forcing the latest image and test repo using the 1.13.2 helm charts.

I’m wondering how people are encountering this problem without forcing the incorrect image, as it seems from above others are seeing the same error just using the 1.13.2 manifests. Maybe I am wrong, but I suspect there is something in one of the manifest files that is causing the issue (if it exists). Possibly https://github.com/istio/istio/blob/release-1.13/manifests/charts/istio-control/istio-discovery/files/gen-istio.yaml#L165 and similarly for the hub is a line further up. These lines aren’t updated to the normal release values in the pushed helm charts as far as I can tell. I’m not sure if updating those values will resolve the issue or not.

@beaudeanadams What I have to put that global value? in my application helm chart value?

or istiod application?

thank you

Anyone facing this issue, add this to your helm values, and you will use the dockerhub istio repo instead. Ensure you set ‘tag’ under global to be the same version as the helm chart (i.e. 1.13.2)

global:
  hub: docker.io/istio
  tag: 1.13.2

Sounds like you are running gcr.io/istio-testing/proxyv2:latest but didn’t pull in the new helm charts. The two are coupled