Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
4 changes: 2 additions & 2 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,14 +131,14 @@ func deployMachineSet() {

for {
glog.Info("Trying to deploy Cluster object")
if _, err := v1alphaClient.Clusters("test").Create(cluster); err != nil {
if _, err := v1alphaClient.Clusters("default").Create(cluster); err != nil {
glog.Infof("Cannot create cluster, retrying in 5 secs: %v", err)
} else {
glog.Info("Created Cluster object")
}

glog.Info("Trying to deploy MachineSet object")
_, err = v1alphaClient.MachineSets("test").Create(machineSet)
_, err = v1alphaClient.MachineSets("default").Create(machineSet)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default still better than test. Though, is this the final namespace? I would rather make the namespace configurable. Either via configmap or via mao --namespace or similar option.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks. Yes, there's separate tickets for addressing dedicated namespaces and service accounts.

if err != nil {
glog.Infof("Cannot create MachineSet, retrying in 5 secs: %v", err)
} else {
Expand Down
36 changes: 6 additions & 30 deletions machines/cluster.yaml
Original file line number Diff line number Diff line change
@@ -1,39 +1,15 @@
---
apiVersion: "cluster.k8s.io/v1alpha1"
kind: Cluster
metadata:
name: test
namespace: test
name: {{.ClusterName}}
namespace: default
spec:
clusterNetwork:
services:
cidrBlocks:
- "10.0.0.1/24"
- "10.0.0.1/24"
pods:
cidrBlocks:
- "10.0.0.2/24"
serviceDomain: example.com
providerConfig:
value:
apiVersion: awsproviderconfig/v1alpha1
kind: AWSClusterProviderConfig
clusterId: {{.VpcName}}
clusterVersionRef:
namespace: test
name: test
hardware:
aws:
region: {{.Region}}
keyPairName: {{.SshKey}}
defaultHardwareSpec:
aws:
instanceType: m4.large
machineSets:
- nodeType: Master
size: 1
- shortName: infra
nodeType: Compute
infra: true
size: 1
- shortName: compute
nodeType: Compute
size: 1
- "10.0.0.2/24"
serviceDomain: unused
64 changes: 40 additions & 24 deletions machines/machine-set.yaml
Original file line number Diff line number Diff line change
@@ -1,40 +1,56 @@
---
apiVersion: cluster.k8s.io/v1alpha1
kind: MachineSet
metadata:
name: worker
namespace: test
namespace: default
labels:
machineapioperator.openshift.io/cluster: test
sigs.k8s.io/cluster-api-cluster: {{.ClusterName}}
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
spec:
replicas: 3
replicas: {{.Replicas}}
selector:
matchLabels:
machineapioperator.openshift.io/machineset: worker
machineapioperator.openshift.io/cluster: test
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: {{.ClusterName}}
template:
metadata:
labels:
machineapioperator.openshift.io/machineset: worker
machineapioperator.openshift.io/cluster: test
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: {{.ClusterName}}
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
spec:
providerConfig:
value:
apiVersion: awsproviderconfig/v1alpha1
apiVersion: aws.cluster.k8s.io/v1alpha1
kind: AWSMachineProviderConfig
clusterId: {{.VpcName}}
clusterHardware:
aws:
keyPairName: {{.SshKey}}
region: {{.Region}}
hardware:
aws:
instanceType: m4.large
infra: false
vmImage:
awsImage: {{.Image}}
ami:
id: {{.Image}}
instanceType: m4.large
placement:
region: {{.Region}}
availabilityZone: {{.AvailabilityZone}}
subnet:
filters:
- name: "tag:Name"
values:
- {{.ClusterName}}-worker-{{.AvailabilityZone}}
publicIp: true
iamInstanceProfile:
id: {{.ClusterName}}-master-profile
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be -worker-profile?

keyName: tectonic
tags:
- name: tectonicClusterID
value: {{.ClusterID}}
securityGroups:
- filters:
- name: "tag:Name"
values:
- {{.ClusterName}}_worker_sg
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is probably fine for now, but just a thought: If we're going to select security groups this way, we may want to also filter by cluster ID if that's available.

userDataSecret:
name: ignition-worker
versions:
kubelet: 0.0.0
controlPlane: 0.0.0
roles:
- Master

kubelet: ""
controlPlane: ""
4 changes: 2 additions & 2 deletions manifests/clusterapi-controller.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@ spec:
cpu: 100m
memory: 30Mi
- name: aws-machine-controller
image: quay.io/alberto_lamela/aws-machine-controller:mvp # TODO: move this to openshift org
image: quay.io/alberto_lamela/aws-machine-controller:dev # TODO: move this to openshift org
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
command:
- /opt/services/aws-machine-controller
- /machine-controller
args:
- --log-level=debug
resources:
Expand Down
14 changes: 7 additions & 7 deletions pkg/render/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ const (

// OperatorConfig contains configuration for KAO managed add-ons
type OperatorConfig struct {
metav1.TypeMeta `json:",inline"`
VpcName string `json:"vpcName"`
SshKey string `json:"sshKey"`
ClusterName string `json:"clusterName"`
ClusterDomain string `json:"clusterDomain"`
Region string `json:"region"`
Image string `json:"image"`
metav1.TypeMeta `json:",inline"`
ClusterName string `json:"clusterName"`
ClusterID string `json:"clusterID"`
Region string `json:"region"`
AvailabilityZone string `json:"availabilityZone"`
Image string `json:"image"`
Replicas string `json:"replicas"`
}
10 changes: 6 additions & 4 deletions pkg/render/machine-api-operator-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
apiVersion: v1
kind: machineAPIOperatorConfig
vpcName: "test"
sshKey: "test"
clusterName: "test"
clusterDomain: "test"
clusterName: meh
clusterID: b302cf66-f5ff-4d5d-1cc1-0ab2755d2065
image: ami-0e502f54daeb8686e
region: eu-west-1
availabilityZone: eu-west-1a
replicas: 1
124 changes: 59 additions & 65 deletions pkg/render/render_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,104 +35,98 @@ func testRenderManifest(t *testing.T, filename string, config *OperatorConfig, e

func TestClusterManifest(t *testing.T) {
config := OperatorConfig{
VpcName: "TestClusterManifest-VpcName",
SshKey: "TestClusterManifest-SshKey",
ClusterName: "TestClusterManifest-ClusterName",
ClusterDomain: "TestClusterManifest.ClusterDomain", // TODO(frobware) - currently not a template value
Region: "TestClusterManifest-Region",
Image: "TestClusterManifest-Image",
ClusterName: "TestClusterManifest-ClusterName",
ClusterID: "TestClusterManifest-ClusterID",
Region: "TestClusterManifest-Region",
AvailabilityZone: "TestClusterManifest-AvailabilityZone",
Image: "TestClusterManifest-Image",
Replicas: "TestClusterManifest-Replicas",
}

testRenderManifest(t, "../../machines/cluster.yaml", &config, `
---
apiVersion: "cluster.k8s.io/v1alpha1"
kind: Cluster
metadata:
name: test
namespace: test
name: TestClusterManifest-ClusterName
namespace: default
spec:
clusterNetwork:
services:
cidrBlocks:
- "10.0.0.1/24"
- "10.0.0.1/24"
pods:
cidrBlocks:
- "10.0.0.2/24"
serviceDomain: example.com
providerConfig:
value:
apiVersion: awsproviderconfig/v1alpha1
kind: AWSClusterProviderConfig
clusterId: TestClusterManifest-VpcName
clusterVersionRef:
namespace: test
name: test
hardware:
aws:
region: TestClusterManifest-Region
keyPairName: TestClusterManifest-SshKey
defaultHardwareSpec:
aws:
instanceType: m4.large
machineSets:
- nodeType: Master
size: 1
- shortName: infra
nodeType: Compute
infra: true
size: 1
- shortName: compute
nodeType: Compute
size: 1`)
- "10.0.0.2/24"
serviceDomain: unused
`)
}

func TestMachineSetManifest(t *testing.T) {
config := OperatorConfig{
VpcName: "TestMachineSetManifest-VpcName",
SshKey: "TestMachineSetManifest-SshKey",
ClusterName: "TestMachineSetManifest-ClusterName",
ClusterDomain: "TestMachineSetManifest.ClusterDomain", // TODO(frobware) - currently not a template value
Region: "TestMachineSetManifest-Region",
Image: "TestMachineSetManifest-Image",
ClusterName: "TestClusterManifest-ClusterName",
ClusterID: "TestClusterManifest-ClusterID",
Region: "TestClusterManifest-Region",
AvailabilityZone: "TestClusterManifest-AvailabilityZone",
Image: "TestClusterManifest-Image",
Replicas: "TestClusterManifest-Replicas",
}

testRenderManifest(t, "../../machines/machine-set.yaml", &config, `
---
apiVersion: cluster.k8s.io/v1alpha1
kind: MachineSet
metadata:
name: worker
namespace: test
namespace: default
labels:
machineapioperator.openshift.io/cluster: test
sigs.k8s.io/cluster-api-cluster: TestClusterManifest-ClusterName
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
spec:
replicas: 3
replicas: TestClusterManifest-Replicas
selector:
matchLabels:
machineapioperator.openshift.io/machineset: worker
machineapioperator.openshift.io/cluster: test
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: TestClusterManifest-ClusterName
template:
metadata:
labels:
machineapioperator.openshift.io/machineset: worker
machineapioperator.openshift.io/cluster: test
sigs.k8s.io/cluster-api-machineset: worker
sigs.k8s.io/cluster-api-cluster: TestClusterManifest-ClusterName
sigs.k8s.io/cluster-api-machine-role: worker
sigs.k8s.io/cluster-api-machine-type: worker
spec:
providerConfig:
value:
apiVersion: awsproviderconfig/v1alpha1
apiVersion: aws.cluster.k8s.io/v1alpha1
kind: AWSMachineProviderConfig
clusterId: TestMachineSetManifest-VpcName
clusterHardware:
aws:
keyPairName: TestMachineSetManifest-SshKey
region: TestMachineSetManifest-Region
hardware:
aws:
instanceType: m4.large
infra: false
vmImage:
awsImage: TestMachineSetManifest-Image
ami:
id: TestClusterManifest-Image
instanceType: m4.large
placement:
region: TestClusterManifest-Region
availabilityZone: TestClusterManifest-AvailabilityZone
subnet:
filters:
- name: "tag:Name"
values:
- TestClusterManifest-ClusterName-worker-TestClusterManifest-AvailabilityZone
publicIp: true
iamInstanceProfile:
id: TestClusterManifest-ClusterName-master-profile
keyName: tectonic
tags:
- name: tectonicClusterID
value: TestClusterManifest-ClusterID
securityGroups:
- filters:
- name: "tag:Name"
values:
- TestClusterManifest-ClusterName_worker_sg
userDataSecret:
name: ignition-worker
versions:
kubelet: 0.0.0
controlPlane: 0.0.0
roles:
- Master`)
kubelet: ""
controlPlane: ""`)
}