This command is used for product deployment.

tcxctl deploy all

This command is provided for Day 0 product deployment, you need to run one command to deploy everything. Internally, it performs these steps sequentially:
  1. tcxctl push
  2. tcxctl deploy crds
  3. tcxctl deploy init-chart
  4. tcxctl deploy controller kapp-controller
  5. tcxctl deploy controller admin-operator
  6. tcxctl deploy product
Ensure that the extracted bundle directory structure is as follows:
├── csars
├── examples
│   ├── backup-and-restore
│   └── tcops_helm_customizations
├── images
├── imgpkg
│   ├── controller
│   └── services
├── product-helm-charts
│   ├── init
│   │   ├── charts
│   │   └── templates
│   │       └── configmaps
│   └── tcsa
│       ├── charts
│       └── templates
└── scripts
├── deployment
├── imgpkg_tags.yaml
└── manifests
├── crds
│   ├── system
│   └── tcx
└── harbor
└── custom


  • Artifacts pushed to Harbor:
    tcxctl deploy all --bundle-path /root/tcx-deployer --kubeconfig <your-kubeconfig-location> --registry <harbor-registry-fqdn>/<project-name> --registry-password <harbor-registry-password> --registry-username  <harbor-registry-username> --registry-cert <path-to-your-registry-ca-certificate-file> --timeout <time-in-mins>
  • Artifacts pushed to ECR:
    tcxctl deploy all --bundle-path /root/tcx-deployer --kubeconfig <your-kubeconfig-location> --registry <your-profile-ID>.dkr.ecr.<aws-region><project-name> --timeout <time-in-mins>

tcxctl deploy crds

This command deploys the CRDs required for kapp-controller and admin-operator. In TKG kapp-controller, CRDs come out of the box so only the TcxProduct CRD required for admin-operator is deployed:
tcxctl deploy crds --kubeconfig <your-kubeconfig-location> --path <path-to-your-registry-ca-certificate-file>

tcxctl deploy init-chart

This command creates storageclasses for the relevant cloud, configures basic RBAC for kapp-controller and admin-operator. Also, creates namespaces required for deployment, creates the imagePullSecret (required for Vanilla K8s clusters) per namespace and ConfigMap for kapp-controller containing registry certificates.
Note: It is not recommended to provide registry credentials at the command line. Alternatively, docker login can be executed prior to invoking tcxctl for security.
tcxctl deploy init-chart --kubeconfig <your-kubeconfig-location> --registry <harbor-registry-fqdn>/<project-name> --registry-password <your-registry-password> --registry-username <your-registry-username> --registry-cert <path-to-your-registry-ca-certificate-file> --helm-chart-path <$TCSA_WORK_SPACE>/tcx-deployer/product-helm-charts/init

tcxctl deploy controller

This command deploys the two core controllers and operators, that handle the actual deployment of the applications that constitute the product. The --imgpkg-tags is a file that contains the imgpkg bundle versions for kapp-controller and admin-operator. This file must be generated at build time.
tcxctl deploy controller kapp-controller --imgpkg-tags <$TCSA_WORK_SPACE>/tcx-deployer/scripts/imgpkg_tags.yaml --kubeconfig <your-kubeconfig-location> --registry <harbor-registry-fqdn>/<project-name> --registry-password <your-registry-password> --registry-username <-registry-username> --registry-cert <path-to-your-registry-ca-certificate-file>

tcxctl deploy controller admin-operator --imgpkg-tags /root/tcx-deployer/scripts/imgpkg_tags.yaml --kubeconfig apiname --registry <harbor-registry-fqdn>/<project-name> --registry-password <your-registry-password> --registry-username <your-registry-username> --registry-cert <path-to-your-registry-ca-certificate-file>

tcxctl deploy product

This command deploys the product chart as a Helm release. It uses the Helm SDK to deploy the chart contents. It is not mandatory to use this command to deploy the Helm chart. The helm CLI or other higher-order tools that understand Helm charts like CloudFormation or VMware Telco Cloud Automation can be used.
tcxctl deploy product  --name tcsa --kubeconfig <your-kubeconfig-location>  --helm-chart-path /root/tcx-deployer/product-helm-charts/tcsa --values-file <path-to-your-values-file>.yaml --timeout <time-in-mins>