Skip to content

Commit 1963cf4

Browse files
displaguekubermatic-bot
authored andcommitted
Adds a machine driver for Linode (#451)
* add vendor updates for linode * Add Linode machine driver * include userdata in linode creation, via stackscript * fix linode status checking and simplify creation waiting * include Kubermatic in the linode api call user-agent * fix linter errors for linode provider * linode ssh keys need trimming, root_pass must be provided * exclude centos from Linode tests * truncate linode labels to 32 chars on creation and lookup * fix linode provider Get which was ignoring the 32 character limit * remove unused fields from Linode config * order linode fields in fixtures alphabetically to match expectations
1 parent 6c51c0b commit 1963cf4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+20830
-5
lines changed

Gopkg.lock

Lines changed: 19 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ required = [
6868
name = "github.com/digitalocean/godo"
6969
version = "v1.1.*"
7070

71+
[[constraint]]
72+
name = "github.com/linode/linodego"
73+
version = "v0.7.*"
74+
7175
[[constraint]]
7276
name = "k8s.io/apiextensions-apiserver"
7377
branch = "release-1.11"

docs/cloud-provider.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,23 @@ network: ""
104104
datacenter: ""
105105
location: "fsn1"
106106
```
107+
108+
## Linode
109+
110+
### machine.spec.providerConfig.cloudProviderSpec
111+
```yaml
112+
# your linode token
113+
token: "<< YOUR_LINODE_TOKEN >>"
114+
# droplet region
115+
region: "eu-west"
116+
# droplet size
117+
type: "g6-standard-2"
118+
# enable backups for the linode
119+
backups: false
120+
# enable private networking for the linode
121+
private_networking: true
122+
# add the following tags to the linode
123+
tags:
124+
- "machine-controller"
125+
```
126+

docs/operating-system.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
| Openstack |||
1111
| Digitalocean |||
1212
| Hetzner || x |
13+
| Linode || x |
1314

1415
## Configuring a operating system
1516

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
apiVersion: v1
2+
kind: Secret
3+
metadata:
4+
# If you change the namespace/name, you must also
5+
# adjust the rbac rules
6+
name: machine-controller-linode
7+
namespace: kube-system
8+
type: Opaque
9+
stringData:
10+
token: << LINODE_TOKEN >>
11+
---
12+
apiVersion: "cluster.k8s.io/v1alpha1"
13+
kind: MachineDeployment
14+
metadata:
15+
name: linode-machinedeployment
16+
namespace: kube-system
17+
spec:
18+
paused: false
19+
replicas: 1
20+
strategy:
21+
type: RollingUpdate
22+
rollingUpdate:
23+
maxSurge: 1
24+
maxUnavailable: 0
25+
minReadySeconds: 0
26+
selector:
27+
matchLabels:
28+
foo: bar
29+
template:
30+
metadata:
31+
labels:
32+
foo: bar
33+
spec:
34+
providerSpec:
35+
value:
36+
sshPublicKeys:
37+
- "<< YOUR_PUBLIC_KEY >>"
38+
cloudProvider: "linode"
39+
cloudProviderSpec:
40+
# If empty, can be set via LINODE_TOKEN env var
41+
token:
42+
secretKeyRef:
43+
namespace: kube-system
44+
name: machine-controller-linode
45+
key: token
46+
region: eu-west
47+
type: g6-standard-2
48+
backups: false
49+
private_networking: true
50+
tags:
51+
- "machine-controller"
52+
operatingSystem: "ubuntu"
53+
operatingSystemSpec:
54+
disableAutoUpdate: true
55+
versions:
56+
kubelet: 1.9.6

examples/machine-controller.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ rules:
284284
resourceNames:
285285
- machine-controller-ssh-key
286286
- machine-controller-hetzner
287+
- machine-controller-linode
287288
- machine-controller-digitalocean
288289
- machine-controller-openstack
289290
- machine-controller-aws
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: "machine.k8s.io/v1alpha1"
2+
kind: Machine
3+
metadata:
4+
name: linode
5+
spec:
6+
metadata:
7+
name: node1
8+
providerConfig:
9+
sshPublicKeys:
10+
- "<< YOUR_PUBLIC_KEY >>"
11+
cloudProvider: "linode"
12+
cloudProviderSpec:
13+
backups: false
14+
private_networking: true
15+
region: eu-west
16+
tags:
17+
- "machine-controller"
18+
token: "token"
19+
type: g6-standard-2
20+
operatingSystem: "ubuntu"
21+
operatingSystemSpec:
22+
disableAutoUpdate: true
23+
roles:
24+
- "Node"
25+
versions:
26+
kubelet: "v1.9.6"
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
metadata:
2+
annotations:
3+
machine-controller/machine-type-revision: 45f1c93260140936c610e56575d7505ba3d52444
4+
creationTimestamp: null
5+
name: linode
6+
namespace: kube-system
7+
spec:
8+
metadata:
9+
creationTimestamp: null
10+
name: node1
11+
providerSpec:
12+
value:
13+
cloudProvider: linode
14+
cloudProviderSpec:
15+
backups: false
16+
private_networking: true
17+
region: eu-west
18+
tags:
19+
- machine-controller
20+
token: token
21+
type: g6-standard-2
22+
operatingSystem: ubuntu
23+
operatingSystemSpec:
24+
disableAutoUpdate: true
25+
sshPublicKeys:
26+
- << YOUR_PUBLIC_KEY >>
27+
versions:
28+
kubelet: v1.9.6
29+
status: {}

pkg/cloudprovider/provider.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/fake"
1212
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/hetzner"
1313
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/kubevirt"
14+
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/linode"
1415
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/openstack"
1516
"github.com/kubermatic/machine-controller/pkg/cloudprovider/provider/vsphere"
1617
"github.com/kubermatic/machine-controller/pkg/providerconfig"
@@ -35,6 +36,9 @@ var (
3536
providerconfig.CloudProviderHetzner: func(cvr *providerconfig.ConfigVarResolver) cloud.Provider {
3637
return hetzner.New(cvr)
3738
},
39+
providerconfig.CloudProviderLinode: func(cvr *providerconfig.ConfigVarResolver) cloud.Provider {
40+
return linode.New(cvr)
41+
},
3842
providerconfig.CloudProviderVsphere: func(cvr *providerconfig.ConfigVarResolver) cloud.Provider {
3943
return vsphere.New(cvr)
4044
},

0 commit comments

Comments
 (0)