본문 바로가기

VMware/TANZU

(DK)WSL에서 TCE(Tanzu Communty Edition) Install

728x90

윈도우에서는 아래와 같은 에러가 발생 함

Error: unable to create Tanzu Standalone Cluster client
Cause: unable to ensure prerequisites: unable to ensure tkg BOM file: failed to download TKG compatibility file from the registry: failed to list TKG compatibility image tags: Get "https://projects.registry.vmware.com/v2/": x509: certificate signed by unknown authority
Error: exit status 1

해당 파일을 열어서 내용 수정

## 파일을 열고
%USERPROFILE%\.config\tanzu\tkg\config.yaml

## 아래 내용으로 수정
release:
    version: ""
TKG_CUSTOM_IMAGE_REPOSITORY_SKIP_TLS_VERIFY: true

기본적으로 WSL에서는 CNI가 설치가 되지 않는다 향후에 업데이트가 된다고 하니 우선 아래와 같이 진행 해보자

 

우선 Ubuntu의 커널을 빌드 하기 위해 아래 명령어로 Docker를 생성하자

docker run --name wsl-kernel-builder --rm -it ubuntu@sha256:9d6a8699fb5c9c39cf08a0871bd6219f0400981c570894cd8cbea30d3424a31f bash

그러면 Docker로 접속이 되어 있음, 도커안에서 아래 내용을 차례 차례 모두 실행 하자 (시간이 많이 걸림)

하지만 한번만 만들어 두면 됨

WSL_COMMIT_REF=linux-msft-5.4.72 # change this line to the version you want to build
apt update
apt install -y git build-essential flex bison libssl-dev libelf-dev bc

mkdir src
cd src
git init
git remote add origin https://github.com/microsoft/WSL2-Linux-Kernel.git
git config --local gc.auto 0
git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +${WSL_COMMIT_REF}:refs/remotes/origin/build/linux-msft-wsl-5.4.y
git checkout --progress --force -B build/linux-msft-wsl-5.4.y refs/remotes/origin/build/linux-msft-wsl-5.4.y

# adds support for clientIP-based session affinity
sed -i 's/# CONFIG_NETFILTER_XT_MATCH_RECENT is not set/CONFIG_NETFILTER_XT_MATCH_RECENT=y/' Microsoft/config-wsl

# required module for antrea
sed -i 's/# CONFIG_NETFILTER_XT_TARGET_CT is not set/CONFIG_NETFILTER_XT_TARGET_CT=y/' Microsoft/config-wsl

# build the kernel
make -j2 KCONFIG_CONFIG=Microsoft/config-wsl

그리고 또 새로운 Powershell을 실행하자

## 폴더 변경
cd %USERPROFILE%

## docker image 저장
docker cp wsl-kernel-builder:/src/arch/x86/boot/bzImage .

## .wslconfig 수정, 없으면 생성 아래 내용을 넣어 준다. 이미지 저장 위치 지정

[wsl2]
kernel=C:\\Users\\<your_user>\\bzImage

## WSL을 종료 
wsl --shutdown

## wsl 실행
wsl -d {wsl 이름}

## wsl 접속 후 
wsl uname -a

## 아래처럼 커널 정보가 나와야 함
Linux DESKTOP-4T1VL4L 5.4.72-microsoft-standard-WSL2+ #1 SMP Sat Sep 11 16:50:20 UTC 2021 x86_64 Linux

## antrea에 필요한 커널 구성이 있는지 확인
wsl zgrep CONFIG_NETFILTER_XT_TARGET_CT /proc/config.gz

## 아래처럼 정보가 나와야함
CONFIG_NETFILTER_XT_TARGET_CT=y

독립형 실행

## haproxy의 대한 docker 파일 다운로드
docker pull kindest/haproxy:v20210715-a6da3463

## 실행
tanzu standalone-cluster create -i docker <STANDALONE-CLUSTER-NAME>
 ** <STANDALONE-CLUSTER-NAME> 이부분은 FQDN형식으로 이름을 짖자
 
 실행 하다 보면 마지막에 실패를 할 것이다 이미 예상된 동작

