mumoshu/terraform-provider-eksctl

parse iamidentitymapping error when creating or refreshing cluster in using new eksctl

Closed this issue · 7 comments

What happened?

using eksctl new version, like 0.89.0

eksclt terraform provider would return such error when refreshing or creating EKS cluster

Error: creating cluster: can not get iamidentitymapping from eks cluster: parse iamidentitymapping : invalid character '-' after top-level value

dig some more details, I found it would be cause new output of ecksctl new version.

When we execute eksctl get iamidentitymapping --cluster my-cluster-name -o json --region my-region

it would response

2022-03-31 14:59:54 [ℹ]  eksctl version 0.89.0
2022-03-31 14:59:54 [ℹ]  using region us-west-2
[
   xxxx real json output 
]

if tools is using the json output to parse aws_auth information, it would make them failed.

I have been having this same issue, I downgraded my eksctl version arbitrarily to 0.77.0 and it fixed this error for me. Versions 0.90,0.89, and 0.88 are all affected in my testing.

Here are my Terraform debug errors:
[ERROR] vertex "eksctl_cluster.cluster" error: reading cluster: reading aws-auth via eksctl get iamidentitymaping: can not get iamidentitymapping from eks cluster: parse iamidentitymapping : invalid character '-' after top-level value
Error: reading cluster: reading aws-auth via eksctl get iamidentitymaping: can not get iamidentitymapping from eks cluster: parse iamidentitymapping : invalid character '-' after top-level value

I am using MacOS with homebrew, to downgrade the version I found a previous commit of the brew formula and used this command:
curl https://raw.githubusercontent.com/Homebrew/homebrew-core/19e81b3c456c0afb8abede830e38bad28be44b09/Formula/eksctl.rb > $(find $(brew --repository) -name eksctl.rb) && brew reinstall eksctl

This works as a workaround!

Hey! Have you already reported this to eksctl? If eksctl0.88+ has a regression that wraps any json output with some prefixes for the logger of their choice, I consider it's a bug in eksctl, because that effectively breaks the meaning of -o json.

Hey! Have you already reported this to eksctl? If eksctl0.88+ has a regression that wraps any json output with some prefixes the logger of their choice, I consider it's a bug in eksctl, because that effectively breaks the meaning of -o json.

It looks like they are working on it here: eksctl-io/eksctl#5038. I will comment to provide additional context in that thread!

Hi @mumoshu , I have reported this issue to eksctl on first time, but also file case here to let terraform-provider-eksctl users be aware it.

Hi @mumoshu , eksctl team would not change the output format, and they think the output from stdout is still structured and can be parsed, FYI
eksctl-io/eksctl#5038

@charlie-fox Thanks for sharing! I didn't realize this provider captured both stdout and stderr. Yes, I eksctl's behavior seems correct and we should fix this provider to only capture stdout!

This is now resolved in release 0.17.0