Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform and leverages Carvel packaging

Overview

Tanzu Framework

Go Reference

Overview

Tanzu Framework provides a set of building blocks to build atop of the Tanzu platform, which includes the following:

  • API Machinery: For defining and implementing APIs and their controllers
  • CLI Machinery: For extending the command line experience
  • Packages: For consistent delivery of core and optional components

Framework leverages Carvel packaging and plugins to provide users with a much stronger, more integrated experience than the loose coupling and stand-alone commands of the previous generation of tools.

Documentation

The documentation provides a getting started guide and information about building from source, the Tanzu Framework architecture, extending the Tanzu platform, and more.

Getting Started

The best way to get started with Tanzu Framework is by using the CLI. Please see our getting started with the CLI guide for more details.

Contributing

Thanks for taking the time to join our community and start contributing! We welcome pull requests. Feel free to dig through the issues and jump in.

Before you begin

  • Check out the contribution guidelines to learn more about how to contribute
  • Reference our troubleshooting tips if you find yourself in need of more debug options.
  • Check out this support process document here to learn more about the process.

Roadmap

Check out Framework's project Roadmap and consider contributing!

Comments
  • Map and Validate ClusterClass variables to legacy variables

    Map and Validate ClusterClass variables to legacy variables

    What this PR does / why we need it

    Map and Validate ClusterClass variables to legacy variables. Details: For tanzu cluster create -f cluster.yaml command, if the input file is a cluster class-based YAML file, then need to map the YAML Cluster Object attribute's values to legacy variables and update legacy variables values in the environment, which will help continue with the existing validations in the CLI create cluster flow. This PR does take care of mapping all infrastructure provider types (Vsphere, AWS, Azure) of the cluster class input file.

    Which issue(s) this PR fixes

    Fixes #2240

    Describe testing done for PR

    Unit test cases have written to cover all use cases (for aws, vsphere, and azure) Manual testing has been done to create the cluster with the cluster class object file as an input file

    Release note

    
    

    PR Checklist

    • [x] Squash the commits into one or a small number of logical commits
    • [x] Use good commit messages
    • [x] Ensure PR contains terms all contributors can understand and links all contributors can access

    Additional information

    Special notes for your reviewer

    This pull request has a dependency with https://github.com/vmware-tanzu/tanzu-framework/pull/2179 , there could be some variable mapping changes if any changes in https://github.com/vmware-tanzu/tanzu-framework/pull/2179

    area/ux cla-not-required area/lcm 
    opened by chandrareddyp 107
  • Windows plan convergence into mainline VSphere cluster provider-plans

    Windows plan convergence into mainline VSphere cluster provider-plans

    Fix to https://github.com/vmware-tanzu/tanzu-framework/issues/524

    ── v0.7.10
    │   ├── cluster-template-definition-dev-windows.yaml # <-- new file, for future decoupling of windows plans if necessar
    │   ├── cluster-template-definition-dev.yaml
    │   ├── cluster-template-definition-prod.yaml
    │   ├── infrastructure-components.yaml
    │   └── ytt
    │       ├── base-template.yaml
    │       ├── overlay-windows.yaml # <--- new file, ignored if IS_WINDOWS_WORKLOAD_CLUSTER=true
    │        |── overlay.yaml
    ── ytt
    

    Tested locally and confirmed I can make windows nodes with these templates. Would like advice on how to add clustergen tests, as of now, i seem to be seeing #523 failures. In any case, maybe would like to merge+iterate on these templates if possible once the current main branch is unlocked.

    image

    ok-to-merge 
    opened by jayunit100 101
  • Enable Single Node Cluster deployment via tanzu CLI

    Enable Single Node Cluster deployment via tanzu CLI

    What this PR does / why we need it

    This PR enabled deployment of Single Node Clusters (SNC) using Tanzu CLI.

    Which issue(s) this PR fixes

    Fixes #3621

    Describe testing done for PR:

    With feature gate enabled:

    • Created single node workload cluster with standard kubernetes runtime on vSphere.
    • Created standard kubernetes workload cluster on vSphere.
    • Checked that SNC creation is blocked when controlPlaneTaint is set to true.

    With feature gate disabled:

    • Checked that creation of SNC is blocked.
    • Created standard kubernetes workload cluster on vSphere.

    Release note

     Enable Single Node Cluster deployment via tanzu CLI
    

    Additional information

    • Added a new behavior of not allowing to create single node clusters without the feature gate. Previously, there was no failure in case of creating a single node cluster.
    • controlPlaneTaint variable is introduced in default vSphere ClusterClass, which is set to true by default. If users want to deploy SNC, they should set the variable as false, such that the control plane node taints would be removed and workloads could be scheduled onto SNC. Otherwise, the default behavior would be preserved.

    Special notes for your reviewer

    ok-to-merge cla-not-required 
    opened by Ankitasw 83
  • add azuredisk cc support

    add azuredisk cc support

    What this PR does / why we need it

    Which issue(s) this PR fixes

    Fixes #

    Describe testing done for PR

    Release note

    
    

    Additional information

    Special notes for your reviewer

    ok-to-merge cla-not-required 
    opened by m1zzx2 53
  • Add NSX ALB(Avi) related fields validation & remove vip network separation feature gate

    Add NSX ALB(Avi) related fields validation & remove vip network separation feature gate

    Signed-off-by: Xudong Liu [email protected]

    What this PR does / why we need it

    • Add validations against NSX Advanced Load Balancer(Avi) related inputs
    • Remove VIP network separation feature gate since the feature will be GA

    Which issue(s) this PR fixes

    Fixes #2824 Fixes #2825

    Describe testing done for PR

    Release note

    check users' AVI related inputs valid or not
    

    PR Checklist

    • [x] Squash the commits into one or a small number of logical commits
    • [x] Use good commit messages
    • [x] Ensure PR contains terms all contributors can understand and links all contributors can access

    Additional information

    Special notes for your reviewer

    area/cli kind/enhancement area/addons ok-to-merge cla-not-required area/networking codefreeze 
    opened by XudongLiuHarold 52
  •  Redesign Feature and FeatureGate API

    Redesign Feature and FeatureGate API

    What this PR does / why we need it

    This PR

    1. Adds a new FeatureGate and Feature API in the core.tanzu.vmware.com API group and deprecates the APIs in config.tanzu.vmware.com
    2. Removes namespaces concept in FeatureGate and Feature API v1alpha2 version in core.tanzu.vmware.com
    3. Adds new controller to reconcile Feature resources in core.tanzu.vmware.com
    4. Moves strings util functions to util module
    5. Adds validating webhook for FeatureGate v1alpha2 version in core.tanzu.vmware.com
    6. Deprecates existing featuregates utility functions
    7. Adds new utility functions to support new API in core.tanzu.vmware.com
    8. Updates featuregates package

    Which issue(s) this PR fixes

    Fixes #

    Describe testing done for PR

    Ran the controller and tested the controller and webhook functionality manually.

    Release note

    Deprecated Feature and FeatureGate API in config.tanzu.vmware.com, added new APIs Feature and FeatureGate in core.tanzu.vmware.com and a controller to reconcile feature.core.tanzu.vmware.com resources
    

    Additional information

    Special notes for your reviewer

    ok-to-merge cla-not-required 
    opened by yharish991 50
  • Update to Cluster API v1.2.3 in go dependencies

    Update to Cluster API v1.2.3 in go dependencies

    What this PR does / why we need it

    • Update Cluster API and related dependencies to v1.2.3

    The providers itself will be updated in a separate PR (#3513). The API changes are compatible.

    Fixes # N/A

    Describe testing done for PR

    Release note

    Update Cluster API go dependencies to v1.2.3, controller-runtime to 0.12 and Kubernetes to 1.24
    For AWS, the following actions have been added to the policy for Cluster API AWS controllers:
    * ec2:ReplaceRoute
    * elasticloadbalancing:DeleteTargetGroup
    

    Additional information

    Special notes for your reviewer

    ok-to-merge cla-not-required 
    opened by randomvariable 50
  • Plumb legacy CLI Addon Configs to ClusterBootstrap and AddonConfig APIs

    Plumb legacy CLI Addon Configs to ClusterBootstrap and AddonConfig APIs

    What this PR does / why we need it

    1. Plumb legacy CLI Addon Configs to ClusterBootstrap and AddonConfig APIs for the following Components:
    • Antrea
    • Calico
    • vsphere-csi
    • vsphere-cpi

    Which issue(s) this PR fixes

    Fixes #2368

    Describe testing done for PR

    Tested by using the dryrun for cluster and generating template with CNI set to calico Example output:

    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: ClusterBootstrap
    metadata:
      annotations:
        tkg.tanzu.vmware.com/add-missing-fields-from-tkr: v1.23.5+vmware.1-tkg.1-zshippable
      name: sg-cluster
      namespace: default
    spec:
       additionalPackages:
      - refName: metrics-server*
      - refName: secretgen-controller*
      cni:
        refName: calico*
        valuesFrom:
          providerRef:
            apiGroup: cni.tanzu.vmware.com
            kind: CalicoConfig
            name: sg-cluster
    ---
    apiVersion: cni.tanzu.vmware.com/v1alpha1
    kind: CalicoConfig
    metadata:
      name: sg-cluster
      namespace: default
    ---
    apiVersion: cluster.x-k8s.io/v1beta1
    kind: Cluster
    metadata:
      annotations:
        run.tanzu.vmware.com/resolve-tkr: ""
      labels:
        tkg.tanzu.vmware.com/cluster-name: sg-cluster
      name: sg-cluster
      namespace: default
    spec:
      clusterNetwork:
        pods:
          cidrBlocks:
          - 100.96.0.0/11
        services:
          cidrBlocks:
          - 100.64.0.0/13
      topology:
        class: tkg-aws-default
        controlPlane:
          metadata:
            annotations:
              run.tanzu.vmware.com/resolve-os-image: ami-region=us-west-2,os-name=ubuntu
          replicas: 1
        variables:
        - name: cni
          value: calico
        - name: auditLogging
          value:
            enabled: false
        - name: region
          value: us-west-2
        - name: sshKeyName
          value: shivaani-keypair
        - name: loadBalancerSchemeInternal
          value: false
        - name: bastion
          value:
            enabled: true
        - name: network
          value:
            subnets:
            - az: us-west-2a
              private:
                id: subnet-008e7fead36b71f3d
              public:
                id: subnet-0ae6b7a92953d00fe
            vpc:
              existingID: vpc-07ce38addc21aa1d0
        - name: identityRef
          value: {}
        - name: worker
          value:
            instanceType: m5.large
            rootVolume:
              sizeGiB: 80
        - name: controlPlane
          value:
            instanceType: t3.large
            rootVolume:
              sizeGiB: 80
        version: v1.23.5+vmware.1
        workers:
          machineDeployments:
          - class: tkg-worker
            failureDomain: us-west-2a
            metadata:
              annotations:
                run.tanzu.vmware.com/resolve-os-image: ami-region=us-west-2,os-name=ubuntu
            name: md-0
            replicas: 1
    
    

    Release note

    
    

    PR Checklist

    • [x] Squash the commits into one or a small number of logical commits
    • [x] Use good commit messages
    • [x] Ensure PR contains terms all contributors can understand and links all contributors can access

    Additional information

    Special notes for your reviewer

    area/addons cla-not-required 
    opened by shivaani0505 46
  • Ytt integration testing

    Ytt integration testing

    Redo of PR #719 , adding a YTT testing framework to the existing unit/ directory in providers. You can run this by doing:

    /usr/local/bin/go test -v -timeout 30s -run ^TestUnit$ github.com/vmware-tanzu/tanzu-
    
    framework/pkg/v1/providers/tests/unit/
    
    area/testing ok-to-merge cla-not-required 
    opened by jayunit100 46
  • Refactor capabilities - create top level directory for capabilities

    Refactor capabilities - create top level directory for capabilities

    What this PR does / why we need it

    This PR refactors and creates a top level directory for capabilities. The top level directory contains

    1. discovery go module for capabilities sdk
    2. controller go module for controller code

    Which issue(s) this PR fixes

    Fixes https://github.com/vmware-tanzu/tanzu-framework/issues/3262 and https://github.com/vmware-tanzu/tanzu-framework/issues/3263

    Describe testing done for PR

    To test discovery go module

    1. Created a sample go module, imported the discovery package, and verified.

    To test controller go module

    1. Ran the capabilities controller to verify the functionality
    2. Built the image for the capabilities controller
    3. Deployed that to a test cluster and verified the functionality.

    Release note

    Refactored capabilities to create discovery and controller go module and moved them to a top level directory
    

    Additional information

    Special notes for your reviewer

    kind/refactor ok-to-merge cla-not-required 
    opened by yharish991 43
  • Add aws ebs csi api and controller for classy cluster

    Add aws ebs csi api and controller for classy cluster

    What this PR does / why we need it

    Which issue(s) this PR fixes

    Fixes #3399 Add Classy Cluster support for AWS EBS CSI driver:

    • Introduce a controller to reconcile AwsEbsCSIConfig
    • Change CC pipeline to use tanzu version 0.27 -> use 1.7.0 BoM which contains CC based EBS CSI Driver Package
    • Stable CC pipelines with 1.7.0 BoM ( however legacy pipelines are not stable, given it happened in other PRs, should be not relevant )
    • Add UT for new controller
    • Unblock downstream BoM modifications ( bolt build will depend on config files in this PR )

    Describe testing done for PR

    • Use new compability file, could install aws ebs csi driver
    • Run pipeline locally, could spin up CC cluster and aws ebs csi driver is installed

    Release note

    Support AWS EBS CSI Driver in Cluster Class
    
    

    Additional information

    Special notes for your reviewer

    ok-to-merge cla-not-required area/cc 
    opened by jeffwubj 42
  • Skip plugin sync when --dry-run flag is used with management-cluster create

    Skip plugin sync when --dry-run flag is used with management-cluster create

    What this PR does / why we need it

    Skip plugin sync when --dry-run flag is used with management-cluster create

    Which issue(s) this PR fixes

    Fixes #

    Describe testing done for PR

    Run tanzu management-cluster create -f <file-name> --dry-run and it should not try to sync plugins.

    Release note

    Fixed `tanzu management-cluster create --dry-run` showing plugin sync log message
    

    Additional information

    Special notes for your reviewer

    cla-not-required 
    opened by anujc25 1
  • test

    test

    What this PR does / why we need it

    Which issue(s) this PR fixes

    Fixes #

    Describe testing done for PR

    Release note

    
    

    Additional information

    Special notes for your reviewer

    cla-not-required 
    opened by hongtaiwang 1
  • WIP: Add new airgapped plugin as standalone plugin

    WIP: Add new airgapped plugin as standalone plugin

    Signed-off-by: Vandana Pathak [email protected]

    What this PR does / why we need it

    Add custom image repository pre-loading command to Tanzu CLI to replace bash script hack for users in airgapped environments CLI Plugin - isolated-cluster

    Commands -

    • download-bundle - Download images/bundle into local disk as TAR.
    • upload-bundle - Upload images to private repository

    Ex :

    
    tanzu isolated-cluster download-bundle --source-repo --tkg-version --source-ca-certificate/--source-insecure
    
    tanzu isolated-cluster upload-bundle --source-directory --destination-repo --destination-ca-certificate/--destination-insecure  
    

    Which issue(s) this PR fixes

    Fixes # 4093

    Describe testing done for PR

    • Run tanzu isolated-cluster download-bundle with version v1.6.0 , its downloading all the tar files and yaml as expected.(with insure mode)
    • Run tanzu isolated-cluster upload-bundle with destination repo Azure ACR , its uploading all the images to acr.

    Release note

    CLI Plugin  - isolated-cluster
    
    Commands - 
    - download-bundle   - Download images/bundle into local disk as TAR.  
    - upload-bundle - Upload images to private repository
    
    Complete Command :
     
    tanzu isolated-cluster download-bundle --source-repo --tkg-version --source-ca-certificate/--source-insecure
    
    tanzu isolated-cluster upload-bundle --source-directory --destination-repo --destination-ca-certificate/--destination-insecure  
    

    Additional information

    Special notes for your reviewer

    Please refer to this PR https://github.com/vmware-tanzu/tanzu-framework/pull/3743 for review discussion and approval. (We had to revert the PR for some build issue .)

    ok-to-merge cla-not-required 
    opened by Vandy-P 1
  • add e2e case in azure cc test

    add e2e case in azure cc test

    What this PR does / why we need it

    Which issue(s) this PR fixes

    Fixes #

    Describe testing done for PR

    Release note

    
    

    Additional information

    Special notes for your reviewer

    cla-not-required 
    opened by m1zzx2 3
  • Support specifying extraArgs for kubelet/scheduler/apiserver/controll…

    Support specifying extraArgs for kubelet/scheduler/apiserver/controll…

    …ermanager

    support specifying schedulerExtraArgs by ; delimited array KUBE_SCHEDULER_EXTRA_ARGS in cluster config file

    What this PR does / why we need it

    Which issue(s) this PR fixes

    Fixes #

    Describe testing done for PR

    Release note

    
    

    Additional information

    Special notes for your reviewer

    cla-not-required 
    opened by hongtaiwang 11
Releases(v0.25.3)
Owner
VMware Tanzu
Cloud native open source from VMware
VMware Tanzu
Nomad Pack is a templating and packaging tool used with HashiCorp Nomad.

Nomad Pack is a templating and packaging tool used with HashiCorp Nomad.

HashiCorp 287 Nov 30, 2022
Works with HashiCorp HCL. Allows to append the input file with blocks and attributes from the template file

About hclmergetool Works with HashiCorp HCL. Allows to append the input file with blocks and attributes from the template file Installation Binary Rel

Max Fedorov 0 Feb 6, 2022
Geth client which picks the most profitable blocks to mine using a greedy algorithm

Greeden-Geth Greeden-Geth is a protocol-agnostic client which uses a greedy algorithm to pick the most profitable blocks to submit to the network out

Nathan 75 Nov 16, 2022
[Building]Use Go & Vue3 to build an easy blog

Go + Vue3 Study 环境安装 本地环境:Go 1.17 后端框架:Gin 注意Go在使用Go Module的话需要使用修改Go的代理 首先查看Go相关的环境变量 go env 修改Go代理 go env -w Go111MODULE=on go env -w GOPROXY=https:

Random_Chen 0 Jan 25, 2022
This repository provides various utilities to help you build your NFT collection!

Attention! A powerful computer may be required! About This repository provides various utilities to help you build your NFT collection: Generate image

Igor Savenko 6 Nov 4, 2022
Boilerplate for building a monolighic Go and React application

Monolithic Go and React Application Boilerplate This repository provides a simple and monolithic service with a server written in Go and frontend with

Shin'ya Ueoka 17 Oct 31, 2022
set and get github user statuses

gh user-status being an extension for interacting with the status on a GitHub profile. gh user-status set gh user-status set interactively set status

Nate Smith 67 Nov 19, 2022
API and a set of tools to manage Netbox configuration declaratively

declarative-netbox An experimental project to explore the idea of managing the N

Michael Kashin 17 Jan 24, 2022
Set of scripts & tools for converting between numbers and major system encoded words.

major-system-converter Set of scripts & tools for converting between numbers and major system encoded words. Uses phonetics instead of letters to conv

null 4 Aug 9, 2022
A tool that facilitates building OCI images

Buildah - a tool that facilitates building Open Container Initiative (OCI) container images The Buildah package provides a command line tool that can

Containers 5.8k Dec 1, 2022
An experiment building a custom binary protocol for a calculator

Overview Implementation of a calculator service built on a custom protocol on top of TCP Details The server is in main.go, and the client is in client

Preetha 1 Nov 28, 2021
A boilerplate for building Gradescope autograders for Go projects.

go-autograder A boilerplate for building Gradescope autograders for Go projects. Getting started This autograder works by running all Go tests in a st

Nathan Benavides-Luu 1 Nov 6, 2022
This Go based project of Aadhyarupam Innovators demonstrate the code examples for building microservices, integration with cloud services (Google Cloud Firestore), application configuration management (Viper) etc.

This Go based project of Aadhyarupam Innovators demonstrate the code examples for building microservices, integration with cloud services (Google Cloud Firestore), application configuration management (Viper) etc.

Aadhyarupam 0 Jan 31, 2022
A boilerplate/starter project for quickly building APIs using Golang with Clean Architechture

A boilerplate/starter project for quickly building APIs using Golang with Clean Architechture

Nyoman Frastyawan 1 Mar 2, 2022
CapMonsterTool is a set of Go tools designed to simply make requests to the CapMonster Cloud API.

✨ CapMonsterTool ✨ About this module What is ✨ CapMonsterTool ✨ ? CapMonsterTool is a set of Go tools designed to simply make requests to the CapMonst

Louis Billaut 19 Dec 1, 2022
Set of reusable components for Golang projects

go-utils Table of contents go-utils Table of contents 1. Overview 2. Install 3. Utils package 3.1 logger 3.2 error 3.3 datetime 1. Overview In my free

AJPham 7 Sep 12, 2022
Generate FIRST/FOLLOW/PREDICT Set from BNF.

Generate FIRST/FOLLOW/PREDICT Set from BNF. We can use it to study parser theory. Feature FirstSet generate. Output pretty. FollowSet generate. Output

imtf 1 Oct 30, 2021
Set of functions/methods that will ease GO code generation

Set of functions/methods that will ease GO code generation

Matheus Leonel Balduino 1 Dec 1, 2021
James is your butler and helps you to create, build, debug, test and run your Go projects

go-james James is your butler and helps you to create, build, debug, test and run your Go projects. When you often create new apps using Go, it quickl

Pieter Claerhout 56 Oct 8, 2022