After you have prepared your cluster to run Tanzu Platform Self-Managed, as described in Preparing Your Cluster to Host Tanzu Platform Self-Managed, you can proceed with the installation.
These instructions assume the use of two machines, a bootstrap machine for installation and a jumpbox for downloading, as you would use in an air-gapped environment. If your environment is not air-gapped, you can use the same machine for both.
Download and stage the installation images
Download and extract the installer for Tanzu Platform Self-Managed.
-
Download the installer.
You can download the installer from the Broadcom support download site at the following URL:https://support.broadcom.com/group/ecx/productdownloads?subfamily=Tanzu%20Platform%20Self%20Managed
-
After the download completes, create a directory and extract the tarball into the directory. For example:
mkdir tanzu-installer tar -xzvf <INSTALLER-BUNDLE-FILENAME>.tar.gz -c ./tanzu-installer
The extracted tarball in your installer directory contains the following components:
- the
tanzu-sm-installer
installer
This file is located under thecli_bundle
directory for each OS. - a
config.yaml
file
This configuration file allows you to specify details about your specific installation prior to running the installer. tanzusm-collector.tar
andagent-images.tar
These tarballs contain the collector and extension images.- the
tanzusm-<VERSION>.tar
image bundle This tarball contains installer images. - a
tanzu-bundle
folder This folder has the tarballs that contain the binaries and plugins that you need to enable your organization to use the tanzu CLI. - an
additional-resources
folder
Push the installation images to your local image registry
Push the tarballs required for deployment and setup to your local image registry. You can perform this step directly from your jumpbox, if it has access to the registry. Otherwise, you must move them to the bootstrap machine first.
Before you begin, make sure you have already set up a local image registry, as described in Set up a local image registry.
- From the bootstrap machine, verify connectivity to your local image registry (for example, Harbor) using a
docker login
command. For example:docker login <path-to-local-repo>
- Push installer image bundle to the registry. For example:
imgpkg copy --tar tanzusm-<VERSION>.tar --to-repo=<path-to-local-repo>
Edit the configuration file
The config.yaml
file contains details about your specific installation. Edit this file to customize your installation. At a minimum, you must provide settings for the ingress controller and identity provider.
Profile and flavor configuration
#Supported values are "full" or "essentials"
flavor: full
#supported values are "evaluation", "foundation", "regular" or "enterprise"
profile: foundation
Seeded administrator identity and password
Tanzu Platform Self-Managed provides a seeded admin user that you can use for the initial setup.
Define the password for the seeded administrator identity in the config.yaml
prior to deploying Tanzu Platform Self-Managed.
login:
defaultUsers:
username: tanzu_platform_admin
admin:
#Tanzu Platform Admin Password, Random password will be generated if empty value provided
#Note that this password cannot be changed later, its one time set ( both system generated and user provided one)
password: ""
If you do not define a password, one is generated during the installation and written back to the config.yaml
file. The generated password is base64 encoded. To decode the password just remove the encoded:
prefix and decode the remaining string.
Certificates
The certificate provided in config.yaml
file must be provided as string literal in YAML format. For example:
certificate: |
-----BEGIN CERTIFICATE-----
MIIC3DCCAcSgAwIBAgIBADANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDDA4xMC4y
MjAuMjEyLjEyMDAeFw0yNDA5MjUxNjI1MTdaFw0yNDEwMjUxNjI1MTdaMBkxFzAV
BgNVBAMMDjEwLjIyMC4yMTIuMTIwMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAsA9Q8QpTNRSvEIjT4OmMFyT4OIhfkQ/0EGUewZcU4Ju7GxOZpds1Esrr
5KdeyK+iM3JJEbEoh1ZJUEorDQvIGhLO5zAotwew4AhAwjX/zHe5Vzvs3vdxvo2q
en/T8lqzrWCK9ab+fp/Rbmmi6X4foCwaVgmsm8y0t+03+j2nowb2tw7URcUmKdga
D84JLKVAmEKIXaI1KcQr9YQGuME5SPSNxpFgRHirXTPHXDu7OMt13Agf2nszpXly
QFZ3bt5hzYRW/zLXM+weYo1CaOZ5I/tVXfrj8grCIvZv8Ze1aHHqHvKO6zuqK0S4
OOmJYrWF9x5FYR4DfoUyRQ4T8/6HxwIDAQABoy8wLTAMBgNVHRMBAf8EAjAAMB0G
A1UdDgQWBBQiUqAIOYy+qesTi6Ba1BpLJxuzrDANBgkqhkiG9w0BAQsFAAOCAQEA
qsJQChldlYDjWsRW9d6rkHOmOLaCqpU84rab5Kb+yRgKOABsh8yLoW0tvH6QZsEg
FFJM144N+VHtcG/OZEg+eFswy/gLMVW0mET+iGf47D1/VTLF4NAoGVcRx4N/8+nq
GT85g/9bmwEtCrseuu5bZ/LDWdGpoqgPVp7DsAhuM/N5tg+9KKnjmFqQov+aZ9MK
0P493hr0IwxPXvCql6tdy7n1dsggltt+/iANGqO5FAxSTKSFiRHF11ecjdYjybHd
Tt0q9UELigtwHrqhIT/iuLPhZCPb0hEhMblAVvImRYwgGZCwvASgPM0/RI2pHpse
BSochNiBi2zWCBe7opmGmQ==
-----END CERTIFICATE-----
Also provide the certificate for the registry that you intend to use.
CustomRegistryCertificate: |
-----BEGIN CERTIFICATE-----
....
....
-----END CERTIFICATE-----
If you are configuring VCF Collectors, make sure you are using SAN certificate.
If you are using an intermediate CA, the root CA or intermediate CAs in the chain must also be included when configuring a certificate.
Trivy DB settings for air-gapped installation
#Daedalus Settings
trivy:
# Optional OCI repository to retrieve trivy-db from. Its url can be external or internal for airgapped deployment (default "ghcr.io/aquasecurity/trivy-db")
# This repositroy should be periodically synced from ghcr.io/aquasecurity/trivy-db to get latest vulnerability for airgapped deployment.
dbRepository: ""
# When using SSL/TLS, Trivy can be configured to allow insecure connections to a container registry if there is no valid certificate available
# Set allowInsecureConnections to true to allow insecure server connections; false, otherwise
allowInsecureConnections: false
Ingress controller settings
Update the load balancer IP address, host, and optionally, the tls certificate.
ingress:
# Static IP address that needs to be assigned to contour load balancer
# The host associated with this IP will be used for accessing UI and other ingress objects.
# This is optional and If not provided, random IP address from available IP pool will be assigned to contour load balancer.
loadBalancerIP: ""
# DNS name that can reach the system. If unset, and
# `controller` is enabled, then get the external name from
# the installed ingress controller.
host: ""
# TLS certificate configuration for the specified `host`
# If unset, the cluster will generate a self-signed certificate on its own.
tls:
certificate: ""
privateKey: ""
Identity provider settings
Tanzu Platform Self-Managed authenticates users using UAA as the identity broker. UAA requires an existing OIDC-compliant identity provider (IDP), and expects the issuer URL
, clientID
, and clientSecret
to integrate with your IDP.
You can use Okta, AD, or LDAP.
LDAP settings
login:
ldap:
url: 'ldap://openldap:1389/'
credentials:
userDN: 'cn=admin,dc=tanzu,dc=net'
password: password
users:
baseDN: 'dc=tanzu,dc=net'
searchFilter: 'cn={0}'
mailAttribute: mail
groups:
baseDN: 'dc=tanzu,dc=net'
searchFilter: 'member={0}'
searchDepth: 10
Okta settings
login:
oauthProviders:
- name: okta.test
configUrl: 'https://my-server.okta.com/.well-known/openid-configuration'
issuerUrl: 'https://my-server.okta.com'
scopes:
- openid
- email
- groups
loginPageLinkText: Login with Dev Okta
clientId: <your-client-id>
secret: <your-client-secret>
attributeMappings:
username: email
groups: groups
Storage configurations
# Infra components
postgresql:
storageClass: "postgresql-storage-class"
clickhouse:
storageClass: "clickhouse-storage-class"
redis:
storageClass: "redis-storage-class"
opensearch:
storageClass: "opensearch-storage-class"
seaweedfsS3:
storageClass: "seaweedfs-storage-class"
prometheus:
storageClass: "prometheus-storage-class"
tmcStorageClass: "tmc-prometheus-storage-class"
kafka:
storageClass: "kafka-storage-class"
zookeeper:
storageClass: "zk-storage-class"
Verify your deployment environment
Before deploying the stack to your cluster, verify your setup with an installer command.
Before you begin
The verify
command shown below contains the following variables that you must set to fit your specific environment. You can either set these as environment variables or replace the variables directly in the command.
TANZU_SM_VERSION
- The version of Tanzu Platform Self-Managed that you are installing. You can get the version from theconfig.yaml
file.LOCAL_REGISTRY
- The name of (and path to) your local image registry.REGISTRY_USERNAME
- The username that the installer will use to pull images from your local image registry.REGISTRY_API_TOKEN
- The API token that the installer will use to pull images from your local image registry.-
KUBECONFIG
- The name of (and path to) the kubeconfig file for the workload cluster on which you are installing Tanzu Platform Self-Managed. If you do not specify a kubeconfig file, the installer uses your current kubeconfig. -
Run the following command to verify your setup.
tanzu-sm-installer verify -f config.yaml \ -u "${REGISTRY_USERNAME}:${REGISTRY_API_TOKEN}" \ -r ${LOCAL_REGISTRY}/hub-self-managed/${TANZU_SM_VERSION}/repo \ --install-version ${TANZU_SM_VERSION} \ --kubeconfig ${KUBECONFIG}
For information on how to interpret the output from the verify
command, see Understanding installation pre-check output.
Deploy the Tanzu Platform Self-Managed stack to your cluster
After downloading and staging the installation images and editing the config.yaml
file, run the installer.
Before you begin
The install
command shown below contains the following variables that you must set to fit your specific environment. You can either set these as environment variables or replace the variables directly in the command.
TANZU_SM_VERSION
- The version of Tanzu Platform Self-Managed that you are installing. You can get the version from theconfig.yaml
file.LOCAL_REGISTRY
- The name of (and path to) your local image registry.REGISTRY_USERNAME
- The username that the installer will use to pull images from your local image registry.REGISTRY_API_TOKEN
- The API token that the installer will use to pull images from your local image registry.
Procedure
- Make sure the KUBECONFIG environment variable is set to the Kubernetes configuration of the cluster where you want to install Tanzu Platform Self-Managed.
- Run the following command to deploy Tanzu Platform Self-Managed to your cluster.
tanzu-sm-installer install -f config.yaml \ -u "${REGISTRY_USERNAME}:${REGISTRY_API_TOKEN}" \ -r ${LOCAL_REGISTRY}/hub-self-managed/${TANZU_SM_VERSION}/repo \ --install-version ${TANZU_SM_VERSION} --yes
The terminal displays logs showing the installation progress.
Verify your Tanzu Platform Self-Managed deployment
- Run the following command to verify your deployment.
tanzu-sm-installer post-verify --kubeconfig ${KUBECONFIG}
What’s Next
After you have successfully deployed Tanzu Platform Self-Managed, continue to Setting up Tanzu Platform Self-Managed for your organization for the first login and some final set up tasks to make Tanzu Platform available to your organization.
Content feedback and comments