아래와 같이 실패

./kube/config 파일을 수정 필요

wsl에 접속 하여

## 실행
docker ps | grep -i ha

## 아래와 같이 나오는대 여기서 Port 46067을 기억 해둔다. (이 포트는 각 사용마다 랜덤)
8460bdd7f51c   kindest/haproxy:v20210715-a6da3463                            "haproxy -sf 7 -W -d…"   22 minutes ago   Up 22 minutes   46067/tcp, 0.0.0.0:46067->6443/tcp     tkgm.tce.io-lb

## 수정
vi ~/.kube/config

- cluster:
    insecure-skip-tls-verify: true
    server: https://192.0.1.1:44393
  name: test
  
## wsl의 IP 확인
ifconfig

## 예문  
apiVersion: v1
clusters:
- cluster:
    insecure-skip-tls-verify: true
    ##certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2akNDQWRLZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1USXhPREV5TlRFMU1Gb1hEVE14TVRJeE5qRXlOVFkxTUZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTG5YCnRNN1NOb3Ywa29RSU5XK0VySE5aNFA1V255cmYxL3pvQjhsNFVxcCtyYWpYcThxbTBWS3RyY2xmMitTTDlFMXEKbDZUaTMwa2kyemN3ZEN5TVJmalRXdkJhRkJmRWRHY3hWU1M3WFR2dSt2SHFyVk5JWFNHV2M3M3h5S0VIdWQ5eQovS3hCZTgrSXhWb3J5UlFnZEEzQlBvdmh4S253NC9FZ0pBbXpGSDVVUVRCWTBQSURmR0QwSVBGTUxmeXF3Z0s1CmZHZ28yc2I1dmVBanE4d0VScmt1REFlU3M4VzNIU01rR1Y5MCt0OEpDeUdLUVRCOHNjTFlzMVFxYlpJNHpMU3gKQkVrK2dsUm9rTjRERFEyTktndm9rMHd3SnNRNytNUzI3VUhaY1hDTU1ocFZTQ3FjOXBibDh4L0R1Z0owRi93UgpTZG1sR0ludWhtZE1nK1NuemtzQ0F3RUFBYU5GTUVNd0RnWURWUjBQQVFIL0JBUURBZ0trTUJJR0ExVWRFd0VCCi93UUlNQVlCQWY4Q0FRQXdIUVlEVlIwT0JCWUVGSXJHb3VZa3BGczJyYVRGMWVGT25QM2EzYStkTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQkFRQ21PMG01TnhqT1VQTFM3cHZ2ZE1GL1JaRlRTUzc4QTlEaWpxUURaSkZqaDhJYgpWZGRUZ0d3WEpXK25DU0I3NEhLdzhtVkpUY2czSlBqUzdZR0oxR0JFbkQ1SVBKV21mdXkzaEdVc2Npc29lMnR5CmY0YktOU3NHeFJsaXFBcUdPRDZXVmovUzdaSzhyaTJEZ3ZSV1I4b05sdW55bXllSm9XZUxtdEFvaDRrcXorZXoKMlZSS3BnaEczdEVodG4xbDM2SFN0MmpScXpQeWpoUkdiRmx6ZW9mQzVZd09pMkZlOEpPa0hiOU9KY0llWGwrUgpmRHQ4WkZQbVovMFVIVmtkUGRsQ1c4emFtU25pc01rVnY0RnFUWjQ3bFZPN0tqNWxMVG1NRmZUeGJYYjN4a1QxCjBQbjlBbSt0bEp5Y2V5RjRJT3RCd2hSZWhiUkdnWStxR09jYXhxZ00KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    server: https://172.27.19.68:46067  ## linux IP로 변경 하고 haproxy의 포트로 변경
  name: tkgm.tce.io
contexts:
- context:
    cluster: tkgm.tce.io
    user: tkgm.tce.io-admin
  name: tkgm.tce.io-admin@tkgm.tce.io
