이 사이트에 TKG v1.4 Carvel 패키지를 TKG의 멀티 클라우드 버전(TKGm)에 배포하는 방법을 자세히 설명하는 여러 문서를 게시했습니다. 하지만 이러한 패키지는 vSphere with Tanzu에서 TKG Service(TKGS)를 통해 프로비저닝된 클러스터에도 구현할 수 있다는 사실을 알고 계십니까? 이 게시물에서는 이를 달성할 수 있는 방법에 대해 단계별로 설명하겠습니다. 공식 문서는 여기에서 확인할 수 있으며, 특히 일부 매니페스트에 대해서는 이 게시물 중에 수시로 참조할 것입니다. 또한 Grafana, Prometheus 및 Fluent Bit와 같은 일부 패키지는 vSphere 7.0U2 이후의 릴리스에서 아직 검증되지 않았으므로 처음에는 vSphere 7.0U3에 Cert Manager 패키지를 구축하는 데 필요한 사항을 중점적으로 살펴보겠습니다. 또한 Tanzu CLI를 vSphere with Tanzu와 함께 활용해야 합니다. 이전 포스트에서 Tanzu Kubernetes 워크로드 클러스터를 Tanzu와 함께 프로비저닝하는 데 사용되었음을 확인할 수 있습니다. 먼저 현재 환경의 전체 설정 목록을 살펴보겠습니다. 요구사항보다 더 높은 경우가 있지만, 참고용으로 게시합니다.

환경

  • vSphere 7.0U3c 빌드 19234570
  • 기존 vSphere with Tanzu Supervisor Cluster – v1.21.0+vmware.wcp.2-vsc0.0.12-18735554
  • 기존 Tanzu Kubernetes 워크로드 클러스터 – v1.20.7+VMware.1-tkg.1.7fb9067
  • 기존 NSX ALB/Avi Vantage 로드 밸런서 – v20.1.5
  • Tangu CLI – v1.4.1 buildDate: 2022-01-04
  • 추가 Tanzu CLI 툴 – ytt / kapp / kbld / imgpkg

tangu CLI 컨텍스트를 TKC로 설정

이제 배포/설정 단계를 진행하겠습니다. 먼저 Supervisor 클러스터 컨텍스트를 사용하여 Tanzu로 vSphere에 로그인합니다. 그런 다음 Supervisor 클러스터에 탄주 컨텍스트를 설정합니다. 마지막으로 vSphere Tanzu Kubernetes에 한 번 더 로그인하여 워크로드 클러스터에 컨텍스트를 설정합니다.

% kubectl-vsphere login --server xx.xx.62.16 --vsphere-username administrator@vsphere.local \
--insecure-skip-tls-verify

Logged in successfully.

You have access to the following contexts:
  xx.xx.62.16
  workload

If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.

To change context, use `kubectl config use-context <workload name>`


% kubectl config use-context xx.xx.62.16
Switched to context "xx.xx.62.16".


% tanzu login --context xx.xx.62.16
? Select a server xx.xx.62.16        ()
✔  successfully logged in to management cluster using the kubeconfig xx.xx.62.16


% kubectl-vsphere login --server xx.xx.62.16 --vsphere-username administrator@vsphere.local \
--insecure-skip-tls-verify \
--tanzu-kubernetes-cluster-namespace workload  \
--tanzu-kubernetes-cluster-name workload1

Logged in successfully.

You have access to the following contexts:
  xx.xx.62.16
  workload
  workload1

If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.

To change context, use `kubectl config use-context <workload name>`


% kubectl config use-context workload1
Switched to context "workload1".


% kubectl get nodes
NAME                                      STATUS  ROLES                   AGE   VERSION
workload1-control-plane-pdvqt             Ready    control-plane,master   5d    v1.20.7+vmware.1
workload1-workers-gwdmd-6794cd57d8-pj8lk  Ready    <none>                 5d    v1.20.7+vmware.1
workload1-workers-gwdmd-6794cd57d8-ts859  Ready    <none>                 96m   v1.20.7+vmware.1
workload1-workers-gwdmd-6794cd57d8-wjfxq  Ready    <none>                 96m   v1.20.7+vmware.1


