Commit Graph

28 Commits

Author SHA1 Message Date
Owen Strain
a947c32783 Add feature gate to disable in-tree credential providers 2021-08-05 16:50:13 +00:00
Nick Turner
d422a92e66 Fix ECR provider startup latency
* Before this change, even on non-AWS platforms, the Enabled() check attempts
  to make calls to the metadata endpoint when the session and credentials
  are initialized (in order to determine if the provider should be
  initialized at all).
* This can cause latency because the SDK times out and retries -- up to
  20 seconds of latency has been observed on non-AWS platforms when the
  metadata IP was blocked with an iptables rule.
* Instead, check once if we are running on an EC2 platform, first trying
  to find the EC2 UUID in system files, and second attempting to get
  credentials.
* Add a benchmark test that includes intialization and the credential
  check.
2021-03-19 23:37:11 +00:00
Davanum Srinivas
442a69c3bd
switch over k/k to use klog v2
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2020-05-16 07:54:27 -04:00
Han Kang
866ea74326 remove pkg/version and some of redundant copies of it
Change-Id: Ia58367c1b1274bfb49c8a4784051463abaf795de
2019-09-16 16:24:35 -07:00
tiffany jernigan
27a0d91f2d Remove lazy provide from credential provider and kubelet (#79674)
* Remove LazyProvide from kubelet

* Remove LazyProvide from cloud providers

* Remove LazyProvide from credential provider keyring and provider
2019-07-03 13:52:52 -07:00
tiffany jernigan
11efc01328 Refactors and fixes bugs in AWS credentialprovider
Adds caching per registry. Fixes caching of invalid ECR tokens.
2019-03-28 07:15:28 +00:00
Micah Hausler
949d5f97c4 Added kubernetes version to user-agent for AWS SDK calls 2018-12-20 21:04:44 -08:00
Davanum Srinivas
954996e231
Move from glog to klog
- Move from the old github.com/golang/glog to k8s.io/klog
- klog as explicit InitFlags() so we add them as necessary
- we update the other repositories that we vendor that made a similar
change from glog to klog
  * github.com/kubernetes/repo-infra
  * k8s.io/gengo/
  * k8s.io/kube-openapi/
  * github.com/google/cadvisor
- Entirely remove all references to glog
- Fix some tests by explicit InitFlags in their init() methods

Change-Id: I92db545ff36fcec83afe98f550c9e630098b3135
2018-11-10 07:50:31 -05:00
Mike Crute
49df100af9 fix AWS volume and cloud provider import order 2018-10-30 08:18:45 -07:00
Zeqing Zhang
65bed1d982 fix awsStandardDNSSuffix 2017-11-15 16:39:48 +08:00
Zeqing Zhang
6a1b31323e swap the return statements 2017-11-15 16:39:47 +08:00
Zeqing Zhang
45ae5bf1e5 Support AWS ECR credentials in China 2017-11-15 16:39:46 +08:00
Justin Santa Barbara
04b787b946 AWS: trust region if found from AWS metadata
Means we can run in newly announced regions without a code change.

We don't register the ECR provider in new regions, so we will still need
a code change for now.

This also means we do trust config / instance metadata, and don't reject
incorrectly configured zones.

Fix #35014
2017-01-18 09:17:55 -05:00
Kubernetes Submit Queue
7a198a9368 Merge pull request #38746 from justinsb/aws_eu_west_2
Automatic merge from submit-queue (batch tested with PRs 39628, 39551, 38746, 38352, 39607)

AWS: recognize eu-west-2 region
2017-01-10 11:54:17 -08:00
Justin Santa Barbara
e8b4875348 AWS: recognize eu-west-2 region
London calling...
2016-12-13 23:14:41 -05:00
Justin Santa Barbara
e2342eb3bf AWS: Recognize ca-central-1 region 2016-12-08 16:27:23 -05:00
Justin Santa Barbara
80d4391d87 AWS: recognize us-east-2 region
The newly announced region must be added to our list of known regions.
2016-10-17 23:20:45 -04:00
lixiaobing10051267
b67b98601c Wrong path for log_handler.go 2016-07-27 16:04:20 +08:00
k8s-merge-robot
7be82496eb Merge pull request #28428 from justinsb/aws_region_ap_south
Automatic merge from submit-queue

AWS: Add ap-south-1 to list of known AWS regions

Adding the new ap-south-1 region (Mumbai)
2016-07-14 20:28:53 -07:00
Justin Santa Barbara
60c37a0a87 AWS: Add ap-south-1 to list of known AWS regions
Adding the new ap-south-1 region (Mumbai)
2016-07-02 21:47:09 -04:00
David McMahon
ef0c9f0c5b Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
Rudi Chiarito
684517f74f Add ap-northeast-2 2016-05-10 12:03:41 -04:00
Rudi Chiarito
6e6ea46182 Include changes from feedback
Use constructor for ecrProvider
Rename package to "credentials" like golint requests
Don't wrap the lazy provider with a caching provider
Add immedita compile-time interface conformance checks for the interfaces
Added comments
2016-05-10 12:03:40 -04:00
Rudi Chiarito
eea29e8851 Allow cross-region image pulling with AWS' ECR
This is step two. We now create long-lived, lazy ECR providers in all regions.
When first used, they will create the actual ECR providers doing the work
behind the scenes, namely talking to ECR in the region where the image lives,
rather than the one our instance is running in.

Also:

- moved the list of AWS regions out of the AWS cloudprovider and into the
credentialprovider, then exported it from there.
- improved logging

Behold, running in us-east-1:

```
aws_credentials.go:127] Creating ecrProvider for us-west-2
aws_credentials.go:63] AWS request: ecr:GetAuthorizationToken in us-west-2
aws_credentials.go:217] Adding credentials for user AWS in us-west-2
Successfully pulled image 123456789012.dkr.ecr.us-west-2.amazonaws.com/test:latest"
```

*"One small step for a pod, one giant leap for Kube-kind."*
2016-05-10 12:03:39 -04:00
Rudi Chiarito
ca6bdba014 Allow lazy binding in credential providers; don't use it in AWS yet
This is step one for cross-region ECR support and has no visible effects yet.
I'm not crazy about the name LazyProvide. Perhaps the interface method could
remain like that and the package method of the same name could become
LateBind(). I still don't understand why the credential provider has a
DockerConfigEntry that has the same fields but is distinct from
docker.AuthConfiguration. I had to write a converter now that we do that in
more than one place.

In step two, I'll add another intermediate, lazy provider for each AWS region,
whose empty LazyAuthConfiguration will have a refresh time of months or years.
Behind the scenes, it'll use an actual ecrProvider with the usual ~12 hour
credentials, that will get created (and later refreshed) only when kubelet is
attempting to pull an image. If we simply turned ecrProvider directly into a
lazy provider, we would bypass all the caching and get new credentials for
each image pulled.
2016-03-29 15:39:30 -04:00
goltermann
34d4eaea08 Fixing several (but not all) go vet errors. Most are around string formatting, or unreachable code. 2016-03-22 17:26:50 -07:00
Rudi Chiarito
76e29ed455 Register ECR credential plugin only when an AWS cloud instance is created 2016-01-25 22:18:45 -05:00
Rudi Chiarito
bc0dd97a70 ECR credential provider 2016-01-22 15:03:25 -05:00