-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathk8s.tf
151 lines (123 loc) · 4.26 KB
/
k8s.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
data "openstack_networking_network_v2" "public_network" {
name = "${var.public_network}"
}
resource "openstack_compute_keypair_v2" "k8s" {
name = "${var.pubkey_name}"
public_key = "${file(var.pubkey)}"
}
resource "openstack_networking_network_v2" "network_1" {
name = "${var.env_name}-net"
admin_state_up = "true"
}
resource "openstack_networking_subnet_v2" "subnet_1" {
name = "${var.env_name}-subnet"
network_id = "${openstack_networking_network_v2.network_1.id}"
cidr = "192.168.0.0/24"
ip_version = 4
}
resource "openstack_networking_router_v2" "router_1" {
name = "${var.env_name}-router"
external_gateway = "${data.openstack_networking_network_v2.public_network.id}"
}
resource "openstack_networking_router_interface_v2" "router_interface_1" {
router_id = "${openstack_networking_router_v2.router_1.id}"
subnet_id = "${openstack_networking_subnet_v2.subnet_1.id}"
}
resource "openstack_networking_floatingip_v2" "masterip" {
pool = "${var.public_network}"
}
resource "openstack_compute_instance_v2" "master" {
name = "${var.env_name}-master"
flavor_name = "${var.master_flavor}"
image_name = "${var.master_image}"
key_pair = "${openstack_compute_keypair_v2.k8s.name}"
network {
name = "${var.env_name}-net"
}
security_groups = [
"default",
]
depends_on = [
"openstack_networking_router_interface_v2.router_interface_1",
]
}
resource "openstack_compute_floatingip_associate_v2" "masterip" {
floating_ip = "${openstack_networking_floatingip_v2.masterip.address}"
instance_id = "${openstack_compute_instance_v2.master.id}"
fixed_ip = "${openstack_compute_instance_v2.master.network.0.fixed_ip_v4}"
}
resource "null_resource" "provision_master" {
depends_on = ["openstack_compute_floatingip_associate_v2.masterip"]
connection {
user = "ubuntu"
private_key = "${file("${var.privkey}")}"
host = "${openstack_networking_floatingip_v2.masterip.address}"
}
provisioner "remote-exec" {
script = "assets/bootstrap.sh"
}
provisioner "remote-exec" {
inline = [
"sudo kubeadm init --token ${var.k8s_token} --pod-network-cidr=10.244.0.0/16",
"sudo chown ubuntu /etc/kubernetes/admin.conf",
"KUBECONFIG=/etc/kubernetes/admin.conf kubectl taint nodes --all node-role.kubernetes.io/master-",
]
}
provisioner "file" {
source = "assets/kube-flannel.yml"
destination = "/home/ubuntu/kube-flannel.yml"
}
provisioner "file" {
source = "assets/kube-flannel-rbac.yml"
destination = "/home/ubuntu/kube-flannel-rbac.yml"
}
provisioner "remote-exec" {
inline = [
"KUBECONFIG=/etc/kubernetes/admin.conf kubectl apply -f kube-flannel-rbac.yml",
"KUBECONFIG=/etc/kubernetes/admin.conf kubectl apply -f kube-flannel.yml",
]
}
provisioner "remote-exec" {
script = "assets/check-flannel.sh"
}
}
resource "openstack_compute_instance_v2" "worker" {
count = "${var.worker_count}"
name = "${var.env_name}-worker${count.index}"
flavor_name = "${var.worker_flavor}"
image_name = "${var.worker_image}"
key_pair = "${openstack_compute_keypair_v2.k8s.name}"
network {
name = "${var.env_name}-net"
}
security_groups = [
"default",
]
}
resource "null_resource" "provision_worker" {
count = "${var.worker_count}"
connection {
bastion_host = "${openstack_networking_floatingip_v2.masterip.address}"
user = "ubuntu"
private_key = "${file("${var.privkey}")}"
host = "${element(openstack_compute_instance_v2.worker.*.network.0.fixed_ip_v4, count.index)}"
}
provisioner "remote-exec" {
script = "assets/bootstrap.sh"
}
}
resource "null_resource" "worker_join" {
count = "${var.worker_count}"
depends_on = ["null_resource.provision_worker", "null_resource.provision_master"]
connection {
bastion_host = "${openstack_networking_floatingip_v2.masterip.address}"
user = "ubuntu"
private_key = "${file("${var.privkey}")}"
host = "${element(openstack_compute_instance_v2.worker.*.network.0.fixed_ip_v4, count.index)}"
}
provisioner "remote-exec" {
inline = [
"sudo kubeadm join --token ${var.k8s_token} ${openstack_compute_instance_v2.master.network.0.fixed_ip_v4}:6443",
]
}
}