% kubectl config use-context workload1
Switched to context "workload1".

기본 StorageClass를 정의

공식 문서의 단계 중 하나는 기본 저장소 클래스가 있는지 확인하는 것입니다. 이렇게 하려면 TKC가 배포된 네임스페이스에 할당한 스토리지 클래스 중 하나를 패치해야 합니다. vSAN 기본 스토리지 정책이라는 스토리지 클래스 하나만 추가했으므로 이 단계를 기본값으로 설정하는 단계입니다.

% kubectl get sc
NAME                          PROVISIONER              RECLAIMPOLICY  VOLUMEBINDINGMODE  ALLOWVOLUMEEXPANSION  AGE
vsan-default-storage-policy  csi.vsphere.vmware.com  Delete          Immediate          true                  5d


% kubectl patch storageclass vsan-default-storage-policy -p \
'{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/vsan-default-storage-policy patched


% kubectl get sc
NAME                                    PROVISIONER              RECLAIMPOLICY  VOLUMEBINDINGMODE  ALLOWVOLUMEEXPANSION  AGE
vsan-default-storage-policy (default)  csi.vsphere.vmware.com  Delete          Immediate          true                  5d

서비스 계정에 대한 ClusterRole/ClusterRoleBinding을 생성

설치 중인 대부분의 패키지는 자체 서비스 계정을 가지고 있으므로 이러한 서비스 계정이 워크로드 클러스터에서 Pod를 생성하는 기능과 같은 작업을 수행할 수 있는 적절한 권한을 가지고 있는지 확인해야 합니다. 기본적으로 워크로드 클러스터와 관련된 두 가지 미리 정의된 포드 보안 정책이 있습니다.

% kubectl get psp
NAME                      PRIV    CAPS  SELINUX    RUNASUSER          FSGROUP    SUPGROUP    READONLYROOTFS  VOLUMES
vmware-system-privileged  true    *      RunAsAny  RunAsAny          RunAsAny    RunAsAny    false            *
vmware-system-restricted  false          RunAsAny  MustRunAsNonRoot  MustRunAs   MustRunAs   false            configMap,emptyDir,projected,secret,downwardAPI,persistentVolumeClaim

고유한 PodSecurityPolicy를 생성할 수 있지만 미리 정의된 PodSecurityPolicy 중 하나인 vmware-system-privileged을 사용하겠습니다. 이를 새 ClusterRole에 리소스로 포함시킨 다음 다음과 같이 새 ClusterRoleBinding을 통해 이 새 ClusterRole을 서비스 계정에 바인딩합니다.

% cat securityPolicy.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 name: psp:privileged
rules:
- apiGroups: ['policy']
 resources: ['podsecuritypolicies']
 verbs: ['use']
 resourceNames:
 - vmware-system-privileged

---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
 name: all:psp:privileged
roleRef:
 kind: ClusterRole
 name: psp:privileged
 apiGroup: rbac.authorization.k8s.io
subjects:
- kind: Group
 name: system:serviceaccounts
 apiGroup: rbac.authorization.k8s.io
If you wanted your service accounts to use a Pod Security Policy that was not quite so privileged, here is one that I managed to create which allowed the cert manager package to deploy successfully. You would obviously have to change the resourceName is the ClusterRole above to match this PSP name. Note that this policy may require additional entries for other packages, notably around networking and ports.

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: tester-psp
spec:
  allowPrivilegeEscalation: false
  requiredDropCapabilities:
    - ALL
  volumes:
    - configMap
    - emptyDir
    - projected
    - secret
    - downwardAPI
    - persistentVolumeClaim
  fsGroup:
    rule: RunAsAny
  runAsUser:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny

서비스 계정에서 권한이 많지 않은 Pod Security Policy을 사용하도록 설정했다면, 이 정책을 통해 Cert Manager 패키지를 성공적으로 배포할 수 있습니다. 이 PSP 이름과 일치하려면 ClusterRole의 resourceName을 변경해야 합니다. 이 정책에는 다른 패키지, 특히 네트워킹 및 포트 관련 항목이 추가로 필요할 수 있습니다.

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: tester-psp
spec:
  allowPrivilegeEscalation: false
  requiredDropCapabilities:
    - ALL
  volumes:
    - configMap
    - emptyDir
    - projected
    - secret
    - downwardAPI
    - persistentVolumeClaim
  fsGroup:
    rule: RunAsAny
  runAsUser:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny

