맥에서 istio 이미지 빌드하기 (+orbstack)

 

 

istio를 빌드하기 위한 환경 구성으로 필요한건 다음과 같습니다.

1. git

2. docker

3. make 

 

3개는 맥에서 모두 설치하는건 간단하니 넘어가도록 하겠습니다.

저는 orbstack을 사용하고 있습니다.

 

이미지 전체 다 빌드하기

make docker

 

이렇게 하면 에러가 발생한다.  .. 하하 아직 확인방법을 못찾았다..

docker를 무조건 써야하는것 같은데 확인해볼 예정입니다.  

 

추가) 원인..

이유를 알아냈는데 orbstack을 쓰면서 docker buildx ls를 하면 에러가 난다.

NAME/NODE           DRIVER/ENDPOINT    STATUS    BUILDKIT   PLATFORMS
brave_hopper*       docker-container
 \_ brave_hopper0    \_ orbstack       running   v0.16.0    linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/arm/v7, linux/arm/v6
default             docker
 \_ default          \_ default        running   v0.15.1    linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/arm/v7, linux/arm/v6
orbstack            docker
 \_ orbstack         \_ orbstack       running   v0.15.1    linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/arm/v7, linux/arm/v6
desktop-linux                          error

Cannot load builder desktop-linux: Cannot connect to the Docker daemon at unix:///Users/nueah/.docker/run/docker.sock. Is the docker daemon running?

 

해결방법

우선 docker buildx ls 할때 에러나는건 다음의 방법을 이용하면 해결할 수 있습니다.

먼저 도커 컨텍스트를 확인해봅니다.

docker context ls

 

결과는 다음과 같습니다.

NAME            DESCRIPTION                               DOCKER ENDPOINT                                 ERROR
default         Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
desktop-linux                                             unix:///Users/xx/.docker/run/docker.sock
orbstack *      OrbStack                                  unix:///Users/xx/.orbstack/run/docker.sock

 

문제가 되는 context는 desktop-linux였기 때문에 이걸 삭제해줍니다.

docker context rm desktop-linux

 

이제 docker buildx ls를 해도 에러가 보이지 않습니다.

 

하지만 이렇게 해도 빌드시 에러가 발생하는데 에러 로그는 이렇게 도커 데몬이 실행중이지 않은 것 같다면서 에러가 발생합니다.

2024-09-24T13:52:14.380441Z	info	Running command: tools/docker-copy.sh pilot/docker/Dockerfile.ztunnel /work/out/linux_amd64/ztunnel /work/out/linux_arm64/dockerx_build/build.docker.ztunnel
2024-09-24T13:52:14.431306Z	info	make complete	runtime=23.212511926s
2024-09-24T13:52:14.431962Z	info	Running command: docker buildx bake -f /work/out/linux_arm64/dockerx_build/docker-bake.json all
[+] Building 0.0s (1/1) FINISHED                                               docker-container:brave_hopper
 => [internal] load local bake definitions                                                              0.0s
 => => reading /work/out/linux_arm64/dockerx_build/docker-bake.json 6.25kB / 6.25kB                     0.0s
ERROR: Cannot connect to the Docker daemon at unix:///Users/xx/.orbstack/run/docker.sock. Is the docker daemon running?
2024-09-24T13:52:14.686707Z	info	build complete	runtime=23.46897176s
Error: exit status 1
make[1]: *** [tools/istio-docker.mk:31: docker] Error 255
make: *** [docker] Error 2

 

그래서 그냥 이제 기본 default context를 설정하도록 변경해봅니다.

docker context use default

 

변경이 잘된 것을 확인 한 뒤 다시 빌드해보면 성공적으로 빌드가 되는것을 확인할 수 있습니다.

 

 

이미지 정보 변경해서 빌드하기

HUB="docker.io/umhaha" TAG="1.18.7-test" make docker

 

이렇게 HUB 정보랑 TAG정보를 넣어서 빌드하면 빌드할때 적용된 모습을 확인할 수 있습니다. 

 

istioctl 빌드하기

참고로 이렇게 치면 istioctl도 빌드할 수 있습니다. 

make istioctl

 

특정 환경에 맞춰 빌드하고 싶다면, 다음과 같은 명령어를 사용하세요.

 

GOOS에는 원하는 OS 버전을, GOARCH에는 아키텍처를 입력하면 됩니다.

GOOS=darwin GOARCH=arm64 ./common/scripts/gobuild.sh out/darwin_arm64/istioctl ./istioctl/cmd/istioctl