cloud-operators
cloud-operators copied to clipboard
Enhancement Request: add IBM Power Linux Platform (ppc64le) support
Hi,
I've been able to build and validate the operator on ppc64le. I've also published the build-script here. I'm trying to get the changes for adding ppc64le support merged. Since ppc64le is also a supported architecture in travis, I'm also aiming towards adding the ppc64le build to the travis job.
However, there are a few things where I am a bit confused and need some guidance:
- The image gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0 which is used in
config/default/manager_auth_proxy_patch.yaml
is not multi-arch. So, I need to usecarlosedp/kube-rbac-proxy:v0.5.0
for ppc64le. But I can't find a clean way to accommodate this requirement to use different image based on current ARCH. - I see that this commit introduced a secrets detection capability with pre-commit hook configuration. Would this be enough to use the same ENV parameters as this in the travis job on my fork? Or do I have to make some extra configuration for the
secure
parameters? -
shellcheck
, which is needed forlint
target, does not have ppc64le support yet. But I've been able to build it on ppc64le. I'm thinking of adding a script to build shellcheck inhack
directory and reference that here for ppc64le by adding an ARCH check. Does that sound good? Is there a better way to do this? - About the yaml files which are published as assets on the release page, I'm not sure how the ppc64le specific yaml (e.g. apps_v1_deployment_ibmcloud-operator-controller-manager.yaml which uses
carlosedp/kube-rbac-proxy:v0.5.0
instead ofgcr.io/kubebuilder/kube-rbac-proxy:v0.5.0
) can be included there. Please advise.
Thank you!
About #3 above, even after getting the shellcheck binary built and copied to the expected location, I'm facing issue with the sonatypecommunity/nancy:latest image which is not multi-arch. Error log:
# make lint
golangci/golangci-lint info checking GitHub for tag 'v1.28.3'
golangci/golangci-lint info found version: 1.28.3 for v1.28.3/linux/ppc64le
golangci/golangci-lint info installed /root/amit_sadaphule/gopath/bin/golangci-lint
/root/amit_sadaphule/gopath/bin/shellcheck
golangci-lint run
find . -name '*.*sh' | xargs shellcheck --color
go list -json -m all | docker run --rm -i sonatypecommunity/nancy:latest sleuth
Unable to find image 'sonatypecommunity/nancy:latest' locally
latest: Pulling from sonatypecommunity/nancy
8a65b9b20e5e: Pull complete
115914662b26: Pull complete
dcbaa2dbef6b: Pull complete
Digest: sha256:cce3bd970677ac013d3a7c15d2424cba143099eff4ece0e8bc2c69a472d66117
Status: Downloaded newer image for sonatypecommunity/nancy:latest
standard_init_linux.go:211: exec user process caused "exec format error"
Makefile:146: recipe for target 'lint' failed
make: *** [lint] Error 1
Should I try and resolve this dependency? Or can we live without lint target on ppc64le? Please advise.
@JohnStarich could you please provide guidance on the above points?
Cc @gerrith3 @seth-priya
@JohnStarich @pdettori is there anyone that can take a look at this issue. It looks like some underlying components need to be created as multi-arch? Should Amit look into that or is someone from an appropriate squad looking into that? thanks!
@amitsadaphule Is the requirement only multi-arch images? I don't think we need to run the entire pipeline as ppc to get that result.
We don't have the resources to implement this, but I'd be happy to discuss and review PRs. I've messaged you on internal Slack, so we can continue our discussions there.