TKG 1.6 문서를 보고서 인터넷이 되지 않는 환경을 구성을 하다가 보면 image 다운로드 이후, private harbor로 전환하는 과정에서 오류가 발생하는 것을 볼 수 있습니다.
image 옮기는 download-images.sh 스크립트를 실행 시, 일부 image에서 옵션 값이 맞지 않음으로 발생하는 현상입니다.
이를 위해, script의 echo 메시지 항목을 조금 수정하여, 어떤 image에서 에러가 발생하는지 확인 후, 옵션 값을 조절할 필요가 있습니다.
#!/bin/bash
set -euo pipefail
images_script=${1:-}
if [ ! -f $images_script ]; then
echo "You may add your images list filename as an argument."
echo "E.g ./download-images.sh image-copy-list"
fi
commands="$(cat ${images_script} |grep imgpkg |sort |uniq)"
while IFS= read -r cmd; do
echo -e "\nrunning $cmd\n"
until $cmd; do
echo -e "\nDownload failed. Retrying.... $cmd\n"
sleep 1
done
done <<< "$commands"
#### while 문 안에 echo 구문을 수정 - $cmd를 추가하여, 어느 명령줄에서 error가 발생하는지 확인 필요함. 원문은 error를 표시하나, command에 grep sort 구문으로 인하여, image-copy-list와는 순서가 맞지 않음. 그럼으로 sort를 하지 않거나, $cmd를 추가해서 확인
#### 혹은 image-copy-list를 바로 실행 모드로 image-copy-list.sh 형태로 복사하여, 실행하는게 더 오류 시 위치를 직관적으로 알 수 있습니다. 이미 진행된 명령줄은 삭제를 하면 됨.
(굳이 script를 실행하지 않더라도, image-copy-list에 있는 명령문을 일정 행씩 복사하여, 실행하여 실패하는 행만을 다시 수정 실행하는 것도 한가지 대안이 될 수 있습니다. 조금 번거롭긴 하지만 말입니다.)
일단, 위와 같이 스크립트를 수정하여 실행 후, 에러가 나는 행을 확인한 다음 다시 image-copy-list를 백업 파일을 만든 후, 에러가 난 이전의 행을 삭제하고, 에러가 난 행을 수정한 다음에 download-images.sh을 실행하면 됩니다.
현재 에러가 나는 행은 2곳으로 확인됩니다.
As-Is:
imgpkg copy -i projects.registry.vmware.com/tkg/packages/capabilities:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/capabilities --registry-ca-cert-path /tmp/cacrtbase64d.crt
To-Be:
imgpkg copy -b projects.registry.vmware.com/tkg/packages/capabilities:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/capabilities --registry-ca-cert-path /tmp/cacrtbase64d.crt
As-Is:
imgpkg copy -i projects.registry.vmware.com/tkg/packages/tkg-storageclass:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/tkg-storageclass --registry-ca-cert-path /tmp/cacrtbase64d.crt
To-Be:
imgpkg copy -b projects.registry.vmware.com/tkg/packages/tkg-storageclass:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/tkg-storageclass --registry-ca-cert-path /tmp/cacrtbase64d.crt
전체 설치 과정
Tanzu CLI tool 설치
# tanzu directory 안에서 실행
#tanzu tool install
sudo install core/v0.25.0/tanzu-core-linux_amd64 /usr/local/bin/tanzu
#tanzu 초기화 및 버전 확인
tanzu init
tanzu version
# 옵션: Plugin 재설치 - tanzu directory 안에서 실행
tanzu plugin clean
tanzu plugin sync
Kubernetes tool 설치
# Kubernetes tool 설치
chmod ugo+x kubectl-linux-v1.23.8+vmware.2
sudo install kubectl-linux-v1.23.8+vmware.2 /usr/local/bin/kubectl
Tanzu Cavel cli tool
cd cli
gunzip ytt-linux-amd64-v0.41.1+vmware.1.gz
sudo chmod ugo+x ytt-linux-amd64-v0.41.1+vmware.1
sudo mv ./ytt-linux-amd64-v0.41.1+vmware.1 /usr/local/bin/ytt
gunzip kapp-linux-amd64-v0.49.0+vmware.1.gz
sudo chmod ugo+x kapp-linux-amd64-v0.49.0+vmware.1
sudo mv ./kapp-linux-amd64-v0.49.0+vmware.1 /usr/local/bin/kapp
gunzip kbld-linux-amd64-v0.34.0+vmware.1.gz
sudo chmod ugo+x kbld-linux-amd64-v0.34.0+vmware.1
sudo mv ./kbld-linux-amd64-v0.34.0+vmware.1 /usr/local/bin/kbld
gunzip imgpkg-linux-amd64-v0.29.0+vmware.1.gz
sudo chmod ugo+x imgpkg-linux-amd64-v0.29.0+vmware.1
sudo mv ./imgpkg-linux-amd64-v0.29.0+vmware.1 /usr/local/bin/imgpkg
Docker Instllation on Ubuntu(이미 docker client가 설치되어 동작중이라면 제외)
#docker install
sudo apt remove docker-desktop
rm -r $HOME/.docker/desktop
sudo rm /usr/local/bin/com.docker.cli
sudo apt purge docker-desktop
sudo apt-get update
sudo apt-get update
sudo apt-get install \\
ca-certificates \\
curl \\
gnupg \\
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \\
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] <https://download.docker.com/linux/ubuntu> \\
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo service docker start
### To install a specific version of Docker Engine, list the available versions in the repo, then select and install:
apt-cache madison docker-ce
인터넷 되는 머신에서 아래와 같이 변수 값을 설정 필요
- 이 변수 설정과 별개로 비보안 자체 인증서로 docker 로그인을 위한 과정 필요하며, ubuntu에서 certificate update를 사용하거나, /etc/docker/certs.d/{registry host}/{ca.crt} 의 위치에 클라이언트 키가 위치해 있어야 합니다.
docker login {prviate registry host}
예) docker login vmk-hbr.vmk.corp
## docker login이 가능하도록 먼저 준비 해주세요.
- private harbor의 인증서에 .cert 파일에 대한 base64 치환으로 키 생성하여 TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE에 입력
- 예제: base64 -w 0 vmk-hbr.vmk.corp.cert
#Air-gapped 환경에서 인터넷 되는 machine에서 private harbor로 image 전송을 위한 설정
export TKG_CUSTOM_IMAGE_REPOSITORY="vmk-hbr.vmk.corp/test/1.6.0"
export TKG_IMAGE_REPO="projects.registry.vmware.com/tkg"
export TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE=LS0t[...]tLS0tLQ==
#DNS에 private registry 등록이 되어 있고, 배포되는 bootstrap 및 node에서 dns lookup으로 조회되고 통신이 된다면 추가적인 overlay 설정은 필요치 않음.
export는 ~/.bashrc 를 수정하여, 기재해 놓을 경우에는 로그인 시 지속 적용 가능함.
Overlay - 1 설정
~/.config/tanzu/tkg/providers/ 아래의 각 배포 플랫폼에 맞는 폴더를 찾아서 해당 파일의 최 하단에 code 추가 이후, echo 영역에 IP와 registry path를 기재
예) echo “10.109.211.15 vmk-hbr.vmk.corp/test/1.6.0” >> /etc/hosts
~/.config/tanzu/tkg/providers/infrastructure-vsphere/ytt/vsphere-overlay.yaml
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.subset({"kind":"KubeadmControlPlane"})
---
spec:
kubeadmConfigSpec:
preKubeadmCommands:
#! Add nameserver to all k8s nodes
#@overlay/append
- echo "PRIVATE-REGISTRY-IP PRIVATE-REGISTRY-HOSTNAME" >> /etc/hosts
#@overlay/match by=overlay.subset({"kind":"KubeadmConfigTemplate"}), expects="1+"
---
spec:
template:
spec:
preKubeadmCommands:
#! Add nameserver to all k8s nodes
#@overlay/append
- echo "PRIVATE-REGISTRY-IP PRIVATE-REGISTRY-HOSTNAME" >> /etc/hosts
Overlay - 2 설정
하위 파일을 편집기로 수정하여 아래 code을 spec.template.spec 아래 항목의 “container” block 시작 지점 직전에 삽입을 해야 합니다.
~/.config/tanzu/tkg/providers/ytt/03_customizations/01_tkr/tkr_overlay.lib.yaml
삽입 코드
#@overlay/match missing_ok=True
hostAliases:
- ip: PRIVATE-REGISTRY-IP
hostnames:
- PRIVATE-REGISTRY-HOSTNAME
예제
#@overlay/match by=overlay.subset({"kind":"Deployment","metadata":{"name": "tkr-controller-manager"}})
---
spec:
template:
spec:
#@overlay/match missing_ok=True
hostAliases:
- ip: 10.109.211.15
hostnames:
- vmk-hbr.vmk.corp/test/1.6.0
containers:
#@overlay/match by=overlay.subset({"name":"manager"})
#! TODO: Consume image from BOM
- image: #@ "{}/{}:{}".format(get_image_repo_for_component(bomData.components["tanzu-framework"][0].images.tkrImage), bomData.components["tanzu-framework"][0].images.tkrImage.imagePath, bomData.components["tanzu-framework"][0].images.tkrImage.tag)
TKr 버전을 지정하여 다운로드
# TKr 리스트
imgpkg pull -i ${TKG_IMAGE_REPO}/tkr-compatibility:v$(imgpkg tag list -i ${TKG_IMAGE_REPO}/tkr-compatibility |sed 's/v//' |sort -rn |head -1) --output "tkr-tmp"; cat tkr-tmp/tkr-compatibility.yaml; rm -rf tkr-tmp;
# 인터넷에서 파일 다운로드 후, harbor로 전송을 위한 버전 지정
# TKr 호환성 리스트에서는 v1.23.8+~~~~ 형태로 표시됨으로 + 는 _ 로 치환
export DOWNLOAD_TKRS="v1.23.8_vmware.2-tkg.1"
Image downlod용 shell script
chmod +x gen-publish-images.sh
./gen-publish-images.sh > image-copy-list
cat image-copy-list
image를 Harbor 에 push shell script
- download-images.sh 파일 생성
#!/bin/bash
set -euo pipefail
images_script=${1:-}
if [ ! -f $images_script ]; then
echo "You may add your images list filename as an argument."
echo "E.g ./download-images.sh image-copy-list"
fi
commands="$(cat ${images_script} |grep imgpkg |sort |uniq)"
while IFS= read -r cmd; do
echo -e "\\nrunning $cmd\\n"
until $cmd; do
echo -e "\\nDownload failed. Retrying.... $cmd\\n"
sleep 1
done
done <<< "$commands"
#### while 문 안에 echo 구문을 수정 - $cmd를 추가하여, 어느 명령줄에서 error가 발생하는지 확인 필요함. 원문은 error를 표시하나, command에 grep sort 구문으로 인하여, image-copy-list와는 순서가 맞지 않음. 그럼으로 sort를 하지 않거나, $cmd를 추가해서 확인
#### 혹은 image-copy-list를 바로 실행 모드로 image-copy-list.sh 형태로 복사하여, 실행하는게 더 오류 시 위치를 직관적으로 알 수 있습니다. 이미 진행된 명령줄은 삭제를 하면 됨.
download-images.sh 을 실행
chmod +x download-images.sh
docker login ${TKG_CUSTOM_IMAGE_REPOSITORY}
./download-images.sh image-copy-list
실행 전에 아래 image-copy-list를 일부 행 수정 필요
Image copy list 2곳의 -i → -b 옵션으로 변경 필요
# We shoud correct two lines.
imgpkg copy -i projects.registry.vmware.com/tkg/packages/capabilities:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/capabilities --registry-ca-cert-path /tmp/cacrtbase64d.crt
=>
imgpkg copy -b projects.registry.vmware.com/tkg/packages/capabilities:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/capabilities --registry-ca-cert-path /tmp/cacrtbase64d.crt
imgpkg copy -i projects.registry.vmware.com/tkg/packages/tkg-storageclass:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/tkg-storageclass --registry-ca-cert-path /tmp/cacrtbase64d.crt
==>
imgpkg copy -b projects.registry.vmware.com/tkg/packages/tkg-storageclass:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/tkg-storageclass --registry-ca-cert-path /tmp/cacrtbase64d.crt
Bootstrap에서 실행 필요한 항목
이미지 copy는 인터넷이 되는 머신이고, bootstrap은 인터넷이 안되는 것을 가정하게 됨.
혹은 동일 머신일 경우일 수도 있음.
아래 tanzu config set 명령어는 ~/.config/tanzu/config.yaml 파일을 수정하는 것입니다.
즉 bootstrap에서 tanzu 명령어를 수행 시, 인터넷이 되지 않는 환경의 private registry 경로를 알 수 있도록 환경 값이 적용이 됩니다. 이는 bootstrap 자체에 임시 controlplane node를 생성하기 위한 작업임.
보안 인증된 인증서 사용하는 harbor
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY custom-image-repository.io/yourproject
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY true
#### 예제
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY vmk-hbr.vmk.corp/test/1.6.0
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY true
셀프 인증서에 비보안 harbor
- private harbor의 인증서에 .cert 파일에 대한 base64 치환으로 키 생성
- 예제: base64 -w 0 vmk-hbr.vmk.corp.cert
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY custom-image-repository.io/yourproject
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY false
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE LS0t[...]tLS0tLQ==
#### 예제
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY vmk-hbr.vmk.corp/test/1.6.0
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY false
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE LS0t[...]tLS0tLQ==
Tanzu CLI tool 설치
# tanzu directory 안에서 실행
#tanzu tool install
sudo install core/v0.25.0/tanzu-core-linux_amd64 /usr/local/bin/tanzu
#tanzu 초기화 및 버전 확인
tanzu init
tanzu version
# 옵션: Plugin 재설치 - tanzu directory 안에서 실행
tanzu plugin clean
tanzu plugin sync
Kubernetes tool 설치
# Kubernetes tool 설치
chmod ugo+x kubectl-linux-v1.23.8+vmware.2
sudo install kubectl-linux-v1.23.8+vmware.2 /usr/local/bin/kubectl
Tanzu Cavel cli tool
cd cli
gunzip ytt-linux-amd64-v0.41.1+vmware.1.gz
sudo chmod ugo+x ytt-linux-amd64-v0.41.1+vmware.1
sudo mv ./ytt-linux-amd64-v0.41.1+vmware.1 /usr/local/bin/ytt
gunzip kapp-linux-amd64-v0.49.0+vmware.1.gz
sudo chmod ugo+x kapp-linux-amd64-v0.49.0+vmware.1
sudo mv ./kapp-linux-amd64-v0.49.0+vmware.1 /usr/local/bin/kapp
gunzip kbld-linux-amd64-v0.34.0+vmware.1.gz
sudo chmod ugo+x kbld-linux-amd64-v0.34.0+vmware.1
sudo mv ./kbld-linux-amd64-v0.34.0+vmware.1 /usr/local/bin/kbld
gunzip imgpkg-linux-amd64-v0.29.0+vmware.1.gz
sudo chmod ugo+x imgpkg-linux-amd64-v0.29.0+vmware.1
sudo mv ./imgpkg-linux-amd64-v0.29.0+vmware.1 /usr/local/bin/imgpkg
Docker Instllation on Ubuntu(이미 docker client가 설치되어 동작중이라면 제외)
#docker install
sudo apt remove docker-desktop
rm -r $HOME/.docker/desktop
sudo rm /usr/local/bin/com.docker.cli
sudo apt purge docker-desktop
sudo apt-get update
sudo apt-get update
sudo apt-get install \\
ca-certificates \\
curl \\
gnupg \\
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \\
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] <https://download.docker.com/linux/ubuntu> \\
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo service docker start
### To install a specific version of Docker Engine, list the available versions in the repo, then select and install:
apt-cache madison docker-ce
인터넷 되는 머신에서 아래와 같이 변수 값을 설정 필요
- 이 변수 설정과 별개로 비보안 자체 인증서로 docker 로그인을 위한 과정 필요하며, ubuntu에서 certificate update를 사용하거나, /etc/docker/certs.d/{registry host}/{ca.crt} 의 위치에 클라이언트 키가 위치해 있어야 합니다.
docker login {prviate registry host}
예) docker login vmk-hbr.vmk.corp
## docker login이 가능하도록 먼저 준비 해주세요.
- private harbor의 인증서에 .cert 파일에 대한 base64 치환으로 키 생성하여 TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE에 입력
- 예제: base64 -w 0 vmk-hbr.vmk.corp.cert
#Air-gapped 환경에서 인터넷 되는 machine에서 private harbor로 image 전송을 위한 설정
export TKG_CUSTOM_IMAGE_REPOSITORY="vmk-hbr.vmk.corp/test/1.6.0"
export TKG_IMAGE_REPO="projects.registry.vmware.com/tkg"
export TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE=LS0t[...]tLS0tLQ==
#DNS에 private registry 등록이 되어 있고, 배포되는 bootstrap 및 node에서 dns lookup으로 조회되고 통신이 된다면 추가적인 overlay 설정은 필요치 않음.
export는 ~/.bashrc 를 수정하여, 기재해 놓을 경우에는 로그인 시 지속 적용 가능함.
Overlay - 1 설정
~/.config/tanzu/tkg/providers/ 아래의 각 배포 플랫폼에 맞는 폴더를 찾아서 해당 파일의 최 하단에 code 추가 이후, echo 영역에 IP와 registry path를 기재
예) echo “10.109.211.15 vmk-hbr.vmk.corp/test/1.6.0” >> /etc/hosts
~/.config/tanzu/tkg/providers/infrastructure-vsphere/ytt/vsphere-overlay.yaml
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.subset({"kind":"KubeadmControlPlane"})
---
spec:
kubeadmConfigSpec:
preKubeadmCommands:
#! Add nameserver to all k8s nodes
#@overlay/append
- echo "PRIVATE-REGISTRY-IP PRIVATE-REGISTRY-HOSTNAME" >> /etc/hosts
#@overlay/match by=overlay.subset({"kind":"KubeadmConfigTemplate"}), expects="1+"
---
spec:
template:
spec:
preKubeadmCommands:
#! Add nameserver to all k8s nodes
#@overlay/append
- echo "PRIVATE-REGISTRY-IP PRIVATE-REGISTRY-HOSTNAME" >> /etc/hosts
Overlay - 2 설정
하위 파일을 편집기로 수정하여 아래 code을 spec.template.spec 아래 항목의 “container” block 시작 지점 직전에 삽입을 해야 합니다.
~/.config/tanzu/tkg/providers/ytt/03_customizations/01_tkr/tkr_overlay.lib.yaml
삽입 코드
#@overlay/match missing_ok=True
hostAliases:
- ip: PRIVATE-REGISTRY-IP
hostnames:
- PRIVATE-REGISTRY-HOSTNAME
예제
#@overlay/match by=overlay.subset({"kind":"Deployment","metadata":{"name": "tkr-controller-manager"}})
---
spec:
template:
spec:
#@overlay/match missing_ok=True
hostAliases:
- ip: 10.109.211.15
hostnames:
- vmk-hbr.vmk.corp/test/1.6.0
containers:
#@overlay/match by=overlay.subset({"name":"manager"})
#! TODO: Consume image from BOM
- image: #@ "{}/{}:{}".format(get_image_repo_for_component(bomData.components["tanzu-framework"][0].images.tkrImage), bomData.components["tanzu-framework"][0].images.tkrImage.imagePath, bomData.components["tanzu-framework"][0].images.tkrImage.tag)
TKr 버전을 지정하여 다운로드
# TKr 리스트
imgpkg pull -i ${TKG_IMAGE_REPO}/tkr-compatibility:v$(imgpkg tag list -i ${TKG_IMAGE_REPO}/tkr-compatibility |sed 's/v//' |sort -rn |head -1) --output "tkr-tmp"; cat tkr-tmp/tkr-compatibility.yaml; rm -rf tkr-tmp;
# 인터넷에서 파일 다운로드 후, harbor로 전송을 위한 버전 지정
# TKr 호환성 리스트에서는 v1.23.8+~~~~ 형태로 표시됨으로 + 는 _ 로 치환
export DOWNLOAD_TKRS="v1.23.8_vmware.2-tkg.1"
Image downlod용 shell script
chmod +x gen-publish-images.sh
./gen-publish-images.sh > image-copy-list
cat image-copy-list
image를 Harbor 에 push shell script
- download-images.sh 파일 생성
#!/bin/bash
set -euo pipefail
images_script=${1:-}
if [ ! -f $images_script ]; then
echo "You may add your images list filename as an argument."
echo "E.g ./download-images.sh image-copy-list"
fi
commands="$(cat ${images_script} |grep imgpkg |sort |uniq)"
while IFS= read -r cmd; do
echo -e "\\nrunning $cmd\\n"
until $cmd; do
echo -e "\\nDownload failed. Retrying.... $cmd\\n"
sleep 1
done
done <<< "$commands"
#### while 문 안에 echo 구문을 수정 - $cmd를 추가하여, 어느 명령줄에서 error가 발생하는지 확인 필요함. 원문은 error를 표시하나, command에 grep sort 구문으로 인하여, image-copy-list와는 순서가 맞지 않음. 그럼으로 sort를 하지 않거나, $cmd를 추가해서 확인
#### 혹은 image-copy-list를 바로 실행 모드로 image-copy-list.sh 형태로 복사하여, 실행하는게 더 오류 시 위치를 직관적으로 알 수 있습니다. 이미 진행된 명령줄은 삭제를 하면 됨.
download-images.sh 을 실행
chmod +x download-images.sh
docker login ${TKG_CUSTOM_IMAGE_REPOSITORY}
./download-images.sh image-copy-list
실행 전에 아래 image-copy-list를 일부 행 수정 필요
Image copy list 2곳의 -i → -b 옵션으로 변경 필요
# We shoud correct two lines.
imgpkg copy -i projects.registry.vmware.com/tkg/packages/capabilities:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/capabilities --registry-ca-cert-path /tmp/cacrtbase64d.crt
=>
imgpkg copy -b projects.registry.vmware.com/tkg/packages/capabilities:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/capabilities --registry-ca-cert-path /tmp/cacrtbase64d.crt
imgpkg copy -i projects.registry.vmware.com/tkg/packages/tkg-storageclass:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/tkg-storageclass --registry-ca-cert-path /tmp/cacrtbase64d.crt
==>
imgpkg copy -b projects.registry.vmware.com/tkg/packages/tkg-storageclass:v0.25.0-23-g6288c751_vmware.1 --to-repo vmk-hbr.vmk.corp/test/1.6.0/packages/tkg-storageclass --registry-ca-cert-path /tmp/cacrtbase64d.crt
Bootstrap에서 실행 필요한 항목
이미지 copy는 인터넷이 되는 머신이고, bootstrap은 인터넷이 안되는 것을 가정하게 됨.
혹은 동일 머신일 경우일 수도 있음.
아래 tanzu config set 명령어는 ~/.config/tanzu/config.yaml 파일을 수정하는 것입니다.
즉 bootstrap에서 tanzu 명령어를 수행 시, 인터넷이 되지 않는 환경의 private registry 경로를 알 수 있도록 환경 값이 적용이 됩니다. 이는 bootstrap 자체에 임시 controlplane node를 생성하기 위한 작업임.
보안 인증된 인증서 사용하는 harbor
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY custom-image-repository.io/yourproject
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY true
#### 예제
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY vmk-hbr.vmk.corp/test/1.6.0
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY true
셀프 인증서에 비보안 harbor
- private harbor의 인증서에 .cert 파일에 대한 base64 치환으로 키 생성
- 예제: base64 -w 0 vmk-hbr.vmk.corp.cert
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY custom-image-repository.io/yourproject
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY false
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE LS0t[...]tLS0tLQ==
#### 예제
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY vmk-hbr.vmk.corp/test/1.6.0
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY false
tanzu config set env.TKG_CUSTOM_IMAGE_REPOSITORY_CA_CERTIFICATE LS0t[...]tLS0tLQ==
'VMware TANZU > TKG: Tanzu Kubernetes Grid' 카테고리의 다른 글
vSphere with Tanzu에서 Increment backup (0) | 2023.02.06 |
---|---|
NSX ALB(Advanced LB) L7 Ingress for Kubernetes Workload (0) | 2023.01.18 |
TKG 1.6 배포 시 LDAP 연동 (1) | 2022.10.11 |
Antrea Networking (1) | 2022.09.30 |
Why VMware Tanzu Kubernetes Grid...? - part 1 (0) | 2022.09.30 |