github.com/oam-dev/kubevela@v1.9.11/charts/vela-core/README.md (about)

     1  <div style="text-align: center">
     2    <p align="center">
     3      <img src="https://raw.githubusercontent.com/kubevela/kubevela.io/main/docs/resources/KubeVela-03.png">
     4      <br><br>
     5      <i>Make shipping applications more enjoyable.</i>
     6    </p>
     7  </div>
     8  
     9  ![Build status](https://github.com/kubevela/kubevela/workflows/E2E/badge.svg)
    10  [![Go Report Card](https://goreportcard.com/badge/github.com/kubevela/kubevela)](https://goreportcard.com/report/github.com/kubevela/kubevela)
    11  ![Docker Pulls](https://img.shields.io/docker/pulls/oamdev/vela-core)
    12  [![codecov](https://codecov.io/gh/kubevela/kubevela/branch/master/graph/badge.svg)](https://codecov.io/gh/kubevela/kubevela)
    13  [![LICENSE](https://img.shields.io/github/license/kubevela/kubevela.svg?style=flat-square)](/LICENSE)
    14  [![Releases](https://img.shields.io/github/release/kubevela/kubevela/all.svg?style=flat-square)](https://github.com/kubevela/kubevela/releases)
    15  [![TODOs](https://img.shields.io/endpoint?url=https://api.tickgit.com/badge?repo=github.com/kubevela/kubevela)](https://www.tickgit.com/browse?repo=github.com/oam-dev/kubevela)
    16  [![Twitter](https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Ftwitter.com%2Foam_dev)](https://twitter.com/oam_dev)
    17  [![Artifact HUB](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/kubevela)](https://artifacthub.io/packages/search?repo=kubevela)
    18  [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4602/badge)](https://bestpractices.coreinfrastructure.org/projects/4602)
    19  
    20  # KubeVela helm chart
    21  
    22  KubeVela is a modern application platform that makes it easier and faster to deliver and manage applications across hybrid,
    23  multi-cloud environments. At the mean time, it is highly extensible and programmable, which can adapt to your needs as they grow.
    24  
    25  ## TL;DR
    26  
    27  ```bash
    28  helm repo add kubevela https://kubevela.github.io/charts
    29  helm repo update
    30  helm install --create-namespace -n vela-system kubevela kubevela/vela-core --wait
    31  ```
    32  
    33  ## Prerequisites
    34  
    35  - Kubernetes >= v1.19 && < v1.22
    36    
    37  ## Parameters
    38  
    39  ### KubeVela core parameters
    40  
    41  | Name                          | Description                                                                                   | Value |
    42  | ----------------------------- | --------------------------------------------------------------------------------------------- | ----- |
    43  | `systemDefinitionNamespace`   | System definition namespace, if unspecified, will use built-in variable `.Release.Namespace`. | `nil` |
    44  | `applicationRevisionLimit`    | Application revision limit                                                                    | `2`   |
    45  | `definitionRevisionLimit`     | Definition revision limit                                                                     | `2`   |
    46  | `concurrentReconciles`        | concurrentReconciles is the concurrent reconcile number of the controller                     | `4`   |
    47  | `controllerArgs.reSyncPeriod` | The period for resync the applications                                                        | `5m`  |
    48  
    49  ### KubeVela workflow parameters
    50  
    51  | Name                                   | Description                                            | Value   |
    52  | -------------------------------------- | ------------------------------------------------------ | ------- |
    53  | `workflow.enableSuspendOnFailure`      | Enable suspend on workflow failure                     | `false` |
    54  | `workflow.backoff.maxTime.waitState`   | The max backoff time of workflow in a wait condition   | `60`    |
    55  | `workflow.backoff.maxTime.failedState` | The max backoff time of workflow in a failed condition | `300`   |
    56  | `workflow.step.errorRetryTimes`        | The max retry times of a failed workflow step          | `10`    |
    57  
    58  ### KubeVela controller parameters
    59  
    60  | Name                        | Description                          | Value              |
    61  | --------------------------- | ------------------------------------ | ------------------ |
    62  | `replicaCount`              | KubeVela controller replica count    | `1`                |
    63  | `imageRegistry`             | Image registry                       | `""`               |
    64  | `image.repository`          | Image repository                     | `oamdev/vela-core` |
    65  | `image.tag`                 | Image tag                            | `latest`           |
    66  | `image.pullPolicy`          | Image pull policy                    | `Always`           |
    67  | `resources.limits.cpu`      | KubeVela controller's cpu limit      | `500m`             |
    68  | `resources.limits.memory`   | KubeVela controller's memory limit   | `1Gi`              |
    69  | `resources.requests.cpu`    | KubeVela controller's cpu request    | `50m`              |
    70  | `resources.requests.memory` | KubeVela controller's memory request | `20Mi`             |
    71  | `webhookService.type`       | KubeVela webhook service type        | `ClusterIP`        |
    72  | `webhookService.port`       | KubeVela webhook service port        | `9443`             |
    73  | `healthCheck.port`          | KubeVela health check port           | `9440`             |
    74  
    75  ### KubeVela controller optimization parameters
    76  
    77  | Name                                                         | Description                                                                                                                                                                                                                      | Value   |
    78  | ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
    79  | `optimize.cachedGvks`                                        | Optimize types of resources to be cached.                                                                                                                                                                                        | `""`    |
    80  | `optimize.markWithProb`                                      | Optimize ResourceTracker GC by only run mark with probability. Side effect: outdated ResourceTracker might not be able to be removed immediately.                                                                                | `0.1`   |
    81  | `optimize.disableComponentRevision`                          | Optimize componentRevision by disabling the creation and gc                                                                                                                                                                      | `true`  |
    82  | `optimize.disableApplicationRevision`                        | Optimize ApplicationRevision by disabling the creation and gc.                                                                                                                                                                   | `false` |
    83  | `optimize.enableInMemoryWorkflowContext`                     | Optimize workflow by use in-memory context.                                                                                                                                                                                      | `false` |
    84  | `optimize.disableResourceApplyDoubleCheck`                   | Optimize workflow by ignoring resource double check after apply.                                                                                                                                                                 | `false` |
    85  | `optimize.enableResourceTrackerDeleteOnlyTrigger`            | Optimize resourcetracker by only trigger reconcile when resourcetracker is deleted.                                                                                                                                              | `true`  |
    86  | `featureGates.gzipResourceTracker`                           | compress ResourceTracker using gzip (good) before being stored. This is reduces network throughput when dealing with huge ResourceTrackers.                                                                                      | `false` |
    87  | `featureGates.zstdResourceTracker`                           | compress ResourceTracker using zstd (fast and good) before being stored. This is reduces network throughput when dealing with huge ResourceTrackers. Note that zstd will be prioritized if you enable other compression options. | `true`  |
    88  | `featureGates.applyOnce`                                     | if enabled, the apply-once feature will be applied to all applications, no state-keep and no resource data storage in ResourceTracker                                                                                            | `false` |
    89  | `featureGates.multiStageComponentApply`                      | if enabled, the multiStageComponentApply feature will be combined with the stage field in TraitDefinition to complete the multi-stage apply.                                                                                     | `true`  |
    90  | `featureGates.gzipApplicationRevision`                       | compress apprev using gzip (good) before being stored. This is reduces network throughput when dealing with huge apprevs.                                                                                                        | `false` |
    91  | `featureGates.zstdApplicationRevision`                       | compress apprev using zstd (fast and good) before being stored. This is reduces network throughput when dealing with huge apprevs. Note that zstd will be prioritized if you enable other compression options.                   | `true`  |
    92  | `featureGates.preDispatchDryRun`                             | enable dryrun before dispatching resources. Enable this flag can help prevent unsuccessful dispatch resources entering resourcetracker and improve the user experiences of gc but at the cost of increasing network requests.    | `true`  |
    93  | `featureGates.validateComponentWhenSharding`                 | enable component validation in webhook when sharding mode enabled                                                                                                                                                                | `false` |
    94  | `featureGates.disableWebhookAutoSchedule`                    | disable auto schedule for application mutating webhook when sharding enabled                                                                                                                                                     | `false` |
    95  | `featureGates.disableBootstrapClusterInfo`                   | disable the cluster info bootstrap at the starting of the controller                                                                                                                                                             | `false` |
    96  | `featureGates.informerCacheFilterUnnecessaryFields`          | filter unnecessary fields for informer cache                                                                                                                                                                                     | `true`  |
    97  | `featureGates.sharedDefinitionStorageForApplicationRevision` | use definition cache to reduce duplicated definition storage for application revision, must be used with InformerCacheFilterUnnecessaryFields                                                                                    | `true`  |
    98  | `featureGates.disableWorkflowContextConfigMapCache`          | disable the workflow context's configmap informer cache                                                                                                                                                                          | `true`  |
    99  
   100  ### MultiCluster parameters
   101  
   102  | Name                                                        | Description                                                                                 | Value                            |
   103  | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------- |
   104  | `multicluster.enabled`                                      | Whether to enable multi-cluster                                                             | `true`                           |
   105  | `multicluster.metrics.enabled`                              | Whether to enable multi-cluster metrics collect                                             | `false`                          |
   106  | `multicluster.clusterGateway.direct`                        | controller will connect to ClusterGateway directly instead of going to Kubernetes APIServer | `true`                           |
   107  | `multicluster.clusterGateway.replicaCount`                  | ClusterGateway replica count                                                                | `1`                              |
   108  | `multicluster.clusterGateway.port`                          | ClusterGateway port                                                                         | `9443`                           |
   109  | `multicluster.clusterGateway.image.repository`              | ClusterGateway image repository                                                             | `oamdev/cluster-gateway`         |
   110  | `multicluster.clusterGateway.image.tag`                     | ClusterGateway image tag                                                                    | `v1.9.0-alpha.2`                 |
   111  | `multicluster.clusterGateway.image.pullPolicy`              | ClusterGateway image pull policy                                                            | `IfNotPresent`                   |
   112  | `multicluster.clusterGateway.resources.requests.cpu`        | ClusterGateway cpu request                                                                  | `50m`                            |
   113  | `multicluster.clusterGateway.resources.requests.memory`     | ClusterGateway memory request                                                               | `20Mi`                           |
   114  | `multicluster.clusterGateway.resources.limits.cpu`          | ClusterGateway cpu limit                                                                    | `500m`                           |
   115  | `multicluster.clusterGateway.resources.limits.memory`       | ClusterGateway memory limit                                                                 | `200Mi`                          |
   116  | `multicluster.clusterGateway.secureTLS.enabled`             | Whether to enable secure TLS                                                                | `true`                           |
   117  | `multicluster.clusterGateway.secureTLS.certPath`            | Path to the certificate file                                                                | `/etc/k8s-cluster-gateway-certs` |
   118  | `multicluster.clusterGateway.secureTLS.certManager.enabled` | Whether to enable cert-manager                                                              | `false`                          |
   119  
   120  ### Test parameters
   121  
   122  | Name                  | Description         | Value                |
   123  | --------------------- | ------------------- | -------------------- |
   124  | `test.app.repository` | Test app repository | `oamdev/hello-world` |
   125  | `test.app.tag`        | Test app tag        | `v1`                 |
   126  | `test.k8s.repository` | Test k8s repository | `oamdev/alpine-k8s`  |
   127  | `test.k8s.tag`        | Test k8s tag        | `1.18.2`             |
   128  
   129  ### Common parameters
   130  
   131  | Name                          | Description                                                                                                                                                        | Value                |
   132  | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------- |
   133  | `imagePullSecrets`            | Image pull secrets                                                                                                                                                 | `[]`                 |
   134  | `nameOverride`                | Override name                                                                                                                                                      | `""`                 |
   135  | `fullnameOverride`            | Fullname override                                                                                                                                                  | `""`                 |
   136  | `serviceAccount.create`       | Specifies whether a service account should be created                                                                                                              | `true`               |
   137  | `serviceAccount.annotations`  | Annotations to add to the service account                                                                                                                          | `{}`                 |
   138  | `serviceAccount.name`         | The name of the service account to use. If not set and create is true, a name is generated using the fullname template                                             | `nil`                |
   139  | `nodeSelector`                | Node selector                                                                                                                                                      | `{}`                 |
   140  | `tolerations`                 | Tolerations                                                                                                                                                        | `[]`                 |
   141  | `affinity`                    | Affinity                                                                                                                                                           | `{}`                 |
   142  | `rbac.create`                 | Specifies whether a RBAC role should be created                                                                                                                    | `true`               |
   143  | `logDebug`                    | Enable debug logs for development purpose                                                                                                                          | `false`              |
   144  | `logFilePath`                 | If non-empty, write log files in this path                                                                                                                         | `""`                 |
   145  | `logFileMaxSize`              | Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited.                                         | `1024`               |
   146  | `kubeClient.qps`              | The qps for reconcile clients                                                                                                                                      | `400`                |
   147  | `kubeClient.burst`            | The burst for reconcile clients                                                                                                                                    | `600`                |
   148  | `authentication.enabled`      | Enable authentication for application                                                                                                                              | `false`              |
   149  | `authentication.withUser`     | Application authentication will impersonate as the request User                                                                                                    | `true`               |
   150  | `authentication.defaultUser`  | Application authentication will impersonate as the User if no user provided in Application                                                                         | `kubevela:vela-core` |
   151  | `authentication.groupPattern` | Application authentication will impersonate as the request Group that matches the pattern                                                                          | `kubevela:*`         |
   152  | `sharding.enabled`            | When sharding enabled, the controller will run as master mode. Refer to https://github.com/kubevela/kubevela/blob/master/design/vela-core/sharding.md for details. | `false`              |
   153  | `sharding.schedulableShards`  | The shards available for scheduling. If empty, dynamic discovery will be used.                                                                                     | `""`                 |
   154  
   155  
   156  ## Uninstallation
   157  
   158  ### Vela CLI 
   159  
   160  To uninstall KubeVela, you can just run the following command by vela CLI:
   161  
   162  ```shell
   163  vela uninstall --force
   164  ```
   165  
   166  ### Helm CLI
   167  
   168  **Notice**: You must disable all the addons before uninstallation, this is a script for convenience. 
   169  
   170  ```shell
   171  #! /bin/sh
   172  addon=$(vela addon list|grep enabled|awk {'print $1'})
   173  
   174  fluxcd=false
   175  for var in ${addon[*]}
   176  do
   177    if [ $var == "fluxcd" ]; then
   178        fluxcd=true
   179        continue
   180        else
   181          vela addon disable $var
   182    fi
   183  done
   184  if [ $fluxcd ]; then
   185      vela addon disable fluxcd
   186  fi
   187  ```
   188  
   189  Make sure all existing KubeVela resources deleted before uninstallation:
   190  ```shell
   191  kubectl delete applicationrevisions.core.oam.dev --all
   192  kubectl delete applications.core.oam.dev --all
   193  kubectl delete componentdefinitions.core.oam.dev --all
   194  kubectl delete definitionrevisions.core.oam.dev --all
   195  kubectl delete policies.core.oam.dev --all
   196  kubectl delete policydefinitions.core.oam.dev --all
   197  kubectl delete resourcetrackers.core.oam.dev --all
   198  kubectl delete traitdefinitions.core.oam.dev --all
   199  kubectl delete workflows.core.oam.dev --all
   200  kubectl delete workflowstepdefinitions.core.oam.dev --all
   201  kubectl delete workloaddefinitions.core.oam.dev --all
   202  ```
   203  
   204  To uninstall the KubeVela helm release:
   205  
   206  ```shell
   207  $ helm uninstall -n vela-system kubevela
   208  ```
   209  
   210  Finally, this command will remove all the Kubernetes resources associated with KubeVela and remove this chart release.