This topic guides you through getting started with Tanzu Developer Tools for IntelliJ.
Install Tanzu Developer Tools for IntelliJ.
Configure Local Source Proxy if you’re able to do so. For more information, see the Local Source Proxy documentation.
If you cannot use Local Source Proxy, use a source image registry. Before deploying a workload, you must authenticate with an image registry to store your source code. You can use the Docker CLI to authenticate or you can set environment variables that the Tanzu CLI can use to authenticate.
docker login $REGISTRY_HOSTNAME -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD
export TANZU_APPS_REGISTRY_CA_CERT=PATH-TO-CA-CERT.nip.io.crt
export TANZU_APPS_REGISTRY_PASSWORD=USERNAME
export TANZU_APPS_REGISTRY_USERNAME=PASSWORD
CA_CERT is only needed for a custom or private registry.
For more information, see Workload creation fails due to authentication failure in Docker Registry.
Run IntelliJ from a CLI, instead of through your operating system GUI, to avoid restricting the set of environment variables the app receives. This is especially relevant for macOS.
Limited environment variables can cause problems with cluster authentication for Tanzu Developer Tools for IntelliJ. For example, a common situation is that a sanitized PATH does not provide access to the gke-cloud-auth-plugin installed on your system. This makes Tanzu Developer Tools for IntelliJ unable to authenticate and access your GKE cluster.
This situation is complex and different things can go wrong depending on:
All of these problems are most easily avoided by running IntelliJ from a CLI. Run IntelliJ from a CLI in macOS by running:
open /Applications/IntelliJ\ IDEA.app
The extension makes use of the following files within your project:
workload.yamlcatalog-info.yamlTiltfile.tanzuignoreYou can create these files by using the instructions in this topic, or use the files in the View an example project section.
There are two ways to create these files:
workload.yaml fileYou must include a file named workload.yaml in your project. For example, my-project/config/workload.yaml.
workload.yaml provides instructions to Supply Chain Choreographer about how to build and manage a workload. For more information, see Supply Chain Choreographer for Tanzu.
The Tanzu Developer Tools for IntelliJ extension requires only one workload.yaml file per project. workload.yaml must be a single-document YAML file, not a multi-document YAML file.
To create a workload.yaml file by using code snippets:
workload.See the following workload.yaml example:
apiVersion: carto.run/v1alpa1
kind: Workload
metadata:
name: APP-NAME
labels:
apps.tanzu.vmware.com/workload-type: WORKLOAD-TYPE
app.kubernetes.io/part-of: APP-NAME
spec:
source:
git:
url: GIT-SOURCE-URL
ref:
branch: GIT-BRANCH-NAME
Where:
APP-NAME is the name of your application. For example, my app.WORKLOAD-TYPE is the type of workload for your app. For example, web. For more information, see Workload types.GIT-SOURCE-URL is the Git source code URL for your app. For example, github.com/mycompany/myapp.GIT-BRANCH-NAME is the branch of the Git source code you want to use. For example, main.Alternatively you can use the Tanzu CLI to create a workload.yaml file. For more information, see Create or update a workload.
catalog-info.yaml fileYou must include a file named catalog-info.yaml in your project. For example, my-project/catalog/catalog-info.yaml.
catalog-info.yaml enables the workloads created with Tanzu Developer Tools for IntelliJ to be visible in Tanzu Developer Portal. For more information, see Overview of Tanzu Developer Portal.
To create a catalog-info.yaml file by using the code snippets:
catalog-info.See the following workload.yaml example:
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: APP-NAME
description: APP-DESCRIPTION
tags:
- tanzu
annotations:
'backstage.io/kubernetes-label-selector': 'app.kubernetes.io/part-of=APP-NAME'
spec:
type: service
lifecycle: experimental
owner: default-team
Where:
APP-NAME is the name of your application.APP-DESCRIPTION is a description of your application.In your project you must include a file named Tiltfile with no extension (no filetype), such as my-project/Tiltfile.
The Tiltfile provides the configuration for Tilt to enable your project to Live Update on the Tanzu Application Platform-enabled Kubernetes cluster. For more information, see the Tilt documentation.
The Tanzu Developer Tools for IntelliJ extension requires only one Tiltfile per project.
The following is an example Tiltfile:
LOCAL_PATH = os.getenv("LOCAL_PATH", default='.')
NAMESPACE = os.getenv("NAMESPACE", default='default')
k8s_custom_deploy(
'APP-NAME',
apply_cmd="tanzu apps workload apply -f PATH-TO-WORKLOAD-YAMl --live-update" +
" --local-path " + LOCAL_PATH +
" --namespace " + NAMESPACE +
" --yes >/dev/null" +
" && kubectl get workload APP-NAME --namespace " + NAMESPACE + " -o yaml",
delete_cmd="tanzu apps workload delete -f PATH-TO-WORKLOAD-YAML --namespace " + NAMESPACE + " --yes" ,
deps=['pom.xml', './target/classes'],
container_selector='workload',
live_update=[
sync('./target/classes', '/workspace/BOOT-INF/classes')
]
)
k8s_resource('APP-NAME', port_forwards=["8080:8080"],
extra_pod_selectors=[{'carto.run/workload-name': 'APP-NAME', 'app.kubernetes.io/component': 'run'}])
allow_k8s_contexts('CONTEXT-NAME')
Where:
APP-NAME is the name of your application.PATH-TO-WORKLOAD-YAML is the local file system path to your workload.yaml file. For example, config/workload.yaml.CONTEXT-NAME is the name of your current Kubernetes context. If your Tanzu Application Platform-enabled Kubernetes cluster is running on your local machine, you can remove the entire allow_k8s_contexts line. For more information about this line, see the Tilt documentation.If you want to compile the source image from a local directory other than the project directory, change the value of local path. For more information, see local path in the glossary.
.tanzuignore fileIn your project, you can include a file named .tanzuignore with no file extension. For example, my-project/.tanzuignore.
When working with local source code, .tanzuignore excludes files from the source code that are uploaded within the image. It has syntax similar to the .gitignore file.
For an example, see the .tanzuignore file in GitHub that is used for the sample Tanzu Java web app. You can use the file as it is or edit it for your needs.
Before you begin, you need a container image registry to use the sample application. There are two ways to view a sample application that demonstrates the necessary configuration files.
Tanzu Java Web App in the Application Accelerator.git clone to clone the application-accelerator-samples repository from GitHub.tanzu-java-web-app directory.Tiltfile and replace your-registry.io/project with your registry.