Skip to content

Commit

Permalink
add libvirt support
Browse files Browse the repository at this point in the history
  • Loading branch information
enxebre committed Aug 30, 2018
1 parent 04253cb commit 2522d0f
Show file tree
Hide file tree
Showing 12 changed files with 281 additions and 42 deletions.
18 changes: 15 additions & 3 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"flag"
"fmt"
"io/ioutil"
"time"

Expand Down Expand Up @@ -35,6 +36,11 @@ func init() {
flag.Parse()
}

const (
providerAWS = "aws"
providerLibvirt = "libvirt"
)

func main() {

// Hack to deploy cluster and machineSet objects
Expand Down Expand Up @@ -84,7 +90,6 @@ func deployMachineSet() {
if err != nil {
glog.Fatalf("Error building kube config %#v", err)
}

client, err := clientset.NewForConfig(config)
clusterApiScheme.AddToScheme(scheme.Scheme)
decode := scheme.Codecs.UniversalDeserializer().Decode
Expand All @@ -95,8 +100,15 @@ func deployMachineSet() {
glog.Fatalf("Error reading machine-api-operator config: %v", err)
}

var machinesFolder string
if operatorConfig.Provider == providerAWS {
machinesFolder = "machines/aws"
} else if operatorConfig.Provider == providerLibvirt {
machinesFolder = "machines/libvirt"
}

// Create Cluster object
clusterTemplateData, err := ioutil.ReadFile("machines/cluster.yaml") // just pass the file name
clusterTemplateData, err := ioutil.ReadFile(fmt.Sprintf("%s/cluster.yaml", machinesFolder)) // just pass the file name
if err != nil {
glog.Fatalf("Error reading %#v", err)
}
Expand All @@ -113,7 +125,7 @@ func deployMachineSet() {
cluster := clusterObj.(*clusterv1.Cluster)

// Create MachineSet object
machineSetTemplateData, err := ioutil.ReadFile("machines/machine-set.yaml") // just pass the file name
machineSetTemplateData, err := ioutil.ReadFile(fmt.Sprintf("%s/machine-set.yaml", machinesFolder)) // just pass the file name
if err != nil {
glog.Fatalf("Error reading %#v", err)
}
Expand Down
10 changes: 10 additions & 0 deletions examples/machine-api-operator-config-aws.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: v1
kind: machineAPIOperatorConfig
provider: aws
aws:
clusterName: meh
clusterID: b302cf66-f5ff-4d5d-1cc1-0ab2755d2065
image: ami-0e502f54daeb8686e
region: eu-west-1
availabilityZone: eu-west-1a
replicas: 1
5 changes: 5 additions & 0 deletions examples/machine-api-operator-config-libvirt.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: v1
kind: machineAPIOperatorConfig
provider: libvirt
libvirt:
uri: qemu+tcp://host_private_ip/system
2 changes: 1 addition & 1 deletion machines/cluster.yaml → machines/aws/cluster.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
apiVersion: "cluster.k8s.io/v1alpha1"
kind: Cluster
metadata:
name: {{.ClusterName}}
name: {{.AWS.ClusterName}}
namespace: default
spec:
clusterNetwork:
Expand Down
22 changes: 11 additions & 11 deletions machines/machine-set.yaml → machines/aws/machine-set.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ metadata:
name: worker
namespace: default
labels:
sigs.k8s.io/cluster-api-cluster: {{.ClusterName}}
sigs.k8s.io/cluster-api-cluster: {{.AWS.ClusterName}}
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
spec:
replicas: {{.Replicas}}
replicas: {{.AWS.Replicas}}
selector:
matchLabels:
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: {{.ClusterName}}
sigs.k8s.io/cluster-api-cluster: {{.AWS.ClusterName}}
template:
metadata:
labels:
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: {{.ClusterName}}
sigs.k8s.io/cluster-api-cluster: {{.AWS.ClusterName}}
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
spec:
Expand All @@ -27,28 +27,28 @@ spec:
apiVersion: aws.cluster.k8s.io/v1alpha1
kind: AWSMachineProviderConfig
ami:
id: {{.Image}}
id: {{.AWS.Image}}
instanceType: m4.large
placement:
region: {{.Region}}
availabilityZone: {{.AvailabilityZone}}
region: {{.AWS.Region}}
availabilityZone: {{.AWS.AvailabilityZone}}
subnet:
filters:
- name: "tag:Name"
values:
- {{.ClusterName}}-worker-{{.AvailabilityZone}}
- {{.AWS.ClusterName}}-worker-{{.AWS.AvailabilityZone}}
publicIp: true
iamInstanceProfile:
id: {{.ClusterName}}-master-profile
id: {{.AWS.ClusterName}}-master-profile
keyName: tectonic
tags:
- name: tectonicClusterID
value: {{.ClusterID}}
value: {{.AWS.ClusterID}}
securityGroups:
- filters:
- name: "tag:Name"
values:
- {{.ClusterName}}_worker_sg
- {{.AWS.ClusterName}}_worker_sg
userDataSecret:
name: ignition-worker
versions:
Expand Down
15 changes: 15 additions & 0 deletions machines/libvirt/cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
apiVersion: "cluster.k8s.io/v1alpha1"
kind: Cluster
metadata:
name: {{.Libvirt.ClusterName}}
namespace: default
spec:
clusterNetwork:
services:
cidrBlocks:
- "10.0.0.1/24"
pods:
cidrBlocks:
- "10.0.0.2/24"
serviceDomain: unused
43 changes: 43 additions & 0 deletions machines/libvirt/machine-set.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
apiVersion: cluster.k8s.io/v1alpha1
kind: MachineSet
metadata:
name: worker
namespace: default
labels:
sigs.k8s.io/cluster-api-cluster: {{.Libvirt.ClusterName}}
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
spec:
replicas: {{.Libvirt.Replicas}}
selector:
matchLabels:
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: {{.Libvirt.ClusterName}}
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
template:
metadata:
labels:
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: {{.Libvirt.ClusterName}}
sigs.k8s.io/cluster-api-machine-role: infra
sigs.k8s.io/cluster-api-machine-type: worker
spec:
providerConfig:
value:
apiVersion: libvirtproviderconfig/v1alpha1
kind: LibvirtMachineProviderConfig
domainMemory: 2048
domainVcpu: 2
ignKey: /var/lib/libvirt/images/worker.ign
volume:
poolName: default
baseVolumeID: /var/lib/libvirt/images/coreos_base
networkInterfaceName: tectonic
networkInterfaceAddress: 192.168.124.12
autostart: false
uri: {{.Libvirt.URI}}
versions:
kubelet: ""
controlPlane: ""
10 changes: 9 additions & 1 deletion manifests/clusterapi-controller.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@ apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: clusterapi-controllers
namespace: default
namespace: kube-system
labels:
api: clusterapi
k8s-app: controller
tectonic-operators.coreos.com/managed-by: machine-api-operator
spec:
securityContext:
runAsNonRoot: true
runAsUser: 65534
selector:
matchLabels:
api: clusterapi
Expand Down Expand Up @@ -44,8 +47,13 @@ spec:
limits:
cpu: 100m
memory: 30Mi
{{- if .AWS }}
- name: aws-machine-controller
image: quay.io/alberto_lamela/aws-machine-controller:dev # TODO: move this to openshift org
{{- else if .Libvirt}}
- name: libvirt-machine-controller
image: quay.io/alberto_lamela/libvirt-machine-controller:0.0.1-dev # TODO: move this to openshift org
{{- end}}
env:
- name: NODE_NAME
valueFrom:
Expand Down
14 changes: 13 additions & 1 deletion pkg/render/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,19 @@ const (

// OperatorConfig contains configuration for KAO managed add-ons
type OperatorConfig struct {
metav1.TypeMeta `json:",inline"`
metav1.TypeMeta `json:",inline"`
Provider string `json:"provider"`
AWS *awsConfig `json:"aws"`
Libvirt *libvirtConfig `json:"libvirt"`
}

type libvirtConfig struct {
URI string `json:"uri"`
ClusterName string `json:"clusterName"`
Replicas string `json:"replicas"`
}

type awsConfig struct {
ClusterName string `json:"clusterName"`
ClusterID string `json:"clusterID"`
Region string `json:"region"`
Expand Down
8 changes: 0 additions & 8 deletions pkg/render/machine-api-operator-config.yaml

This file was deleted.

2 changes: 1 addition & 1 deletion pkg/render/render.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ package render
import (
"bytes"
"fmt"
"html/template"
"io/ioutil"
"os"
"path/filepath"
"text/template"

"github.com/ghodss/yaml"
"github.com/golang/glog"
Expand Down
Loading

0 comments on commit 2522d0f

Please sign in to comment.