현재 kubernetes 자동화 설치 툴을 개발 중입니다.
Harbor가 공식 지원을 하거나 할 계획이 당연히 있겠지!!
라고 생각하고 1분만에 험난한 길이 예상되어 버렸다.
왜 안해줘...? 해줘... 해줘...
해당 글을 찾은 후에 설치 후 테스트까지 돌리고
완벽하게 작동하는 것을 본 후 행복회로가 불타기 시작했다.
내가 안해도 되는거지?... 그냥 있는거 써도 되는거지?... 그렇지????
행복과 절망은 한끝차이라했나?
해당 이미지가 있는 github에 접속해보고 해당 패키지를 본 후
행복회로는 재가되고 절망회로가 돌아가기 시작했다.
내가 지금 써야되는 버전은 v2.7.4인데 없네?... 어라?...
이 사람의 github action을 보면 따라하기는 쉬워보였다. 내가 직접하기 전 까진
해당 action 파일과 repository history를 보면서 빌드하는 방법을 이해한 후
이거는 파일을 복붙하는 과정이 빠르겠다라고 판단하고 작성하기 시작했다.
끄적끄적 template로 파일들 복붙해놓고 각각 로직에 맞춰서 변환해주고
실행했더니 초록불만 뜨길래 잠깐이라도 난 사실 개쩌는거 아닐까 라고 생각한 범부였다.
하지만 분명히 github packages에 생성 되었어야 할 notary-signer-photon
, notary-server-photon
이 없다? 왜?
오류가 떠도 초록불이 떠서 날 설레게하는 Github 당신은 대체
해당 오류가 나는 부분을 가서 디렉토리 권한 및 소유자, 변수는 제대로 찍히는 지를 테스트를 해봤는데 action이 작동하는 계정은 runner
라는 계정인데 binary
라는 디렉토리를 root
로 만들어놓고 docker cp
로 복사하려니 생기는 오류였다.
sudo chown $(whoami):$(id -gn) binary
로 디렉토리 소유자를 변경 후 다시 돌리니까 이미지가 잘 생성된 것을 확인했다.
이제 잘 만들어진 이미지를 잘 패키징해야하는 일만 남았다.
harbor의 Makefile에 기본적으로 package_offline
이라는걸 보고 이걸 사용하도록 했다.
- name: Docker packaging Offline installer
env:
version: ${{ env.tag }}
run: |
# Run the 'package_offline' command in ./harbor/Makefile
cd ./harbor
sed -i 's/package_offline: update_prepare_version compile build/package_offline: update_prepare_version/' Makefile
sed -i 's/PKGVERSIONTAG=dev/PKGVERSIONTAG='"${version}"'-arm64/' Makefile
sed -i 's/VERSIONTAG=dev/VERSIONTAG='"${version}"'/' Makefile
sed -i 's/TRIVYFLAG=false/TRIVYFLAG=true/' Makefile
sed -i 's/NOTARYFLAG=false/NOTARYFLAG=true/' Makefile
sed -i 's/CHARTFLAG=false/CHARTFLAG=true/' Makefile
make package_offline
이런 식으로 꺼져있는 옵션은 전부 true로 변경하고 묶는 과정에서 compile, build 과정은 필요없으니 제외하도록 했다.
해당 과정을 완료하면 harbor-offline-installer-v2.7.4-arm64.tgz
파일이 안에 생기는데 해당 파일을 NAS에 업로드 하면 끝!
- name: Synology Upload Action
uses: bungabear/synology_upload_action@v1.0.0
with:
host: ${{ secrets.NAS_DOMAIN }}
username: ${{ secrets.NAS_ID }}
password: ${{ secrets.NAS_PW }}
filepath: ./harbor/harbor-offline-installer-${{ env.tag }}-arm64.tgz
uploadpath: ${{ secrets.NAS_PATH }}
filename: harbor-offline-installer-${{ env.tag }}-arm64.tgz
overwrite: true
createparent: true
새롭게 생기는 일에 대해서 충분히 해보고 안된다고 판단하면 뭐라할 사람이없다.
여러 검색 사이트를 뒤져보고(바이두까지 갔었다) 방안을 생각해 본 뒤 자신의 역량에 벗어나면 도움을 받아보면 어느정도의 일은 해결 되는 것 같다.
근데 기본적으로 복붙할 template 파일들이 없었다면 나혼자는 못하지 않았을까?...