Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,4 @@ $(test_instances):

.PHONY: clean
clean: ## Clean the project
rm -rf .cache compiled dependencies vendor helmcharts jsonnetfile*.json || true
rm -rf .cache compiled dependencies vendor helmcharts manifests jsonnetfile*.json || true
Comment thread
thobens marked this conversation as resolved.
Outdated
20 changes: 19 additions & 1 deletion class/capi-provider-cloudscale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,22 @@ parameters:
- input_paths:
- ${_base_directory}/component/main.jsonnet
input_type: jsonnet
output_path: capi-provider-cloudscale/
output_path: ${_base_directory}/manifests/capi-provider-cloudscale/
- input_type: external
output_path: .
input_paths:
- ${_kustomize_wrapper}
env_vars:
INPUT_DIR: ${_base_directory}/manifests/capi-provider-cloudscale/
args:
- ${_base_directory}/manifests/capi-provider-cloudscale-rendered/
- input_type: external
output_path: .
input_paths:
- ${_base_directory}/scripts/envsubst-dir
# map env vars from parameters as needed
env_vars:
CLOUDSCALE_API_TOKEN: ${capi_provider_cloudscale:variables:cloudscale_api_token}
args:
- ${_base_directory}/manifests/capi-provider-cloudscale-rendered
- \${compiled_target_dir}/capi-provider-cloudscale/10_kustomize
20 changes: 19 additions & 1 deletion class/defaults.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,22 @@ parameters:
capi_provider_cloudscale:
=_metadata:
multi_tenant: true
namespace: syn-capi-provider-cloudscale
# The component assumes that this namespace already exists via dependency `component-capi-core`
namespace: syn-cluster-api

images:
capi-provider-cloudscale:
registry: quay.io
image: cloudscalech/cluster-api-cloudscale-controller
tag: v1.0.1

kustomize:
# The root path of the kustomize manifests. This path is relative to the root of the repository.
manifest_path: config/default
Comment thread
thobens marked this conversation as resolved.
Outdated

# An array with variables that the generated manifests will be templated with.
# They should be specified in the format:
# variables:
# my_variable: bar
variables:
cloudscale_api_token: ""
38 changes: 36 additions & 2 deletions component/main.jsonnet
Original file line number Diff line number Diff line change
@@ -1,10 +1,44 @@
// main template for capi-provider-cloudscale
local com = import 'lib/commodore.libjsonnet';
local kap = import 'lib/kapitan.libjsonnet';
local kube = import 'lib/kube.libjsonnet';
local inv = kap.inventory();
// The hiera parameters for the component
local params = inv.parameters.capi_provider_cloudscale;

// Define outputs below
{
assert std.member(inv.applications, 'capi-core') : 'Application capi-core is not available';
Comment thread
thobens marked this conversation as resolved.
Outdated
assert std.length(params.variables.cloudscale_api_token) > 0 : 'capi-provider-cloudscale:variables:cloudscale_api_token must be set';

com.Kustomization(
'https://github.com/cloudscale-ch/cluster-api-provider-cloudscale/' + params.kustomize.manifest_path,
params.images['capi-provider-cloudscale'].tag,
{
'quay.io/cloudscalech/capcs-staging': {
local image = params.images['capi-provider-cloudscale'],
newTag: image.tag,
newName: '%(registry)s/%(image)s' % image,
},
},
{
namespace: params.namespace,
labels+: [
{
pairs: {
'app.kubernetes.io/managed-by': 'commodore',
},
},
],
patchesStrategicMerge: [ 'rm-namespace.yaml' ],
},
) {
'rm-namespace': [
{
'$patch': 'delete',
apiVersion: 'v1',
kind: 'Namespace',
metadata: {
name: 'capcs-system',
},
},
],
}
20 changes: 20 additions & 0 deletions scripts/envsubst-dir
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -euo pipefail

src="$1"
dst="$2"

mkdir -p "$dst"

find "$src" -type f -name '*.yaml' -print0 |
while IFS= read -r -d '' file; do
relative="${file#$src/}"
output="$dst/$relative"

mkdir -p "$(dirname "$output")"

envsubst \
-no-unset \
-i "$file" \
-o "$output"
done
8 changes: 7 additions & 1 deletion tests/defaults.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# Overwrite parameters here

# parameters: {...}
applications:
- capi-core

parameters:
capi_provider_cloudscale:
variables:
cloudscale_api_token: "MY_CLOUDSCALE_API_TOKEN"
Comment thread
thobens marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: capcs-system/capcs-serving-cert
labels:
app.kubernetes.io/managed-by: commodore
cluster.x-k8s.io/provider: infrastructure-cloudscale-ch-cloudscale
name: capcs-mutating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /mutate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscalecluster
failurePolicy: Fail
name: mcloudscalecluster-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscaleclusters
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /mutate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscaleclustertemplate
failurePolicy: Fail
name: mcloudscaleclustertemplate-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscaleclustertemplates
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /mutate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscalemachine
failurePolicy: Fail
name: mcloudscalemachine-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscalemachines
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /mutate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscalemachinetemplate
failurePolicy: Fail
name: mcloudscalemachinetemplate-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscalemachinetemplates
sideEffects: None
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
annotations:
cert-manager.io/inject-ca-from: capcs-system/capcs-serving-cert
labels:
app.kubernetes.io/managed-by: commodore
cluster.x-k8s.io/provider: infrastructure-cloudscale-ch-cloudscale
name: capcs-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /validate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscalecluster
failurePolicy: Fail
name: vcloudscalecluster-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscaleclusters
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /validate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscaleclustertemplate
failurePolicy: Fail
name: vcloudscaleclustertemplate-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscaleclustertemplates
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /validate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscalemachine
failurePolicy: Fail
name: vcloudscalemachine-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscalemachines
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: capcs-webhook-service
namespace: syn-cluster-api
path: /validate-infrastructure-cluster-x-k8s-io-v1beta2-cloudscalemachinetemplate
failurePolicy: Fail
name: vcloudscalemachinetemplate-v1beta2.kb.io
rules:
- apiGroups:
- infrastructure.cluster.x-k8s.io
apiVersions:
- v1beta2
operations:
- CREATE
- UPDATE
resources:
- cloudscalemachinetemplates
sideEffects: None
Loading
Loading