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

Apple Silicon/M1 builds for Istioctl #29596

Closed
cagataygurturk opened this issue Dec 12, 2020 · 12 comments
Closed

Apple Silicon/M1 builds for Istioctl #29596

cagataygurturk opened this issue Dec 12, 2020 · 12 comments
Labels
area/test and release kind/enhancement lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed
Milestone

Comments

@cagataygurturk
Copy link
Contributor

cagataygurturk commented Dec 12, 2020

Describe the feature request

Native builds for Apple Silicon/M1 after Go releases its support for that platform.

Describe alternatives you've considered

Currently Rosetta 2 runs Istioctl just fine.

[ ] Docs
[x] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[x] Test and Release
[x] User Experience
[ ] Developer Infrastructure

@howardjohn
Copy link
Member

If I understand correctly, this requires go 1.16 (https://tip.golang.org/doc/go1.16#darwin) then building with GOOS=darwin and GOARCH=arm64. This is reasonable to do once we update to 1.16, which we will do once its released, which will probably just miss the 1.9 release.

@cagataygurturk
Copy link
Contributor Author

That‘s correct @howardjohn. The relevant Go issue tracking Apple Silicon support is here: golang/go#39782

Can we protect this issue being closed for being stale, since Go support will at least take until February 2021 to be released?

@howardjohn howardjohn added this to the 1.9 milestone Dec 14, 2020
@howardjohn howardjohn added the lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed label Dec 14, 2020
@brian-avery brian-avery modified the milestones: 1.9, 1.10 Jan 27, 2021
@brian-avery
Copy link
Member

Changed this to a p1 in 1.10 due to the fact that this already works in Rosetta and won't make it into 1.9. Having builds will be important, but we also don't have a way to test this. Are there any volunteers? Thanks.

@cagataygurturk
Copy link
Contributor Author

cagataygurturk commented Jan 27, 2021

Changed this to a p1 in 1.10 due to the fact that this already works in Rosetta and won't make it into 1.9. Having builds will be important, but we also don't have a way to test this. Are there any volunteers? Thanks.

I own an M1 and I am happy to help for manually testing at least :)

@cagataygurturk
Copy link
Contributor Author

Go 1.16 is released

howardjohn added a commit to howardjohn/istio that referenced this issue Feb 17, 2021
For istio#29596

Next step is include it in the release

Manually built at
http://storage.googleapis.com/howardjohn/tmp/istioctl-osx-arm64. Please
test it, I don't have a mac.
@howardjohn
Copy link
Member

@cagataygurturk would appreciate if you can try out #30890. I posted a link to a prebuilt binary as well

istio-testing pushed a commit that referenced this issue Feb 18, 2021
For #29596

Next step is include it in the release

Manually built at
http://storage.googleapis.com/howardjohn/tmp/istioctl-osx-arm64. Please
test it, I don't have a mac.
@sayjeyhi
Copy link

sayjeyhi commented Feb 27, 2021

@howardjohn I tried to test your provided binary file, I used the gcr.io hub and it downloads the image but when starting the container it got probation failure:

Events:
  Type     Reason     Age                   From               Message
  ----     ------     ----                  ----               -------
  Normal   Scheduled  10m                   default-scheduler  Successfully assigned istio-system/istiod-56dd66799-24phj to hoory-control-plane
  Normal   Pulling    10m                   kubelet            Pulling image "gcr.io/istio-testing/pilot:1.10-dev"
  Normal   Pulled     8m26s                 kubelet            Successfully pulled image "gcr.io/istio-testing/pilot:1.10-dev" in 1m46.228033006s
  Normal   Created    8m24s                 kubelet            Created container discovery
  Normal   Started    8m24s                 kubelet            Started container discovery
  Warning  Unhealthy  9s (x165 over 8m21s)  kubelet            Readiness probe failed: Get "http://10.244.0.6:8080/ready": dial tcp 10.244.0.6:8080: connect: connection refused

and ingressgateway got this error:

Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  83s (x6 over 6m38s)  default-scheduler  0/1 nodes are available: 1 node(s) didn't match Pod's node affinity.

@howardjohn
Copy link
Member

We only support the istioctl client binary. Istio serverside components (istiod/gateway/sidecar) do not support ARM

Closing this since we have completed our support. Thanks for testing!

@sayjeyhi
Copy link

sayjeyhi commented Mar 3, 2021

@howardjohn thanks, but you mean that we will not be able to use istio ingress getway on M1 locally?

Do you have any suggestions of how we could handle it?!

@howardjohn
Copy link
Member

howardjohn commented Mar 3, 2021 via email

@literallyjustroy
Copy link

@howardjohn I believe envoy now supports M1 Arm (as of shortly after your last comment) according to envoy/issues/16482).

What work needs to be done to support M1 Arm on the Istio side of things?

@howardjohn
Copy link
Member

See #35176. tl;dr hardware + some CI/CD work. I would expect this to be ready ~soon

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/test and release kind/enhancement lifecycle/staleproof Indicates a PR or issue has been deemed to be immune from becoming stale and/or automatically closed
Projects
Status: Done
Development

No branches or pull requests

7 participants