Merge pull request #67545 from sttts/sttts-auth-optional-kubeconfig

Automatic merge from submit-queue (batch tested with PRs 66960, 67545). 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>.

delegated authn/z: optionally opt-out of mandatory authn/authz kubeconfig

This adds `RemoteKubeConfigFileOptional` field to the delegated authn/z option structs. If set to true, the authn/z kubeconfig file flags are optional. If no kubeconfig is given, all token requests are considered to be anonymous and no client CA is looked up in the cluster.

Prerequisite for https://github.com/kubernetes/kubernetes/pull/64149 and https://github.com/kubernetes/kubernetes/pull/67069.

Kubernetes-commit: 1b3a2dd0830ca0e02d5b95d2ecc0161d0c93a0c7
This commit is contained in:
Kubernetes Publisher 2018-08-28 13:47:18 -07:00
commit 9934dd8ef2
4 changed files with 219 additions and 180 deletions

326
Godeps/Godeps.json generated
View File

@ -1196,655 +1196,655 @@
},
{
"ImportPath": "k8s.io/client-go/discovery",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/discovery/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/admissionregistration",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/apps",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/apps/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/apps/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/apps/v1beta2",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/autoscaling",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/autoscaling/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta2",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/batch",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/batch/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/batch/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/batch/v2alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/certificates",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/certificates/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/coordination",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/coordination/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/core",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/core/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/events",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/events/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/extensions",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/extensions/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/internalinterfaces",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/networking",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/networking/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/policy",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/policy/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/scheduling",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/scheduling/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/settings",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/settings/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/storage",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/storage/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/storage/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/informers/storage/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/scheme",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/coordination/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/apps/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/apps/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/apps/v1beta2",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/autoscaling/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta2",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/batch/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/batch/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/batch/v2alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/certificates/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/coordination/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/core/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/events/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/extensions/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/networking/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/policy/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/rbac/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/rbac/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/scheduling/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/settings/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/storage/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/storage/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/listers/storage/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/pkg/version",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/plugin/pkg/client/auth/exec",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/rest",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/rest/watch",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/testing",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/auth",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/cache",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd/api",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/metrics",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/pager",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/tools/reference",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/transport",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/util/buffer",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/util/cert",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/util/connrotation",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/util/flowcontrol",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/util/homedir",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/util/integer",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/client-go/util/retry",
"Rev": "31ff53b61673977656293edfa6a88503ed023037"
"Rev": "87935b98dd4abdf6477f29baf934d6dd0aba82d4"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/builder",

View File

@ -41,6 +41,7 @@ import (
type DelegatingAuthenticatorConfig struct {
Anonymous bool
// TokenAccessReviewClient is a client to do token review. It can be nil. Then every token is ignored.
TokenAccessReviewClient authenticationclient.TokenReviewInterface
// CacheTTL is the length of time that a token authentication answer will be cached.

View File

@ -106,6 +106,9 @@ type DelegatingAuthenticationOptions struct {
// RemoteKubeConfigFile is the file to use to connect to a "normal" kube API server which hosts the
// TokenAccessReview.authentication.k8s.io endpoint for checking tokens.
RemoteKubeConfigFile string
// RemoteKubeConfigFileOptional is specifying whether not specifying the kubeconfig or
// a missing in-cluster config will be fatal.
RemoteKubeConfigFileOptional bool
// CacheTTL is the length of time that a token authentication answer will be cached.
CacheTTL time.Duration
@ -139,9 +142,13 @@ func (s *DelegatingAuthenticationOptions) AddFlags(fs *pflag.FlagSet) {
return
}
var optionalKubeConfigSentence string
if s.RemoteKubeConfigFileOptional {
optionalKubeConfigSentence = " This is optional. If empty, all token requests are considered to be anonymous and no client CA is looked up in the cluster."
}
fs.StringVar(&s.RemoteKubeConfigFile, "authentication-kubeconfig", s.RemoteKubeConfigFile, ""+
"kubeconfig file pointing at the 'core' kubernetes server with enough rights to create "+
"tokenaccessreviews.authentication.k8s.io.")
"tokenaccessreviews.authentication.k8s.io."+optionalKubeConfigSentence)
fs.DurationVar(&s.CacheTTL, "authentication-token-webhook-cache-ttl", s.CacheTTL,
"The duration to cache responses from the webhook token authenticator.")
@ -152,7 +159,6 @@ func (s *DelegatingAuthenticationOptions) AddFlags(fs *pflag.FlagSet) {
fs.BoolVar(&s.SkipInClusterLookup, "authentication-skip-lookup", s.SkipInClusterLookup, ""+
"If false, the authentication-kubeconfig will be used to lookup missing authentication "+
"configuration from the cluster.")
}
func (s *DelegatingAuthenticationOptions) ApplyTo(c *server.AuthenticationInfo, servingInfo *server.SecureServingInfo, openAPIConfig *openapicommon.Config) error {
@ -161,15 +167,19 @@ func (s *DelegatingAuthenticationOptions) ApplyTo(c *server.AuthenticationInfo,
return nil
}
cfg := authenticatorfactory.DelegatingAuthenticatorConfig{
Anonymous: true,
CacheTTL: s.CacheTTL,
}
client, err := s.getClient()
if err != nil {
return fmt.Errorf("failed to get delegated authentication kubeconfig: %v", err)
}
cfg := authenticatorfactory.DelegatingAuthenticatorConfig{
Anonymous: true,
CacheTTL: s.CacheTTL,
TokenAccessReviewClient: client.AuthenticationV1beta1().TokenReviews(),
// configure token review
if client != nil {
cfg.TokenAccessReviewClient = client.AuthenticationV1beta1().TokenReviews()
}
// look into configmaps/external-apiserver-authentication for missing authn info
@ -217,6 +227,15 @@ func (s *DelegatingAuthenticationOptions) lookupMissingConfigInCluster(client ku
if len(s.ClientCert.ClientCA) > 0 && len(s.RequestHeader.ClientCAFile) > 0 {
return nil
}
if client == nil {
if len(s.ClientCert.ClientCA) == 0 {
glog.Warningf("No authentication-kubeconfig provided in order to lookup client-ca-file in configmap/%s in %s, so client certificate authentication to extension api-server won't work.", authenticationConfigMapName, authenticationConfigMapNamespace)
}
if len(s.RequestHeader.ClientCAFile) == 0 {
glog.Warningf("No authentication-kubeconfig provided in order to lookup requestheader-client-ca-file in configmap/%s in %s, so request-header client certificate authentication to extension api-server won't work.", authenticationConfigMapName, authenticationConfigMapNamespace)
}
return nil
}
authConfigMap, err := client.CoreV1().ConfigMaps(authenticationConfigMapNamespace).Get(authenticationConfigMapName, metav1.GetOptions{})
if err != nil {
@ -321,6 +340,8 @@ func deserializeStrings(in string) ([]string, error) {
return ret, nil
}
// getClient returns a Kubernetes clientset. If s.RemoteKubeConfigFileOptional is true, nil will be returned
// if no kubeconfig is specified by the user and the in-cluster config is not found.
func (s *DelegatingAuthenticationOptions) getClient() (kubernetes.Interface, error) {
var clientConfig *rest.Config
var err error
@ -329,11 +350,13 @@ func (s *DelegatingAuthenticationOptions) getClient() (kubernetes.Interface, err
loader := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, &clientcmd.ConfigOverrides{})
clientConfig, err = loader.ClientConfig()
} else {
// without the remote kubeconfig file, try to use the in-cluster config. Most addon API servers will
// use this path
clientConfig, err = rest.InClusterConfig()
if err == rest.ErrNotInCluster && s.RemoteKubeConfigFileOptional {
return nil, nil
}
}
if err != nil {
return nil, fmt.Errorf("failed to get delegated authentication kubeconfig: %v", err)

View File

@ -20,6 +20,7 @@ import (
"fmt"
"time"
"github.com/golang/glog"
"github.com/spf13/pflag"
"k8s.io/apiserver/pkg/authorization/authorizer"
@ -41,6 +42,9 @@ type DelegatingAuthorizationOptions struct {
// RemoteKubeConfigFile is the file to use to connect to a "normal" kube API server which hosts the
// SubjectAccessReview.authorization.k8s.io endpoint for checking tokens.
RemoteKubeConfigFile string
// RemoteKubeConfigFileOptional is specifying whether not specifying the kubeconfig or
// a missing in-cluster config will be fatal.
RemoteKubeConfigFileOptional bool
// AllowCacheTTL is the length of time that a successful authorization response will be cached
AllowCacheTTL time.Duration
@ -72,9 +76,13 @@ func (s *DelegatingAuthorizationOptions) AddFlags(fs *pflag.FlagSet) {
return
}
var optionalKubeConfigSentence string
if s.RemoteKubeConfigFileOptional {
optionalKubeConfigSentence = " This is optional. If empty, all requests not skipped by authorization are forbidden."
}
fs.StringVar(&s.RemoteKubeConfigFile, "authorization-kubeconfig", s.RemoteKubeConfigFile,
"kubeconfig file pointing at the 'core' kubernetes server with enough rights to create "+
" subjectaccessreviews.authorization.k8s.io.")
"subjectaccessreviews.authorization.k8s.io."+optionalKubeConfigSentence)
fs.DurationVar(&s.AllowCacheTTL, "authorization-webhook-cache-authorized-ttl",
s.AllowCacheTTL,
@ -115,16 +123,20 @@ func (s *DelegatingAuthorizationOptions) toAuthorizer(client kubernetes.Interfac
authorizers = append(authorizers, a)
}
cfg := authorizerfactory.DelegatingAuthorizerConfig{
SubjectAccessReviewClient: client.AuthorizationV1beta1().SubjectAccessReviews(),
AllowCacheTTL: s.AllowCacheTTL,
DenyCacheTTL: s.DenyCacheTTL,
if client == nil {
glog.Warningf("No authorization-kubeconfig provided, so SubjectAccessReview of authorization tokens won't work.")
} else {
cfg := authorizerfactory.DelegatingAuthorizerConfig{
SubjectAccessReviewClient: client.AuthorizationV1beta1().SubjectAccessReviews(),
AllowCacheTTL: s.AllowCacheTTL,
DenyCacheTTL: s.DenyCacheTTL,
}
delegatedAuthorizer, err := cfg.New()
if err != nil {
return nil, err
}
authorizers = append(authorizers, delegatedAuthorizer)
}
a, err := cfg.New()
if err != nil {
return nil, err
}
authorizers = append(authorizers, a)
return union.New(authorizers...), nil
}
@ -141,6 +153,9 @@ func (s *DelegatingAuthorizationOptions) getClient() (kubernetes.Interface, erro
// without the remote kubeconfig file, try to use the in-cluster config. Most addon API servers will
// use this path
clientConfig, err = rest.InClusterConfig()
if err == rest.ErrNotInCluster && s.RemoteKubeConfigFileOptional {
return nil, nil
}
}
if err != nil {
return nil, fmt.Errorf("failed to get delegated authorization kubeconfig: %v", err)