kapp-controller 매니페스트 배포

kapp-controller는 Carvel 패키지 관리의 필수적인 부분입니다. 여기에서 그것에 대해 더 배울 수 있습니다. 이렇게 하면 TKG v1.4 패키지를 Tanzu 워크로드 클러스터와 함께 vSphere에 설치하고 관리할 수 있습니다. 공식 문서에는 kapp 컨트롤러를 배포하는 데 필요한 kapp-controller YAML 매니페스트에 대한 링크가 있으므로, 여기서는 해당 매니페스트가 상당히 크기 때문에 복제하지 않을 것입니다. 매니페스트를 로컬에서 파일로 복사한 후에는 배포를 계속 진행하여 워크로드 클러스터에 적용할 수 있습니다. 아래에서 볼 수 있듯이 클러스터에 상당수의 CRD(Custom Resource Definitions) 패키지가 추가되었으며, 그 중 상당수는 kubectl을 사용하여 쿼리할 수 있으며, 곧 알게 될 것입니다.

% vi kapp-controller.yaml    ### paste the manifest contents here and save it


% kubectl apply -f kapp-controller.yaml
namespace/tkg-system created
namespace/tanzu-package-repo-global created
apiservice.apiregistration.k8s.io/v1alpha1.data.packaging.carvel.dev created
service/packaging-api created
customresourcedefinition.apiextensions.k8s.io/internalpackagemetadatas.internal.packaging.carvel.dev created
customresourcedefinition.apiextensions.k8s.io/internalpackages.internal.packaging.carvel.dev created
customresourcedefinition.apiextensions.k8s.io/apps.kappctrl.k14s.io created
customresourcedefinition.apiextensions.k8s.io/packageinstalls.packaging.carvel.dev created
customresourcedefinition.apiextensions.k8s.io/packagerepositories.packaging.carvel.dev created
configmap/kapp-controller-config created
deployment.apps/kapp-controller created
serviceaccount/kapp-controller-sa created
clusterrole.rbac.authorization.k8s.io/kapp-controller-cluster-role created
clusterrolebinding.rbac.authorization.k8s.io/kapp-controller-cluster-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/pkg-apiserver:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/pkgserver-auth-reader created


% kubectl get pods -n tkg-system -w | grep kapp-controller
kapp-controller-5d8f7d9477-9z7n2   0/1     ContainerCreating   0          19s
kapp-controller-5d8f7d9477-9z7n2   1/1     Running             0          93s


% kubectl get all -n tkg-system
NAME                                   READY   STATUS    RESTARTS   AGE
pod/kapp-controller-5d8f7d9477-9z7n2   1/1     Running   0          7m48s

NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/packaging-api   ClusterIP   100.70.177.69   <none>        443/TCP   7m50s

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/kapp-controller   1/1     1            1           7m49s

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/kapp-controller-5d8f7d9477   1         1         1       7m49s


% kubectl get crd
NAME                                                               CREATED AT
antreaagentinfos.clusterinformation.antrea.tanzu.vmware.com        2022-02-09T10:39:40Z
antreacontrollerinfos.clusterinformation.antrea.tanzu.vmware.com   2022-02-09T10:39:40Z
apps.kappctrl.k14s.io                                              2022-02-14T11:16:36Z
clusternetworkpolicies.security.antrea.tanzu.vmware.com            2022-02-09T10:39:40Z
externalentities.core.antrea.tanzu.vmware.com                      2022-02-09T10:39:40Z
internalpackagemetadatas.internal.packaging.carvel.dev             2022-02-14T11:16:36Z
internalpackages.internal.packaging.carvel.dev                     2022-02-14T11:16:36Z
networkpolicies.security.antrea.tanzu.vmware.com                   2022-02-09T10:39:40Z
packageinstalls.packaging.carvel.dev                               2022-02-14T11:16:37Z
packagerepositories.packaging.carvel.dev                           2022-02-14T11:16:37Z
tiers.security.antrea.tanzu.vmware.com                             2022-02-09T10:39:40Z
traceflows.ops.antrea.tanzu.vmware.com                             2022-02-09T10:39:41Z

