Compare commits
5 Commits
09d40761a8
...
5eb79cac28
Author | SHA1 | Date |
---|---|---|
chris | 5eb79cac28 | |
chris | a5348eed9c | |
chris | 2fc2e53cc2 | |
chris | 421a49f6e8 | |
chris | b0f7fe9616 |
|
@ -1,6 +1,6 @@
|
|||
# Setup up k8s cluster
|
||||
|
||||
currently only supports single master, stacked etcd cluster with three to six worker nodes.
|
||||
currently only supports single controller, stacked etcd cluster with three to six worker nodes.
|
||||
|
||||
run:
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import yaml
|
||||
import requests
|
||||
|
||||
ips = {}
|
||||
config = yaml.load(open('hetzner-config.yaml', 'r'))
|
||||
headers = {"Authorization": "Bearer {}".format(config['api_key'])}
|
||||
|
||||
|
||||
def create_server(server_name, server_type='cx11', server_location='ngb1'):
|
||||
location = input(server_name + ' location: ')
|
||||
frontend = {
|
||||
"name": server_name,
|
||||
"server_type": server_type,
|
||||
"location": server_location,
|
||||
"start_after_create": True,
|
||||
"image": "debian-9",
|
||||
"ssh_keys": [key.get('name') for key in config.get('ssh_keys')],
|
||||
"user_data": "#cloud-config\nruncmd:\n- [touch, /root/cloud-init-worked]\n",
|
||||
"automount": False,
|
||||
}
|
||||
resp = requests.post('https://api.hetzner.cloud/v1/servers', headers=headers, json=frontend)
|
||||
ip = resp.json().get('server').get('public_net').get('ipv4').get('ip')
|
||||
frontend_dns = {
|
||||
"ip": ip,
|
||||
"dns_ptr": "{}.{}".format(server_name, config.get('domain'))
|
||||
}
|
||||
requests.post('https://api.hetzner.cloud/v1/servers/{}/actions/change_dns_ptr'.format(
|
||||
resp.json().get('server').get('id')
|
||||
), headers=headers, json=frontend_dns)
|
||||
return ip
|
||||
|
||||
|
||||
for ssh_key in config['ssh_keys']:
|
||||
requests.post('https://api.hetzner.cloud/v1/ssh_keys', headers=headers, json={
|
||||
"name": ssh_key.get('name'),
|
||||
"public_key": ssh_key.get('pubkey'),
|
||||
})
|
||||
|
||||
locations_req = requests.get('https://api.hetzner.cloud/v1/locations', headers=headers)
|
||||
locations = [loc['name'] for loc in locations_req.json().get('locations')]
|
||||
print('valid locations: {}'.format(locations))
|
||||
|
||||
|
||||
for host in ['control01', 'control02', 'control03']:
|
||||
ips[host] = server_create(host)
|
||||
|
||||
|
||||
print("YOUR NEW INVENTORY")
|
||||
print("[frontend]")
|
||||
print("cluster-frontend ansible_ssh_host={}".format(ips['frontend']))
|
||||
|
||||
print("[control]")
|
||||
print("cluster-control01 ansible_ssh_host={}".format(ips['control01']))
|
||||
print("#cluster-control02 ansible_ssh_host={}".format(ips['control02']))
|
||||
print("#cluster-control03 ansible_ssh_host={}".format(ips['control03']))
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
cd host_vars
|
||||
for i in cluster-master01 cluster-master02 cluster-master03 cluster-worker01 cluster-worker02 cluster-worker03 cluster-worker04 cluster-worker05 cluster-worker06
|
||||
for i in cluster-frontend cluster-control01 cluster-control02 cluster-control03 cluster-worker01 cluster-worker02 cluster-worker03 cluster-worker04 cluster-worker05 cluster-worker06
|
||||
do
|
||||
sed -i "s#^wg_secret_key.*#wg_secret_key: $(wg genkey)#" ${i}.yaml
|
||||
pubkey=$(cat ${i}.yaml | yq .wg_secret_key | sed 's/"//g' | wg pubkey)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
api_key: "123"
|
||||
domain: 'cluster.kritis.systems'
|
||||
ssh_keys:
|
||||
- name: your_key
|
||||
pubkey: ssh-ed25519 AAAA1
|
|
@ -0,0 +1,3 @@
|
|||
wg_secret_key: kKQhmkBWXxSTcZX50BstuxfSfpMDgrhA1wldx1d6q0Y=
|
||||
wg_public_key: vOIriQKWsL4haBCVFUCqp25ciBQrPf88CUtkMNQYGSY=
|
||||
wg_ip: 10.42.23.11
|
|
@ -0,0 +1,3 @@
|
|||
wg_secret_key: IIn4Eiy6AXDevSIWfJwG9pme11gnC2DT/ieZuGdB+0M=
|
||||
wg_public_key: +8OofyGdGtmp6/NMGsxcUfUlqctvm/GZeoGj9fNOe2w=
|
||||
wg_ip: 10.42.23.12
|
|
@ -0,0 +1,3 @@
|
|||
wg_secret_key: YM+dYmWJxk5ccTLOLjU+4z/p1gNfMtK6gW0x2Eb8C3s=
|
||||
wg_public_key: RE7Uf3uBnllAk6m5qdbuYdh/GRaoSpHTCY63pVaZF2w=
|
||||
wg_ip: 10.42.23.13
|
|
@ -0,0 +1,3 @@
|
|||
wg_secret_key: mLZKKs1VKW33pIBZJCYZhkfeU/sSLx7h+Eqfk10ue3w=
|
||||
wg_public_key: 3X5My19hXKILg0Sk6uEPprulY8mBayVbucEaMFTromw=
|
||||
wg_ip: 10.42.23.1
|
|
@ -1,3 +0,0 @@
|
|||
wg_secret_key: uC00qKf4vbfQ1Mn/ndWFX9h3JXKDv5ijIXpjchY/2Gc=
|
||||
wg_public_key: 4a0DAKvszfFGxDn8Pq9OMdyZbqiELNalF/bOU+lS4ww=
|
||||
wg_ip: 10.42.23.11
|
|
@ -1,3 +0,0 @@
|
|||
wg_secret_key: QNqBGoi2Vd/J0Zc+s5G0y+yPFqV9kmqH9pGxb5ojDGE=
|
||||
wg_public_key: 8wmpoiFyWhHEAP88dR1bBsZP7bQOKAUkNMki5S/9uFc=
|
||||
wg_ip: 10.42.23.12
|
|
@ -1,3 +0,0 @@
|
|||
wg_secret_key: sM+AFAKPGOcXNalGCGoBbCXG9msG5qF66Wz49CVvL2A=
|
||||
wg_public_key: PhCEr0T1F0ABbFN0ngkIcLQ8OXmQZj+/U3DgAsWXXA8=
|
||||
wg_ip: 10.42.23.13
|
|
@ -1,3 +1,3 @@
|
|||
wg_secret_key: MMw5jxqi+4iO3pS1C99+Hck9jabDssQuQ3yC5Rhsgn0=
|
||||
wg_public_key: GG1AGeGLX2KiCiK+/5wH3JhHDZvKHexfZgVhyX3I8Ag=
|
||||
wg_secret_key: MHD6h2gFkzd2VhCVZtz89Jt9SxdcxwvZRqQ1PDZYBnk=
|
||||
wg_public_key: WOqHy73XjVWjsyt2ZEMkJdXhtmKIx8E9/fPN3o7vcDQ=
|
||||
wg_ip: 10.42.23.21
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
wg_secret_key: KBMAarDchzYpPIq7J9LRUgll5jeo9wJkgjwC+tJc80Y=
|
||||
wg_public_key: CiOc+aYn9xCvLLm2rDEE0HrfY9n/kHggwK0LNRDD0Qg=
|
||||
wg_secret_key: 4Jk5ybHjBIyigcn7NPHgkms7JY1If/R/s8tqbR77MUk=
|
||||
wg_public_key: QUT9iS/yxXKWWRQtLJ+AW5f3inVcwCHC3MLN4KJ3Uk4=
|
||||
wg_ip: 10.42.23.22
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
wg_secret_key: AE9mrGQ3jJCqdWj6ZAHu9mdULr4HyBV5vE1+Wzjo+FY=
|
||||
wg_public_key: hJ2CtHqxeB321TJZD+7bzSMNA1GzEteckUb//6KzjhQ=
|
||||
wg_secret_key: WHc8cheBKC0I57bXUsfSUFDrRoPzafSFKUb7cdThbFs=
|
||||
wg_public_key: nGf7wf8CvVtp1cfdngRda22TiqTMrFQY+KeZds8gnV8=
|
||||
wg_ip: 10.42.23.23
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
wg_secret_key: WFMMXY1HPcIUw2I/2Z8x6wyR0r/CnGYeV6Rmyt6WbXo=
|
||||
wg_public_key: Tc+GCAYefY+MJMwDVqyjLuR0JPvZMFj2xtS9oTAQvSg=
|
||||
wg_secret_key: 6D/qBcJV+fxouP0ljRLYBcOxDPgd25BrKy6GKQWZ+nA=
|
||||
wg_public_key: /HrA+19Ws+7SCDpAKnOpVhjGE7L25dez9PvApdgOIRc=
|
||||
wg_ip: 10.42.23.24
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
wg_secret_key: oEql4vfFXVqdI6HiSDyQsSK19Xs+IzyMrz+7gbRgWWQ=
|
||||
wg_public_key: xQozpZLyW7Gl+xYsLBvegmEtjhB7vBP2sKBJgfP22D4=
|
||||
wg_secret_key: CKKgfHZ+kKLiuY3vu8ICITrZqouf1Hg3ZJuVQJHJ32o=
|
||||
wg_public_key: ZdKh3IbP32xhUmSEMiDCmT28+RtoedhoF8ycE3StGQs=
|
||||
wg_ip: 10.42.23.25
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
wg_secret_key: WCvlYVbX/ieEU6ZLNJcQEAl9YcHASiLMgrmkU9cUElI=
|
||||
wg_public_key: iV+fDDW5bw9ANklUKa9Vbqi+fwJCzqebahcT7nE6PCA=
|
||||
wg_secret_key: aK31k1FRtBeuUwdMd5haafX8czRcz7p8Ij7Ev9BzCHo=
|
||||
wg_public_key: 1QyStXJpOGnsuLOjyOPiT1krelpZGDDrC3peGVL8BzQ=
|
||||
wg_ip: 10.42.23.26
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
[master]
|
||||
cluster-master01 ansible_ssh_host=212.47.246.128
|
||||
#cluster-master02 ansible_ssh_host=
|
||||
#cluster-master03 ansible_ssh_host=
|
||||
#[frontend]
|
||||
#cluster-frontend ansible_ssh_host=
|
||||
|
||||
[control]
|
||||
cluster-control01 ansible_ssh_host=
|
||||
#cluster-control02 ansible_ssh_host=
|
||||
#cluster-control03 ansible_ssh_host=
|
||||
|
||||
[worker]
|
||||
cluster-worker01 ansible_ssh_host=51.15.238.164
|
||||
cluster-worker02 ansible_ssh_host=51.158.115.24
|
||||
cluster-worker03 ansible_ssh_host=51.158.108.159
|
||||
cluster-worker01 ansible_ssh_host=
|
||||
cluster-worker02 ansible_ssh_host=
|
||||
cluster-worker03 ansible_ssh_host=
|
||||
#cluster-worker04 ansible_ssh_host=
|
||||
#cluster-worker05 ansible_ssh_host=
|
||||
#cluster-worker06 ansible_ssh_host=
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
name: docker
|
||||
state: restarted
|
||||
|
||||
- hosts: master
|
||||
- hosts: control
|
||||
tasks:
|
||||
- name: install haproxy
|
||||
apt:
|
||||
|
@ -129,13 +129,13 @@
|
|||
name: haproxy
|
||||
state: restarted
|
||||
|
||||
- hosts: cluster-master01
|
||||
- hosts: cluster-control01
|
||||
tasks:
|
||||
- name: init kubeadm
|
||||
shell: kubeadm init --apiserver-advertise-address 10.42.23.11 --pod-network-cidr=10.244.0.0/16 > kubeadm.log
|
||||
args:
|
||||
creates: kubeadm.log
|
||||
- name: fetch kubeadm.log from master
|
||||
- name: fetch kubeadm.log from control
|
||||
fetch:
|
||||
src: kubeadm.log
|
||||
dest: kubeadm-{{ inventory_hostname }}.log
|
||||
|
@ -152,7 +152,7 @@
|
|||
- hosts: worker
|
||||
tasks:
|
||||
- name: fetch join command
|
||||
command: tail -2 kubeadm-cluster-master01.log
|
||||
command: tail -2 kubeadm-cluster-control01.log
|
||||
register: joincommand
|
||||
delegate_to: localhost
|
||||
|
||||
|
|
|
@ -3,9 +3,9 @@ PrivateKey = {{ wg_secret_key }}
|
|||
ListenPort = 51820
|
||||
|
||||
[Peer]
|
||||
Endpoint = {{ hostvars['cluster-master01'].ansible_ssh_host }}:51820
|
||||
PublicKey = {{ hostvars['cluster-master01'].wg_public_key }}
|
||||
AllowedIPs = {{ hostvars['cluster-master01'].wg_ip }}/32
|
||||
Endpoint = {{ hostvars['cluster-control01'].ansible_ssh_host }}:51820
|
||||
PublicKey = {{ hostvars['cluster-control01'].wg_public_key }}
|
||||
AllowedIPs = {{ hostvars['cluster-control01'].wg_ip }}/32
|
||||
|
||||
[Peer]
|
||||
Endpoint = {{ hostvars['cluster-worker01'].ansible_ssh_host }}:51820
|
||||
|
|
Loading…
Reference in New Issue