Skip to content
Snippets Groups Projects
Commit c2463450 authored by rbnis's avatar rbnis
Browse files

feat(chart): Add support for civo provider

parent 1c26181e
No related branches found
No related tags found
No related merge requests found
...@@ -11,4 +11,4 @@ name: cluster-autoscaler ...@@ -11,4 +11,4 @@ name: cluster-autoscaler
sources: sources:
- https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler - https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler
type: application type: application
version: 9.45.1 version: 9.46.0
...@@ -75,6 +75,7 @@ To create a valid configuration, follow instructions for your cloud provider: ...@@ -75,6 +75,7 @@ To create a valid configuration, follow instructions for your cloud provider:
- [Cluster API](#cluster-api) - [Cluster API](#cluster-api)
- [Exoscale](#exoscale) - [Exoscale](#exoscale)
- [Hetzner Cloud](#hetzner-cloud) - [Hetzner Cloud](#hetzner-cloud)
- [Civo](#civo)
### Templating the autoDiscovery.clusterName ### Templating the autoDiscovery.clusterName
...@@ -282,6 +283,23 @@ Each autoscaling group requires an additional `instanceType` and `region` key to ...@@ -282,6 +283,23 @@ Each autoscaling group requires an additional `instanceType` and `region` key to
Read [cluster-autoscaler/cloudprovider/hetzner/README.md](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/hetzner/README.md) for further information on the setup without helm. Read [cluster-autoscaler/cloudprovider/hetzner/README.md](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/hetzner/README.md) for further information on the setup without helm.
### Civo
The following parameters are required:
- `cloudProvider=civo`
- `autoscalingGroups=...`
When installing the helm chart to the namespace `kube-system`, you can set `secretKeyRefNameOverride` to `civo-api-access`.
Otherwise specify the following parameters:
- `civoApiUrl=https://api.civo.com`
- `civoApiKey=...`
- `civoClusterID=...`
- `civoRegion=...`
Read [cluster-autoscaler/cloudprovider/civo/README.md](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/civo/README.md) for further information on the setup without helm.
## Uninstalling the Chart ## Uninstalling the Chart
To uninstall `my-release`: To uninstall `my-release`:
...@@ -421,8 +439,12 @@ vpa: ...@@ -421,8 +439,12 @@ vpa:
| azureUseManagedIdentityExtension | bool | `false` | Whether to use Azure's managed identity extension for credentials. If using MSI, ensure subscription ID, resource group, and azure AKS cluster name are set. You can only use one authentication method at a time, either azureUseWorkloadIdentityExtension or azureUseManagedIdentityExtension should be set. | | azureUseManagedIdentityExtension | bool | `false` | Whether to use Azure's managed identity extension for credentials. If using MSI, ensure subscription ID, resource group, and azure AKS cluster name are set. You can only use one authentication method at a time, either azureUseWorkloadIdentityExtension or azureUseManagedIdentityExtension should be set. |
| azureUseWorkloadIdentityExtension | bool | `false` | Whether to use Azure's workload identity extension for credentials. See the project here: https://github.com/Azure/azure-workload-identity for more details. You can only use one authentication method at a time, either azureUseWorkloadIdentityExtension or azureUseManagedIdentityExtension should be set. | | azureUseWorkloadIdentityExtension | bool | `false` | Whether to use Azure's workload identity extension for credentials. See the project here: https://github.com/Azure/azure-workload-identity for more details. You can only use one authentication method at a time, either azureUseWorkloadIdentityExtension or azureUseManagedIdentityExtension should be set. |
| azureVMType | string | `"vmss"` | Azure VM type. | | azureVMType | string | `"vmss"` | Azure VM type. |
| civoApiKey | string | `""` | API key for the Civo API. Required if `cloudProvider=civo` |
| civoApiUrl | string | `"https://api.civo.com"` | URL for the Civo API. Required if `cloudProvider=civo` |
| civoClusterID | string | `""` | Cluster ID for the Civo cluster. Required if `cloudProvider=civo` |
| civoRegion | string | `""` | Region for the Civo cluster. Required if `cloudProvider=civo` |
| cloudConfigPath | string | `""` | Configuration file for cloud provider. | | cloudConfigPath | string | `""` | Configuration file for cloud provider. |
| cloudProvider | string | `"aws"` | The cloud provider where the autoscaler runs. Currently only `gce`, `aws`, `azure`, `magnum` and `clusterapi` are supported. `aws` supported for AWS. `gce` for GCE. `azure` for Azure AKS. `magnum` for OpenStack Magnum, `clusterapi` for Cluster API. | | cloudProvider | string | `"aws"` | The cloud provider where the autoscaler runs. Currently only `gce`, `aws`, `azure`, `magnum`, `clusterapi` and `civo` are supported. `aws` supported for AWS. `gce` for GCE. `azure` for Azure AKS. `magnum` for OpenStack Magnum, `clusterapi` for Cluster API. `civo` for Civo Cloud. |
| clusterAPICloudConfigPath | string | `"/etc/kubernetes/mgmt-kubeconfig"` | Path to kubeconfig for connecting to Cluster API Management Cluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or incluster-kubeconfig` | | clusterAPICloudConfigPath | string | `"/etc/kubernetes/mgmt-kubeconfig"` | Path to kubeconfig for connecting to Cluster API Management Cluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or incluster-kubeconfig` |
| clusterAPIConfigMapsNamespace | string | `""` | Namespace on the workload cluster to store Leader election and status configmaps | | clusterAPIConfigMapsNamespace | string | `""` | Namespace on the workload cluster to store Leader election and status configmaps |
| clusterAPIKubeconfigSecret | string | `""` | Secret containing kubeconfig for connecting to Cluster API managed workloadcluster Required if `cloudProvider=clusterapi` and `clusterAPIMode=kubeconfig-kubeconfig,kubeconfig-incluster or incluster-kubeconfig` | | clusterAPIKubeconfigSecret | string | `""` | Secret containing kubeconfig for connecting to Cluster API managed workloadcluster Required if `cloudProvider=clusterapi` and `clusterAPIMode=kubeconfig-kubeconfig,kubeconfig-incluster or incluster-kubeconfig` |
...@@ -476,7 +498,7 @@ vpa: ...@@ -476,7 +498,7 @@ vpa:
| replicaCount | int | `1` | Desired number of pods | | replicaCount | int | `1` | Desired number of pods |
| resources | object | `{}` | Pod resource requests and limits. | | resources | object | `{}` | Pod resource requests and limits. |
| revisionHistoryLimit | int | `10` | The number of revisions to keep. | | revisionHistoryLimit | int | `10` | The number of revisions to keep. |
| secretKeyRefNameOverride | string | `""` | Overrides the name of the Secret to use when loading the secretKeyRef for AWS and Azure env variables | | secretKeyRefNameOverride | string | `""` | Overrides the name of the Secret to use when loading the secretKeyRef for AWS, Azure and Civo env variables |
| securityContext | object | `{}` | [Security context for pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) | | securityContext | object | `{}` | [Security context for pod](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) |
| service.annotations | object | `{}` | Annotations to add to service | | service.annotations | object | `{}` | Annotations to add to service |
| service.clusterIP | string | `""` | IP address to assign to service | | service.clusterIP | string | `""` | IP address to assign to service |
......
...@@ -75,6 +75,7 @@ To create a valid configuration, follow instructions for your cloud provider: ...@@ -75,6 +75,7 @@ To create a valid configuration, follow instructions for your cloud provider:
- [Cluster API](#cluster-api) - [Cluster API](#cluster-api)
- [Exoscale](#exoscale) - [Exoscale](#exoscale)
- [Hetzner Cloud](#hetzner-cloud) - [Hetzner Cloud](#hetzner-cloud)
- [Civo](#civo)
### Templating the autoDiscovery.clusterName ### Templating the autoDiscovery.clusterName
...@@ -282,6 +283,23 @@ Each autoscaling group requires an additional `instanceType` and `region` key to ...@@ -282,6 +283,23 @@ Each autoscaling group requires an additional `instanceType` and `region` key to
Read [cluster-autoscaler/cloudprovider/hetzner/README.md](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/hetzner/README.md) for further information on the setup without helm. Read [cluster-autoscaler/cloudprovider/hetzner/README.md](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/hetzner/README.md) for further information on the setup without helm.
### Civo
The following parameters are required:
- `cloudProvider=civo`
- `autoscalingGroups=...`
When installing the helm chart to the namespace `kube-system`, you can set `secretKeyRefNameOverride` to `civo-api-access`.
Otherwise specify the following parameters:
- `civoApiUrl=https://api.civo.com`
- `civoApiKey=...`
- `civoClusterID=...`
- `civoRegion=...`
Read [cluster-autoscaler/cloudprovider/civo/README.md](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/civo/README.md) for further information on the setup without helm.
## Uninstalling the Chart ## Uninstalling the Chart
To uninstall `my-release`: To uninstall `my-release`:
......
...@@ -221,6 +221,27 @@ spec: ...@@ -221,6 +221,27 @@ spec:
{{- else if eq .Values.cloudProvider "kwok" }} {{- else if eq .Values.cloudProvider "kwok" }}
- name: KWOK_PROVIDER_CONFIGMAP - name: KWOK_PROVIDER_CONFIGMAP
value: "{{.Values.kwokConfigMapName | default "kwok-provider-config"}}" value: "{{.Values.kwokConfigMapName | default "kwok-provider-config"}}"
{{- else if eq .Values.cloudProvider "civo" }}
- name: CIVO_API_URL
valueFrom:
secretKeyRef:
key: api-url
name: {{ default (include "cluster-autoscaler.fullname" .) .Values.secretKeyRefNameOverride }}
- name: CIVO_API_KEY
valueFrom:
secretKeyRef:
key: api-key
name: {{ default (include "cluster-autoscaler.fullname" .) .Values.secretKeyRefNameOverride }}
- name: CIVO_CLUSTER_ID
valueFrom:
secretKeyRef:
key: cluster-id
name: {{ default (include "cluster-autoscaler.fullname" .) .Values.secretKeyRefNameOverride }}
- name: CIVO_REGION
valueFrom:
secretKeyRef:
key: region
name: {{ default (include "cluster-autoscaler.fullname" .) .Values.secretKeyRefNameOverride }}
{{- end }} {{- end }}
{{- range $key, $value := .Values.extraEnv }} {{- range $key, $value := .Values.extraEnv }}
- name: {{ $key }} - name: {{ $key }}
......
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
{{- $isAzure := eq .Values.cloudProvider "azure" }} {{- $isAzure := eq .Values.cloudProvider "azure" }}
{{- $isAws := eq .Values.cloudProvider "aws" }} {{- $isAws := eq .Values.cloudProvider "aws" }}
{{- $awsCredentialsProvided := and .Values.awsAccessKeyID .Values.awsSecretAccessKey }} {{- $awsCredentialsProvided := and .Values.awsAccessKeyID .Values.awsSecretAccessKey }}
{{- $isCivo := eq .Values.cloudProvider "civo" }}
{{- if or $isAzure (and $isAws $awsCredentialsProvided) }} {{- if or $isAzure (and $isAws $awsCredentialsProvided) $isCivo }}
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
...@@ -20,6 +21,11 @@ data: ...@@ -20,6 +21,11 @@ data:
{{- else if $isAws }} {{- else if $isAws }}
AwsAccessKeyId: "{{ .Values.awsAccessKeyID | b64enc }}" AwsAccessKeyId: "{{ .Values.awsAccessKeyID | b64enc }}"
AwsSecretAccessKey: "{{ .Values.awsSecretAccessKey | b64enc }}" AwsSecretAccessKey: "{{ .Values.awsSecretAccessKey | b64enc }}"
{{- else if $isCivo }}
api-url: "{{ .Values.civoApiUrl | b64enc }}"
api-key: "{{ .Values.civoApiKey | b64enc }}"
cluster-id: "{{ .Values.civoClusterID | b64enc }}"
region: "{{ .Values.civoRegion | b64enc }}"
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- end }} {{- end }}
...@@ -110,13 +110,30 @@ azureVMType: "vmss" ...@@ -110,13 +110,30 @@ azureVMType: "vmss"
# azureEnableForceDelete -- Whether to force delete VMs or VMSS instances when scaling down. # azureEnableForceDelete -- Whether to force delete VMs or VMSS instances when scaling down.
azureEnableForceDelete: false azureEnableForceDelete: false
# civoApiUrl -- URL for the Civo API.
# Required if `cloudProvider=civo`
civoApiUrl: "https://api.civo.com"
# civoApiKey -- API key for the Civo API.
# Required if `cloudProvider=civo`
civoApiKey: ""
# civoClusterID -- Cluster ID for the Civo cluster.
# Required if `cloudProvider=civo`
civoClusterID: ""
# civoRegion -- Region for the Civo cluster.
# Required if `cloudProvider=civo`
civoRegion: ""
# cloudConfigPath -- Configuration file for cloud provider. # cloudConfigPath -- Configuration file for cloud provider.
cloudConfigPath: "" cloudConfigPath: ""
# cloudProvider -- The cloud provider where the autoscaler runs. # cloudProvider -- The cloud provider where the autoscaler runs.
# Currently only `gce`, `aws`, `azure`, `magnum` and `clusterapi` are supported. # Currently only `gce`, `aws`, `azure`, `magnum`, `clusterapi` and `civo` are supported.
# `aws` supported for AWS. `gce` for GCE. `azure` for Azure AKS. # `aws` supported for AWS. `gce` for GCE. `azure` for Azure AKS.
# `magnum` for OpenStack Magnum, `clusterapi` for Cluster API. # `magnum` for OpenStack Magnum, `clusterapi` for Cluster API.
# `civo` for Civo Cloud.
cloudProvider: aws cloudProvider: aws
# clusterAPICloudConfigPath -- Path to kubeconfig for connecting to Cluster API Management Cluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or incluster-kubeconfig` # clusterAPICloudConfigPath -- Path to kubeconfig for connecting to Cluster API Management Cluster, only used if `clusterAPIMode=kubeconfig-kubeconfig or incluster-kubeconfig`
...@@ -446,5 +463,5 @@ vpa: ...@@ -446,5 +463,5 @@ vpa:
# vpa.containerPolicy -- [ContainerResourcePolicy](https://github.com/kubernetes/autoscaler/blob/vertical-pod-autoscaler/v0.13.0/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go#L159). The containerName is always et to the deployment's container name. This value is required if VPA is enabled. # vpa.containerPolicy -- [ContainerResourcePolicy](https://github.com/kubernetes/autoscaler/blob/vertical-pod-autoscaler/v0.13.0/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1/types.go#L159). The containerName is always et to the deployment's container name. This value is required if VPA is enabled.
containerPolicy: {} containerPolicy: {}
# secretKeyRefNameOverride -- Overrides the name of the Secret to use when loading the secretKeyRef for AWS and Azure env variables # secretKeyRefNameOverride -- Overrides the name of the Secret to use when loading the secretKeyRef for AWS, Azure and Civo env variables
secretKeyRefNameOverride: "" secretKeyRefNameOverride: ""
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment