kubernetes / cloud-provider-aws

Cloud provider for AWS
https://cloud-provider-aws.sigs.k8s.io/
Apache License 2.0
395 stars 302 forks source link

Add cluster details to the sts through headers #649

Closed kmala closed 1 year ago

kmala commented 1 year ago

What type of PR is this?

/kind feature

What this PR does / why we need it:

This PR would add additional headers passing the clusters arn and cx account id when making calls to sts and making calls using an assumed roles.

Which issue(s) this PR fixes:

Fixes #

Special notes for your reviewer:

Does this PR introduce a user-facing change?:

- Add cluster details as headers to STS when assuming a role to make requests.
- Add validation for role ARN passed in cloud config
k8s-ci-robot commented 1 year ago

This issue is currently awaiting triage.

If cloud-provider-aws contributors determine this is a relevant issue, they will accept it by applying the triage/accepted label and provide further guidance.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
k8s-ci-robot commented 1 year ago

Hi @kmala. Thanks for your PR.

I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
dims commented 1 year ago

/ok-to-test

wongma7 commented 1 year ago

/ok-to-test

dims commented 1 year ago

/assign @nckturner

kmala commented 1 year ago

/retest

k8s-ci-robot commented 1 year ago

@kmala: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-cloud-provider-aws-e2e-kubetest2 14a13ad026a418d7e3f8bb3e90f0a14e95351fb4 link false /test pull-cloud-provider-aws-e2e-kubetest2

Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
kmala commented 1 year ago

/retest

nckturner commented 1 year ago

/lgtm /approve

k8s-ci-robot commented 1 year ago

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: cartermckinnon, nckturner

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files: - ~~[OWNERS](https://github.com/kubernetes/cloud-provider-aws/blob/master/OWNERS)~~ [nckturner] Approvers can indicate their approval by writing `/approve` in a comment Approvers can cancel approval by writing `/approve cancel` in a comment
xrstf commented 10 months ago

Just as a heads up: So far we were (mis)using the AWS CCM and configured it using a cloud-config that looked like this:

[global]
Zone="eu-west-1x"
VPC="vpc-0b91611f9eac0a67e"
SubnetID=""
RouteTableID="rtb-0440fe43a1d83a5d6"
RoleARN="kubernetes-my-cluster-control-plane"
KubernetesClusterID="my-cluster"
DisableSecurityGroupIngress=false
ElbSecurityGroup=""

Even though the field was clearly named RoleARN, it also accepted a non-ARN value. This PR here however "broke" that (accidental?) compatibility, forcing us to change our code a bit. Which is fine, but the AWS CCM also documents that the CloudConfig should not change in a backwards-incompatible way.

So maybe this "break" would be worth highlighting in the release notes.

kmala commented 10 months ago

Even though the field was clearly named RoleARN, it also accepted a non-ARN value. This PR here however "broke" that (accidental?) compatibility, forcing us to change our code a bit. Which is fine, but the AWS CCM also documents that the CloudConfig should not change in a backwards-incompatible way.

There is no validation before this PR but it wouldn't have worked right?

So maybe this "break" would be worth highlighting in the release notes.

Yes, added to the release notes.

xrstf commented 10 months ago

It worked just fine with a broken ARN value in the RoleARN field. Just not anymore with the 0.29.x AWS CCM releases.

Yes, added to the release notes.

Thanks, but where can I find the release notes for 0.29? I cannot see a GitHub release and https://github.com/kubernetes/cloud-provider-aws/blob/master/docs/CHANGELOG.md stopped at 1.22. Just so in the future I know where to look :-)