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:
tcxctl push
tcxctl deploy crds
tcxctl deploy init-chart
tcxctl deploy controller kapp-controller
tcxctl deploy controller admin-operator
tcxctl deploy product
Ensure that the extracted bundle directory structure is as follows:
tcx-deployer ├── 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
Examples:
- 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:
export AWS_PROFILE=<MY-AWS-PROFILE> tcxctl deploy all --bundle-path /root/tcx-deployer --kubeconfig <your-kubeconfig-location> --registry <your-profile-ID>.dkr.ecr.<aws-region>.amazonaws.com/<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>