TKGv1.4 패키지 저장소를 추가

다음 단계에서는 tangu CLI를 사용하여 TKGv1.4 패키지 저장소를 추가합니다. 리포지토리가 추가되면 우리는 리포지토리에서 직접 쿼리하고 패키지를 설치할 수 있습니다. 나는 repo에게 tkgv14repo라는 이름을 주었습니다. 리포지토리가 조정되면 아래와 같이 tanzu CLI를 사용하거나 kubectl 명령을 사용하여 리포지토리를 쿼리할 수 있습니다. repo에 대한 조정이 성공하면, 우리는 repo에서 패키지를 배포할 수 있습니다.

% tanzu package repository add tkg14repo --url projects.registry.vmware.com/tkg/packages/standard/repo:v1.4.0
/ Adding package repository 'tkg14repo'...
 Added package repository 'tkg14repo'


% tanzu package repository list
/ Retrieving repositories...
  NAME       REPOSITORY                                                      STATUS       DETAILS
  tkg14repo  projects.registry.vmware.com/tkg/packages/standard/repo:v1.4.0  Reconciling


% tanzu package repository list
/ Retrieving repositories...
  NAME       REPOSITORY                                                      STATUS               DETAILS
  tkg14repo  projects.registry.vmware.com/tkg/packages/standard/repo:v1.4.0  Reconcile succeeded


% tanzu package available list
- Retrieving available packages...
  NAME                           DISPLAY-NAME  SHORT-DESCRIPTION
  cert-manager.tanzu.vmware.com  cert-manager  Certificate management
  contour.tanzu.vmware.com       Contour       An ingress controller
  external-dns.tanzu.vmware.com  external-dns  This package provides DNS synchronization functionality.
  fluent-bit.tanzu.vmware.com    fluent-bit    Fluent Bit is a fast Log Processor and Forwarder
  grafana.tanzu.vmware.com       grafana       Visualization and analytics software
  harbor.tanzu.vmware.com        Harbor        OCI Registry
  multus-cni.tanzu.vmware.com    multus-cni    This package provides the ability for enabling attaching multiple network interfaces to pods in Kubernetes
  prometheus.tanzu.vmware.com    prometheus    A time series database for your metrics


% kubectl get packages
NAME                                                 PACKAGEMETADATA NAME            VERSION                 AGE
cert-manager.tanzu.vmware.com.1.1.0+vmware.1-tkg.2   cert-manager.tanzu.vmware.com   1.1.0+vmware.1-tkg.2    8m30s
contour.tanzu.vmware.com.1.17.1+vmware.1-tkg.1       contour.tanzu.vmware.com        1.17.1+vmware.1-tkg.1   8m30s
external-dns.tanzu.vmware.com.0.8.0+vmware.1-tkg.1   external-dns.tanzu.vmware.com   0.8.0+vmware.1-tkg.1    8m30s
fluent-bit.tanzu.vmware.com.1.7.5+vmware.1-tkg.1     fluent-bit.tanzu.vmware.com     1.7.5+vmware.1-tkg.1    8m30s
grafana.tanzu.vmware.com.7.5.7+vmware.1-tkg.1        grafana.tanzu.vmware.com        7.5.7+vmware.1-tkg.1    8m30s
harbor.tanzu.vmware.com.2.2.3+vmware.1-tkg.1         harbor.tanzu.vmware.com         2.2.3+vmware.1-tkg.1    8m30s
multus-cni.tanzu.vmware.com.3.7.1+vmware.1-tkg.1     multus-cni.tanzu.vmware.com     3.7.1+vmware.1-tkg.1    8m30s
prometheus.tanzu.vmware.com.2.27.0+vmware.1-tkg.1    prometheus.tanzu.vmware.com     2.27.0+vmware.1-tkg.1   8m29s

