• Kubernetes Submit Queue's avatar
    Merge pull request #66698 from WanLinghao/token_projected_improve · e38efdcc
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
    
    refuse serviceaccount projection volume request when pod has no servceaccount bounded
    
    **What this PR does / why we need it**:
    Currently, if user starts a cluster with ServiceAccount admission plugin disabled, then creates a Pod 
    like this:
    ```
    kind: Pod 
    apiVersion: v1
    metadata:
      labels:
        run: nginx
      name: busybox2
    spec:
          containers:
          - image: gcr.io/google-containers/nginx
            name: nginx
            volumeMounts:
            - mountPath: /var/run/secrets/tokens
              name: token
          - image: ubuntu
            name: ttt 
            volumeMounts:
            - mountPath: /var/run/secrets/tokens
              name: token
            command: [ "/bin/bash", "-c", "--" ]
            args: [ "while true; do sleep 30; done;" ]
          volumes:
          - name: token
            projected:
              sources:
              - serviceAccountToken:
                  path: tokenPath
                  expirationSeconds: 6000
                  audience: gakki-audiences
    ```
    The pod creation will fail with error info like:
    Events:
    ```
      Type     Reason       Age               From                Message
      ----     ------       ----              ----                -------
      Normal   Scheduled    23s               default-scheduler   Successfully assigned office/busybox2 to 127.0.0.1
      Warning  FailedMount  8s (x6 over 23s)  kubelet, 127.0.0.1  MountVolume.SetUp failed for volume "token" : failed to fetch token: resource name may not be empty
    ```
    We should refuse the projection request earlier. This patch fix this.
    
    
    **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
    Fixes #
    
    **Special notes for your reviewer**:
    
    **Release note**:
    
    ```release-note
    NONE
    ```
    e38efdcc
Name
Last commit
Last update
..
BUILD Loading commit data...
OWNERS Loading commit data...
doc.go Loading commit data...
events.go Loading commit data...
events_test.go Loading commit data...
validation.go Loading commit data...
validation_test.go Loading commit data...