Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ServiceAccount should precede DaemonSet in yaml aws #1637

Merged
merged 1 commit into from
Sep 24, 2021

Conversation

srini-ram
Copy link
Contributor

What type of PR is this?: bug

Which issue does this PR fix:
fixes #1632

What does this PR do / Why do we need it:
Ensure serviceAccount obj is created before daemonSet creation to avoid race condition mentioned in #1632

Alphabetic order of jsonet object name in manifest.jsonet file decides the order of k8s objects in
CNI yaml manifest. This fix ensures serviceAccount appears at top of CNI manifest for manual yaml generation work flow.

Starting CNI 1.10 version, Github workflow will be added to
automatically generate CNI manifests (and Calico manifest) using helm and these
auto generated artifacts will be placed in CNI 1.10 release Dir. Github
workflow changes are already available in CNI master branch.

If an issue # is not available please add repro steps and logs from IPAMD/CNI showing the issue:

Testing done on this change:

1. Create a cluster with CNI 1.9.1 (MAO)
2. Delete VPC CNI addon - This step triggers deletion of ServiceAccount, DaemonSet..etc aws-node objects on cluster as verified by Kubectl
3. Apply the manually generated aws-vpc-cni.yaml (from manifest.jsnonet) that has service account at top
aws-node service account, DaemonSet..etc are recreated as listed in manually generated CNI yaml
4. Bring up worker nodes and confirm aws-node DS is healthy. 
5. Verify connectivity across nodes
6. Downgrade to 1.9.1 yaml that has service account at bottom of aws-node yaml 
7. Upgrade to master yaml that has service account listed at the top of aws-node yaml

Automation added to e2e: No

Will this break upgrades or downgrades. Has updating a running cluster been tested?: Yes

Rollback to 1.91 from master didnt have any impact
ramabad@88665a3712d6 cni-manifest-1.10 % kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.9.1/config/v1.9/aws-k8s-cni.yaml

clusterrolebinding.rbac.authorization.k8s.io/aws-node unchanged
clusterrole.rbac.authorization.k8s.io/aws-node unchanged
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
customresourcedefinition.apiextensions.k8s.io/eniconfigs.crd.k8s.amazonaws.com configured
daemonset.apps/aws-node configured
serviceaccount/aws-node unchanged

Upgrade from 1.9.1 to manually generated manifest didnt have any issues

ramabad@88665a3712d6 cni-manifest-1.10 % k apply -f aws-k8s-cni.yaml
serviceaccount/aws-node unchanged
clusterrolebinding.rbac.authorization.k8s.io/aws-node unchanged
clusterrole.rbac.authorization.k8s.io/aws-node unchanged
customresourcedefinition.apiextensions.k8s.io/eniconfigs.crd.k8s.amazonaws.com configured
daemonset.apps/aws-node configured

Does this change require updates to the CNI daemonset config files to work?: No

Does this PR introduce any user-facing change?: No


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

ServiceAccount should precede DaemonSet in yaml aws#1632

Alphabetic order of jsonet object decides the order of k8s objects in
yaml file. This fix ensures serviceAccount appears at top. This is a
temporary change to address manual manifest generation from jsonet.

Starting CNI 1.10 version, Github workflow will be added to
automatically generate CNI manifests (and Calico) using helm and these
auto generated artifacts will be placed in CNI 1.10 release dir. Github
workflow changes are already available in CNI master branch.
@srini-ram srini-ram changed the title ServiceAccount should precede DaemonSet in yaml aws #1632 ServiceAccount should precede DaemonSet in yaml aws Sep 23, 2021
@srini-ram srini-ram requested a review from achevuru September 23, 2021 23:31
Copy link
Contributor

@M00nF1sh M00nF1sh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

Copy link
Contributor

@jayanthvn jayanthvn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM :)

@jayanthvn jayanthvn merged commit ec0134c into aws:master Sep 24, 2021
@srini-ram srini-ram deleted the my-single-change branch September 24, 2021 20:56
jayanthvn pushed a commit that referenced this pull request Sep 29, 2021
* This change address following Github issue (#1637)

ServiceAccount should precede DaemonSet in yaml #1632

Alphabetic order of jsonet object decides the order of k8s objects in
yaml file. This fix ensures serviceAccount appears at top. This is a
temporary change to address manual manifest generation from jsonet.

Starting CNI 1.10 version, Github workflow will be added to
automatically generate CNI manifests (and Calico) using helm and these
auto generated artifacts will be placed in CNI 1.10 release dir. Github
workflow changes are already available in CNI master branch.

* Move IPv6 settings to init container

* Fix UT

Co-authored-by: Srinivasan Ramabadran <[email protected]>
jayanthvn pushed a commit to jayanthvn/amazon-vpc-cni-k8s that referenced this pull request Oct 14, 2021
ServiceAccount should precede DaemonSet in yaml aws#1632

Alphabetic order of jsonet object decides the order of k8s objects in
yaml file. This fix ensures serviceAccount appears at top. This is a
temporary change to address manual manifest generation from jsonet.

Starting CNI 1.10 version, Github workflow will be added to
automatically generate CNI manifests (and Calico) using helm and these
auto generated artifacts will be placed in CNI 1.10 release dir. Github
workflow changes are already available in CNI master branch.
jayanthvn added a commit that referenced this pull request Oct 14, 2021
ServiceAccount should precede DaemonSet in yaml #1632

Alphabetic order of jsonet object decides the order of k8s objects in
yaml file. This fix ensures serviceAccount appears at top. This is a
temporary change to address manual manifest generation from jsonet.

Starting CNI 1.10 version, Github workflow will be added to
automatically generate CNI manifests (and Calico) using helm and these
auto generated artifacts will be placed in CNI 1.10 release dir. Github
workflow changes are already available in CNI master branch.

Co-authored-by: Srinivasan Ramabadran <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ServiceAccount should precede DaemonSet in yaml
3 participants