The Documentation Tanzu Community Edition with TAP

1. TANZU Community Edition?

Tanzu Community Edition은 무료로 사용 가능한 VMware에서 제공하는 Kubernetes 플랫폼으로 손쉽게 클러스터를 구성 할 수 있는 솔루션이다. 유료 서비스인 TKG 플랫폼의 모든 기능을 사용 할 수 있지만, 몇가지 제약적인 부분이 있을 수 있다. 가령 하나의 클러스터만 배포를 할 수 있는 단점이 있을 수 있으며 별도로 솔루션의 대한 이슈 및 설치의 대해서 지원을 받지 못한다.

하지만 TKG 솔루션의 대해서 사전에 테스트 환경을 구축 함으로 Kubernetes 플랫폼의 손쉬운 배포 와 VMware에서 제공하는 오픈소스 에코 시스템을 통해 확장의 대해서도 손쉽게 구현을 할 수 있을 것이다.

아래에 제공하는 오픈소스를 효율적으로 구성을 할 수 있다.

Eco System

2. TANZU Community Edition 구성

Docker 설치 링크 KIND 설치 링크

KIND Kubernetes 클러스터는 싱글 노드에서 구축을 할 수 있으며, 비슷한 솔루션으로는 MINIKUBE, K3S등이 있다. 구성환경은 윈도우 10, i7-4770 CPU 16GB 이며 아래는 gitops를 사용하지 않았으며, 마찬가지로 gitops로 구성하여 git에 소스를 머지 할 수도 있지만 여기서는 해당 기능의 대해서는 넣지 않았다.