current-context: tkgm.tce.io-admin@tkgm.tce.io
kind: Config
preferences: {}
users:
- name: tkgm.tce.io-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURFekNDQWZ1Z0F3SUJBZ0lJRGo5ZXI2L0ZwK1V3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TVRFeU1UZ3hNalV4TlRCYUZ3MHlNakV5TVRneE1qVTJOVEZhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXl0MjNCT2E1WDczalhLUEwKa0cwekE1eXF0L2d5d2ozbUxtdFRIa2FLZHh3VHJYbXlLY0dLcm1HTTNja0Y1L1BSL2dJRG5EVmduckcvMm5aQgpyeFlobm9mRW5HRHpBNnNTdDl5RXo4eno2K3Z6czhMb05rZ3BJWTBIVFZPQ3FIV0NsTVhOWlp4TVBxSXJZYVVGCnllU2JXblVSVGRCTldlNTlaTEJ5R1NGQ01MN2tYMThmMXRWbjNHYWVwemhUYUhDOWxWMk5QRlBjZ0RaVmhXYWYKbk0rZ3hTL1RDTTJKWWZWcVpUNEZlV3ZWV1ZaZWRJM1pNVUhOVGdpd2J0Yy8xKzhwdzEvVlprZnJQYVh3TVAvSQpIRkRtVENoL25WUkErOWxOeUUzNXphTEtyN0sxRDM4QzdoNnVIL2lheGhwUGhGRWZ3MU8zQ0E0UkZLS2F0d2JwClBXclJkUUlEQVFBQm8wZ3dSakFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0h3WURWUjBqQkJnd0ZvQVVpc2FpNWlTa1d6YXRwTVhWNFU2Yy9kcmRyNTB3RFFZSktvWklodmNOQVFFTApCUUFEZ2dFQkFIakhtV25PWVduQkFwRitlc2RHQXNYS3dRdjFXa3FhUjViUnZsS2pUZDFwcUFUUDh4YW5aRmpSCkdhbkxseDcvemJBdWdqUzltcWJSMnJXUitSQmdFbHY2anFXMU9kck94eGpwZStTelEvVFdCZVA2N3czTllndkgKMmhLajIxWjFZRmVtVDBTVmcrSU4vVitsaDE0QjQ5VllqeHRwUk9SaDVLWVdhVElEZHQ0eGdaYUUxU2NiVnJUZwpvOElQTFJPUGliMWZXbWxLeGkzaUVVTWFmZG5Ya3VhZ0ZCN2VYTEdTVmFBTFp1RjNaVzdsMFdwWWVLeDN2Ty9YCkM3VWhYSHltaUN0ejlJemRMcmhnaUtXUUNJck5MeWl4L3ZHZk00VDYrc2RWYkVpOGRuWW5qNDlqTVJNMWIrUHcKMzJMWXVXZnNOSG5sN3dodVE5eHZWeGVTNllBSTBVcz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcGdJQkFBS0NBUUVBeXQyM0JPYTVYNzNqWEtQTGtHMHpBNXlxdC9neXdqM21MbXRUSGthS2R4d1RyWG15CktjR0tybUdNM2NrRjUvUFIvZ0lEbkRWZ25yRy8yblpCcnhZaG5vZkVuR0R6QTZzU3Q5eUV6OHp6Nit2enM4TG8KTmtncElZMEhUVk9DcUhXQ2xNWE5aWnhNUHFJcllhVUZ5ZVNiV25VUlRkQk5XZTU5WkxCeUdTRkNNTDdrWDE4ZgoxdFZuM0dhZXB6aFRhSEM5bFYyTlBGUGNnRFpWaFdhZm5NK2d4Uy9UQ00ySllmVnFaVDRGZVd2VldWWmVkSTNaCk1VSE5UZ2l3YnRjLzErOHB3MS9WWmtmclBhWHdNUC9JSEZEbVRDaC9uVlJBKzlsTnlFMzV6YUxLcjdLMUQzOEMKN2g2dUgvaWF4aHBQaEZFZncxTzNDQTRSRktLYXR3YnBQV3JSZFFJREFRQUJBb0lCQVFDb1Y3UTRiUDRIWlJ2MwpGRFVvZEhXUTJjRVJTUFZXR3VlWVBaZUwyQjJ2R2ExNmx6SXhWRm93dXVLYWFPWnR4UGJOUWY2YzhlNXJ3alRpCnBKOTlHM0JxalYrcUpRbUVVY0lHc1FmRktONkJPQnZUWURveVVVOVFlQ2RIRTdXbzlWcVcrazJudER2US9lSGgKOVg4SU9weHdSQlZIN1VORERaVWdxUXNGcjRPdHprQ2IrSTZ0RTJNa0hCWWUvekhISWY4K2h6cUx1NHp3c0VjdwpnNkE0L2crNC9WRmkvSnhybmQvWW9RZzRQRXFKMEtKbXZ6Ymt4Wk1PU2crNmluWEdSdkd2ajJzNkRvT2RoT1I2CmFQSmphMk1HOVpJVDdmTFkzS3dQajBLUjJhOVZtNEQyeVpKQWVIbzEraWsweHF6YXhFMHJvTzRZcjQ1eVo0NTkKSExFRGlCOUJBb0dCQU9RVVBhcndXRElLYXhLMnNxdTV2TVRHS09YU3diazJnNnZIN1J1aXJtY3llWDRYOWVCKwpyc3BEN0VKZlpidDBza3lwOUFieUdTWFVJQTJYNkZ1OGtiSnU2RDI3L1Qxc05uMjVlQnlDeFFhQjhDanlyaEMvCmtnR0hudU1pMzFTMTlaWXh6ZWRwcWN4cGN5bjQ1ZHdTMkJwSDdIRkNxdk5DeW50YTlWSVJOV2tyQW9HQkFPT3oKVTBRUm9yZDZ4UjdCREQzVlVvN1dRVU91QVRCQ2psTFNTVTlGaDRubkFVeEhLZzc2V1huV3dJeGc0QTJweEN3Swp3MEdlNXdSU3Jyb3FmSHZ3NXZUR3QzdzBtaExDdFdnVG1PN01pOFM5aHNhS3R3Y0JZaW1mK3lYZ0xpMnMzWG5ECkRqc3RwRWZaWDBKV0lXTms0N1VMYXNSQjBobGQ1M3Vabi9KMGVCL2ZBb0dCQUpxMEZBUXZsRk1VOS8yd2lNNnMKWkp0QUlodUpjamVULzRuMFNTTTJuSCtKSUJsa1hUWFNGL05BVVMvUUQyd3dRb1IzdnZzN0djMnI3YlhxdFFRTQppdkx5QVh0bVdPWmgwVEJFTG5HQVRlNFZFdlpqYmFnVW1RK0trejVUdUJKNGZjVkxzUE5ubTNINGtOSUdicnR3CjJMNHl6UEVpSEZ4MmtHdE5qaHNGYXlvVEFvR0JBTStmUGpkOUZTL1VaRlZNbGNyejd0bUxoK3NjaUx6bWt6djEKdng3bk9WV0hLK25Qb2d3U1B2QVgzMjZoRHV1bWR0ZnA0R3kvWmNyTlVjRXk2RnRqS0ZUZHRZVXR1YWVObnpnTgpWbys0TjJIbnB6TDJYVG1vQzBnRk5rNHRBaTVueDNNMVpvNlRhWTZTS0lnbVhUOXlTU2RXQjc1NGZnamZWU21nCnhQV2hPYjlsQW9HQkFPR2FRUmFOQ3hnZ0t1SUR1bFFEYVpvWlJrak5URnM1NXQ1TStTQTVjdEt5NWRkVXE5UFAKR2xub1pmbkNpSUZLU0s0V0pFS1BPYnBJVysweWtDQWZ5YlJvRnk4WVQ3UllZYk1YNGpBUWlGb2Qxc25NYStLSwphcUNPbDFhSkxkc0NnTm9YTFVhbEhzeDZranRxN3hKOUovZi9xSk10czBhdVo0U0tTQ2ZYajQ3TAotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

그럼 아래와 같이 실행이 되는 것을 확인 할 수 있다.

kubectl config get-contexts

kubectl config use-context

kubectl get pod -A

반응형