Skip to content

Commit 8a95b92

Browse files
Merge pull request #1 from tegridy-io/initial-release
Initial release
2 parents 0cfbaed + b047bc6 commit 8a95b92

File tree

10 files changed

+190
-5
lines changed

10 files changed

+190
-5
lines changed

.yamllint.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ ignore: |
1212
manifests/
1313
vendor/
1414
compiled/
15+
tests/golden/

class/cm-hetznercloud.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,16 @@ parameters:
99
- ${_base_directory}/component/main.jsonnet
1010
input_type: jsonnet
1111
output_path: cm-hetznercloud/
12+
# kustomize
13+
- input_paths:
14+
- ${_base_directory}/component/cloud-manager.jsonnet
15+
input_type: jsonnet
16+
output_path: ${_base_directory}/manifests/cloud-manager
17+
- input_paths:
18+
- ${_kustomize_wrapper}
19+
input_type: external
20+
output_path: .
21+
env_vars:
22+
INPUT_DIR: ${_base_directory}/manifests/cloud-manager
23+
args:
24+
- \${compiled_target_dir}/${_instance}/10_kustomize/cloud-manager

class/defaults.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
11
parameters:
22
cm_hetznercloud:
33
=_metadata: {}
4-
namespace: syn-cm-hetznercloud
4+
namespace: kube-system
5+
6+
manifestVersion: v1.13.2
7+
kustomizeInput: {}
8+
9+
images:
10+
controller_manager:
11+
registry: docker.io
12+
repository: hetznercloud/hcloud-cloud-controller-manager
13+
tag: ${cm_hetznercloud:manifestVersion}
14+
15+
hcloudToken: insertCoin
16+
hcloudNetwork: ""

component/cloud-manager.jsonnet

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// main template for cm-hetznercloud
2+
local com = import 'lib/commodore.libjsonnet';
3+
local kap = import 'lib/kapitan.libjsonnet';
4+
local kube = import 'lib/kube.libjsonnet';
5+
local inv = kap.inventory();
6+
// The hiera parameters for the component
7+
local params = inv.parameters.cm_hetznercloud;
8+
9+
local controllerManager = com.Kustomization(
10+
'https://github.com/hetznercloud/hcloud-cloud-controller-manager//deploy',
11+
params.manifestVersion,
12+
{
13+
'hetznercloud/hcloud-cloud-controller-manager': {
14+
newTag: params.images.controller_manager.tag,
15+
newName: '%(registry)s/%(repository)s' % params.images.controller_manager,
16+
},
17+
},
18+
{
19+
patchesStrategicMerge: [
20+
'deployment.yaml',
21+
],
22+
} + com.makeMergeable(params.kustomizeInput),
23+
) {
24+
deployment: kube.Deployment('hcloud-cloud-controller-manager') {
25+
metadata+: {
26+
labels: {},
27+
namespace: params.namespace,
28+
},
29+
spec: {
30+
template: {
31+
spec: {
32+
containers: [
33+
{
34+
name: 'hcloud-cloud-controller-manager',
35+
env: [
36+
{
37+
name: 'HCLOUD_NETWORK',
38+
valueFrom: {
39+
secretKeyRef: {
40+
key: 'network',
41+
name: 'hcloud',
42+
},
43+
},
44+
},
45+
],
46+
},
47+
],
48+
},
49+
},
50+
},
51+
},
52+
};
53+
54+
controllerManager

component/main.jsonnet

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,10 @@ local params = inv.parameters.cm_hetznercloud;
77

88
// Define outputs below
99
{
10+
'20_hcloud_token': kube.Secret('hcloud') {
11+
stringData: {
12+
token: params.hcloudToken,
13+
network: params.hcloudNetwork,
14+
},
15+
},
1016
}

docs/modules/ROOT/pages/references/parameters.adoc

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,28 @@
22

33
The parent key for all of the following parameters is `cm_hetznercloud`.
44

5-
== `namespace`
5+
== `hcloudNetwork`
66

77
[horizontal]
88
type:: string
9-
default:: `syn-cm-hetznercloud`
9+
default:: ``
1010

11-
The namespace in which to deploy this component.
11+
Name of the network, the cluster is in.
1212

13+
== `hcloudToken`
14+
15+
[horizontal]
16+
type:: string
17+
default:: `insertCoin`
18+
19+
The token to access the hetzner cloud api.
20+
21+
See https://docs.hetzner.com/de/cloud/api/getting-started/generating-api-token/[Hetzner Documentation] on how to create a token.
1322

1423
== Example
1524

1625
[source,yaml]
1726
----
18-
namespace: example-namespace
27+
csi_hetznercloud:
28+
hcloudToken: my-project-token
1929
----
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: hcloud-cloud-controller-manager
5+
namespace: kube-system
6+
spec:
7+
replicas: 1
8+
revisionHistoryLimit: 2
9+
selector:
10+
matchLabels:
11+
app: hcloud-cloud-controller-manager
12+
template:
13+
metadata:
14+
labels:
15+
app: hcloud-cloud-controller-manager
16+
spec:
17+
containers:
18+
- command:
19+
- /bin/hcloud-cloud-controller-manager
20+
- --cloud-provider=hcloud
21+
- --leader-elect=false
22+
- --allow-untagged-cloud
23+
env:
24+
- name: HCLOUD_NETWORK
25+
valueFrom:
26+
secretKeyRef:
27+
key: network
28+
name: hcloud
29+
- name: NODE_NAME
30+
valueFrom:
31+
fieldRef:
32+
fieldPath: spec.nodeName
33+
- name: HCLOUD_TOKEN
34+
valueFrom:
35+
secretKeyRef:
36+
key: token
37+
name: hcloud
38+
image: docker.io/hetznercloud/hcloud-cloud-controller-manager:v1.13.2
39+
name: hcloud-cloud-controller-manager
40+
resources:
41+
requests:
42+
cpu: 100m
43+
memory: 50Mi
44+
dnsPolicy: Default
45+
priorityClassName: system-cluster-critical
46+
serviceAccountName: cloud-controller-manager
47+
tolerations:
48+
- effect: NoSchedule
49+
key: node.cloudprovider.kubernetes.io/uninitialized
50+
value: "true"
51+
- key: CriticalAddonsOnly
52+
operator: Exists
53+
- effect: NoSchedule
54+
key: node-role.kubernetes.io/master
55+
operator: Exists
56+
- effect: NoSchedule
57+
key: node-role.kubernetes.io/control-plane
58+
operator: Exists
59+
- effect: NoSchedule
60+
key: node.kubernetes.io/not-ready
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: system:cloud-controller-manager
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: cluster-admin
9+
subjects:
10+
- kind: ServiceAccount
11+
name: cloud-controller-manager
12+
namespace: kube-system
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: cloud-controller-manager
5+
namespace: kube-system
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: v1
2+
data: {}
3+
kind: Secret
4+
metadata:
5+
annotations: {}
6+
labels:
7+
name: hcloud
8+
name: hcloud
9+
stringData:
10+
network: ''
11+
token: insertCoin
12+
type: Opaque

0 commit comments

Comments
 (0)