위의 목록에서 볼 수 있듯이 현재 설치할 수 있는 패키지는 8개입니다. 앞서 공식 문서에서 강조했듯이 이러한 패키지 중 일부는 vSphere 7.0U3에서 아직 검증되지 않았습니다.

패키지는 구성 가능한 변수 세트와 함께 제공되며, 사전 요구 사항에 설명된 tansu CLI 도구를 사용하여 검색할 수 있습니다. 다음에는 이러한 항목을 검색하는 방법과 패키지 배포에 포함하는 방법에 대해 살펴보겠습니다.

패키지에서 구성 가능한 매개 변수를 가져오기

Certificate Manager 패키지를 설치할 예정이므로 해당 패키지의 구성을 살펴볼 수도 있습니다. 그러기 위해서는 패키지 이미지를 회수해야 합니다. 나중에 사용할 수 있도록 변수에 저장하는 것이 더 쉽지만 다음 명령을 사용하여 그렇게 할 수 있습니다. 또한 구성 가능한 매개 변수는 패키지가 개체를 설치하는 네임스페이스(예: deployment, ReplicaSet, pod)뿐이라는 점에서 구성 관점에서 가장 간단한 패키지 중 하나이기 때문에 이 연습에 대해 cert-manager 패키지를 의도적으로 선택했습니다. 해당 파일의 이름은 values.yaml이며 config 폴더 아래에 있습니다.

% kubectl get packages cert-manager.tanzu.vmware.com.1.1.0+vmware.1-tkg.2 \
-o jsonpath='{.spec.template.spec.fetch[0].imgpkgBundle.image}'
projects.registry.vmware.com/tkg/packages/standard/cert-manager@sha256:117a35c2b496cbac0e6562d9b48cb821da829454e12c1ac7a6dedb6968c76de8%


% image_url=$(kubectl get packages cert-manager.tanzu.vmware.com.1.1.0+vmware.1-tkg.2 \
-o jsonpath='{.spec.template.spec.fetch[0].imgpkgBundle.image}')


% echo $image_url
projects.registry.vmware.com/tkg/packages/standard/cert-manager@sha256:117a35c2b496cbac0e6562d9b48cb821da829454e12c1ac7a6dedb6968c76de8

% mkdir cert-mgr


% imgpkg pull -b $image_url -o ./cert-mgr
Pulling bundle 'projects.registry.vmware.com/tkg/packages/standard/cert-manager@sha256:117a35c2b496cbac0e6562d9b48cb821da829454e12c1ac7a6dedb6968c76de8'
  Extracting layer 'sha256:036fc2c9f0894cdd14bee9ee9099c22613e243b1d06b165734ea3b0014bfb0fe' (1/1)

Locating image lock file images...
The bundle repo (projects.registry.vmware.com/tkg/packages/standard/cert-manager) is hosting every image specified in the bundle's Images Lock file (.imgpkg/images.yml)

Succeeded

% ls -R ./cert-mgr
config

./cert-mgr/config:
_ytt_lib cert-manager.yaml overlays values.yaml

./cert-mgr/config/_ytt_lib:
bundle

./cert-mgr/config/_ytt_lib/bundle:
config

./cert-mgr/config/_ytt_lib/bundle/config:
overlays upstream values.yaml

./cert-mgr/config/_ytt_lib/bundle/config/overlays:
overlay-namespace.yaml

./cert-mgr/config/_ytt_lib/bundle/config/upstream:
cert-manager.yaml


./cert-mgr/config/overlays:
update-cert-deployment.yaml


% cat cert-mgr/config/values.yaml
#@data/values
---

#! The namespace in which to deploy cert-manager.
namespace: cert-manager

패키지를 배포

드디어 TKG v1.4 저장소의 패키지를 vSphere with Tanzu의 Tanzu Kubernetes 워크로드 클러스터로 구현할 수 있게 되었습니다. 이 패키지의 기본 구성 값(네임스페이스가 cert-manager로 설정됨)을 따르므로 명령에 -value 옵션을 추가하고 자체 맞춤형 구성 매개 변수 파일을 지정할 필요가 없습니다. 패키지가 설치되면 tanzu CLI 및 kubectl을 통해 상태를 쿼리할 수 있습니다.