KIND Install
1
2
3
4
5
6
7
# MAC OS
# for Intel Macs
[ $(uname -m) = x86_64 ]&& curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-darwin-amd64
# for M1 / ARM Macs
[ $(uname -m) = arm64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-darwin-arm64
chmod +x ./kind
mv ./kind /some-dir-in-your-PATH/kind
1
2
3
# WINDOWS
curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.17.0/kind-windows-amd64
Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe
1
2
3
4
# Linux
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
KIND Cluster 생성

kind-expose-port.yaml 파일 생성 후 아래 내용 추가

1
2
3
4
5
6
7
8
9
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
 - role: control-plane
   extraPortMappings:
   - containerPort: 31443 # expose port 31443 of the node to port 80 on the host for use later by Contour ingress (envoy)
     hostPort: 443
   - containerPort: 31080 # expose port 31080 of the node to port 80 on the host for use later by Contour ingress (envoy)
     hostPort: 80
1
2
# 실행
kind create cluster --config kind-expose-port.yaml --image kindest/node:v1.23.12

Kind Cluster 확인

Pivnet 다운로드
1
2
3
4
5
6
curl.exe -Lo pivnet-windows-amd64-3.0.1.exe https://github.com/pivotal-cf/pivnet-cli/releases/download/v3.0.1/pivnet-windows-amd64-3.0.1
Move-Item .\pivnet-windows-amd64-3.0.1.exe c:\tmc\pivnet.exe

pivnet login --api-token=<API Token>

## TANZU NET에서 EULA Accept 필요
Tanzu CLI Install
1
2
# tanzu application framework download
pivnet dlpf -p tanzu-application-platform -r 1.3.2 -g *framework*
1
2
3
4
# Linux
tar xvf tanzu-framework-*-amd64-*.tar
install cli/core/v0.25.0/tanzu-core-*_amd64 /usr/local/bin/tanzu
export TANZU_CLI_NO_INIT=true
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Windows
Expand-Archive -Force tanzu-framework-*-amd64-*.zip c:\tmc
Copy-Item C:\tmc\cli\core\v0.25.0/tanzu-core-*_amd64* c:\tmc\tanzu.exe

# Version 확인
tanzu version
-----------------
version: v0.25.0
buildDate: 2022-08-25
sha: 6288c751-dirty

# Plugin 설치
tanzu plugin install --local c:\tmc\cli all
Cluster Essentials Install
1
2
# tanzu-cluster-essentials download
pivnet dlpf -p tanzu-cluster-essentials -r 1.3.0 -g *essentials*
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
tar xzvf tanzu-cluster-essentials-windows-amd64-1.3.0.tgz -C c:\tmc

$Env:TANZUNET_USERNAME=''
$Env:TANZUNET_PASSWORD=''
$Env:INSTALL_BUNDLE='registry.tanzu.vmware.com/tanzu-cluster-essentials/cluster-essentials-bundle:1.3.0'
$Env:INSTALL_REGISTRY_HOSTNAME='registry.tanzu.vmware.com'
$Env:INSTALL_REGISTRY_USERNAME=$Env:TANZUNET_USERNAME
$Env:INSTALL_REGISTRY_PASSWORD=$Env:TANZUNET_PASSWORD

c:\tmc\install.bat -y

만약 원하는 OS만 받고 싶으면 해당 하는 파일이름을 -g {설치하고자 하는 OS 선택}

TKGM Downloads

essentials Downloads

구성된 KIND cluster에 TAP iterate를 설치하여 source를 테스트 하고 빠르게 build를 함으로 개발의 민첩성을 제공 할 수 있다. 별도의 클러스터를 구성해서 사용 할 수 있지만, 이렇게 TCE를 구성함으로 인해서 노트북에서도 생성 후 테스트를 할 수 있다.

iterate에 포함된 opensource

Tanzu Application Install
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
kubectl create ns tap-install

kubectl create secret docker-registry tap-registry --docker-server=registry.tanzu.vmware.com --docker-username=$Env:TANZUNET_USERNAME --docker-password=$Env:TANZUNET_PASSWORD -n tap-install

tanzu package repository add tanzu-tap-repository --url registry.tanzu.vmware.com/tanzu-application-platform/tap-packages:1.3.2 -n tap-install --wait=false

# plugin 확인
tanzu package available list --namespace tap-install

# GIT 환경변수 등록
$Env:GITHUB_USERNAME=github-name
$Env:GITHUB_TOKEN=api-token

# tap-values.yaml
shared:
  ingress_domain: huntedhappy.kro.kr
  image_registry:
    project_path: ghcr.io/$Env:GITHUB_USERNAME
    username: $Env:GITHUB_USERNAME
    password: $Env:GITHUB_TOKEN
    
ceip_policy_disclosed: true
profile: iterate

supply_chain: basic

contour:
  contour:
    replicas: 1
  envoy:
    service:
      type: NodePort
      nodePorts:
        http: 31080
        https: 31443
    hostPorts:
      enable: true

cnrs:
  domain_template: "{{.Name}}.{{.Domain}}"
  provider: local

excluded_packages:
- policy.apps.tanzu.vmware.com
- image-policy-webhook.signing.apps.tanzu.vmware.com
- eventing.tanzu.vmware.com
- sso.apps.tanzu.vmware.com

# TAP 설치
tanzu package install tap -p tap.tanzu.vmware.com -v 1.3.2 -f tap-values.yaml -n tap-install

# Namespace 생성
kubectl get app -n tap-install
Workload 실행 파일 생성
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# git-repository-credentials 생성
kubectl create secret docker-registry git-repository-credentials --docker-server ghcr.io --docker-username $Env:GITHUB_USERNAME --password $Env:GITHUB_TOKEN -n tap-install

# rbac.yaml 생성
apiVersion: v1
kind: ServiceAccount
metadata:
  name: default
secrets:
- name: git-registry-credentials
imagePullSecrets:
- name: git-registry-credentials
- name: tap-registry
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: default-permit-deliverable
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: deliverable
subjects:
  - kind: ServiceAccount
    name: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: default-permit-workload
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: workload
subjects:
- kind: ServiceAccount
  name: default

# rbac 실행
kubectl apply -f rbac.yaml -n tap-install
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 새 파일 생성
tanzu-java-web-app.yaml

# 아래 내용 추가
apiVersion: carto.run/v1alpha1
kind: Workload
metadata:
  labels:
    apps.tanzu.vmware.com/workload-type: web
spec:
  params:
  - name: annotations
    value:
      autoscaling.knative.dev/minScale: "1"
  source:
    git:
      ref:
        branch: main
      url: https://github.com/sample-accelerators/tanzu-java-web-app

# workload 실행
kubectl apply -f tanzu-java-web-app.yaml -n tap-install
Workload 확인
1
2
3
tanzu app workload get tanzu-java-web-app -n tap-install

kubectl get pod, httpproxy -n tap-install

Workload 확인

Workload 확인

Result

0%