% tanzu package install cert-manager --package-name cert-manager.tanzu.vmware.com --version 1.1.0+vmware.1-tkg.2
/ Installing package 'cert-manager.tanzu.vmware.com'
| Getting namespace 'default'
/ Getting package metadata for 'cert-manager.tanzu.vmware.com'
| Creating service account 'cert-manager-default-sa'
| Creating cluster admin role 'cert-manager-default-cluster-role'
| Creating cluster role binding 'cert-manager-default-cluster-rolebinding'
\ Creating package resource
\ Package install status: Reconciling

 Added installed package 'cert-manager' in namespace 'default'


% kubectl get all -n cert-manager
NAME                                          READY  STATUS    RESTARTS   AGE
pod/cert-manager-5849447d4c-8hhfv              1/1    Running  0          91s
pod/cert-manager-cainjector-5557f7bb89-zw2rg   1/1    Running  0          91s
pod/cert-manager-webhook-77947cd8fb-v8vc7      1/1    Running  0          91s

NAME                          TYPE        CLUSTER-IP      EXTERNAL-IP  PORT(S)    AGE
service/cert-manager          ClusterIP  100.70.175.194  <none>        9402/TCP   91s
service/cert-manager-webhook  ClusterIP  100.69.24.70    <none>        443/TCP    91s

NAME                                      READY  UP-TO-DATE  AVAILABLE   AGE
deployment.apps/cert-manager              1/1    1            1          91s
deployment.apps/cert-manager-cainjector   1/1    1            1          91s
deployment.apps/cert-manager-webhook      1/1    1            1          91s

NAME                                                 DESIRED  CURRENT  READY  AGE
replicaset.apps/cert-manager-5849447d4c              1        1        1      91s
replicaset.apps/cert-manager-cainjector-5557f7bb89   1        1        1      91s
replicaset.apps/cert-manager-webhook-77947cd8fb      1        1        1      91s


% tanzu package installed list
/ Retrieving installed packages...
  NAME          PACKAGE-NAME                  PACKAGE-VERSION      STATUS
  cert-manager  cert-manager.tanzu.vmware.com  1.1.0+vmware.1-tkg.2  Reconciling


% tanzu package installed list
/ Retrieving installed packages...
  NAME          PACKAGE-NAME                  PACKAGE-VERSION      STATUS
  cert-manager  cert-manager.tanzu.vmware.com  1.1.0+vmware.1-tkg.2  Reconcile succeeded


% kubectl get apps
NAME          DESCRIPTION          SINCE-DEPLOY  AGE
cert-manager  Reconcile succeeded  30s            10m

이제 cert-manager 패키지가 tanzu 명령줄을 사용하여 워크로드 클러스터에 성공적으로 설치되었으며, 이 클러스터에 배포하려는 다른 모든 애플리케이션에서 사용할 수 있습니다. 다음 포스트에서는 동일한 방법을 사용하여 vSphere with Tanzu 워크로드 클러스터에 Prometheus + Grafana 모니터링 스택을 구축하겠습니다. 하지만, 위의 예시를 사용한다면, 당신은 지금 큰 어려움 없이 이것을 성취할 수 있을 것입니다. 한 가지 주의할 점은 Carvel 패키지와 패키지가 설치하는 객체 모두의 네임스페이스 사용을 이해하는 것은 다소 혼란스러울 수 있다는 것입니다. 여기 Tanzu Community Edition을 위해 제가 쓴 글이 있는데, 여기에도 해당됩니다.

마지막으로, 이제 VMware Cloud에서 Tanzu Services를 이용할 수 있습니다. VMware 클라우드를 사용하면 vSphere 관리자는 기본 SDDC 인프라를 관리할 필요 없이 DevOps 팀을 위해 Tanzu Kubernetes 워크로드 클러스터를 구축할 수 있습니다. 여기에서 Tanzu Services에 대해 자세히 읽어보십시오.

출처 : https://cormachogan.com/2022/02/15/deploying-carvel-packages-on-tkgs-workload-clusters-in-vsphere-with-tanzu/

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like