Worker node deployment
Change-Id: I1a1c06ee9fa16e2c56374e98f8aaea5da80898cd
This commit is contained in:
parent
99d37b3907
commit
393b75bc08
@ -4,6 +4,6 @@
|
|||||||
echo In inspector.ipxe
|
echo In inspector.ipxe
|
||||||
imgfree
|
imgfree
|
||||||
# NOTE(dtantsur): keep inspection kernel params in [mdns]params in ironic-inspector-image
|
# NOTE(dtantsur): keep inspection kernel params in [mdns]params in ironic-inspector-image
|
||||||
kernel --timeout 60000 http://$(PROVISIONING_IP):80/images/ironic-python-agent.kernel ipa-inspection-callback-url=http://$(PROVISIONING_IP):5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-inspection-dhcp-all-interfaces=1 ipa-collect-lldp=1 initrd=ironic-python-agent.initramfs || goto retry_boot
|
kernel --timeout 60000 http://$(PROVISIONING_IP):80/images/tinyipa-stable-ussuri.vmlinuz ipa-inspection-callback-url=http://$(PROVISIONING_IP):5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-inspection-dhcp-all-interfaces=1 ipa-collect-lldp=1 initrd=tinyipa-stable-ussuri.gz || goto retry_boot
|
||||||
initrd --timeout 60000 http://$(PROVISIONING_IP):80/images/ironic-python-agent.initramfs || goto retry_boot
|
initrd --timeout 60000 http://$(PROVISIONING_IP):80/images/tinyipa-stable-ussuri.gz || goto retry_boot
|
||||||
boot
|
boot
|
||||||
|
@ -7,7 +7,7 @@ rm -f /shared/sed_commands
|
|||||||
for var_name in $( ls ) ; do
|
for var_name in $( ls ) ; do
|
||||||
echo -n s!\$\($var_name\)! >> /shared/sed_commands
|
echo -n s!\$\($var_name\)! >> /shared/sed_commands
|
||||||
cat $var_name >> /shared/sed_commands
|
cat $var_name >> /shared/sed_commands
|
||||||
echo ! >> /shared/sed_commands
|
echo !g >> /shared/sed_commands
|
||||||
export $var_name=$(cat $var_name)
|
export $var_name=$(cat $var_name)
|
||||||
done
|
done
|
||||||
popd
|
popd
|
||||||
|
@ -11,6 +11,8 @@ spec:
|
|||||||
name: cluster-controlplane
|
name: cluster-controlplane
|
||||||
kubeadmConfigSpec:
|
kubeadmConfigSpec:
|
||||||
preKubeadmCommands:
|
preKubeadmCommands:
|
||||||
|
- echo 'root:r00tme' | chpasswd
|
||||||
|
- echo 'ubuntu:r00tme' | chpasswd
|
||||||
- |
|
- |
|
||||||
cat <<EOF | tee /etc/sysctl.d/k8s.conf
|
cat <<EOF | tee /etc/sysctl.d/k8s.conf
|
||||||
net.bridge.bridge-nf-call-ip6tables = 1
|
net.bridge.bridge-nf-call-ip6tables = 1
|
||||||
|
@ -32,3 +32,16 @@ hosts:
|
|||||||
oam: 52:54:00:9b:27:02
|
oam: 52:54:00:9b:27:02
|
||||||
pxe: 52:54:00:b6:ed:02
|
pxe: 52:54:00:b6:ed:02
|
||||||
hardwareProfile: example # defined in the hardwareprofile-example function
|
hardwareProfile: example # defined in the hardwareprofile-example function
|
||||||
|
node03:
|
||||||
|
bootMode: UEFI
|
||||||
|
macAddress: 52:54:00:b6:ed:23
|
||||||
|
bmcAddress: redfish+http://10.23.25.1:8000/redfish/v1/Systems/air-worker-1
|
||||||
|
bmcUsername: username
|
||||||
|
bmcPassword: password
|
||||||
|
ipAddresses:
|
||||||
|
oam-ipv4: 10.23.25.103
|
||||||
|
pxe-ipv4: 10.23.24.103
|
||||||
|
macAddresses:
|
||||||
|
oam: 52:54:00:9b:27:07
|
||||||
|
pxe: 52:54:00:b6:ed:23
|
||||||
|
hardwareProfile: default # defined in the hardwareprofile-example function
|
||||||
|
@ -5,6 +5,5 @@ metadata:
|
|||||||
labels:
|
labels:
|
||||||
name: ironic-vars
|
name: ironic-vars
|
||||||
data:
|
data:
|
||||||
PROVISIONING_IP: "10.23.25.102"
|
PROVISIONING_IP: "10.23.24.102"
|
||||||
DHCP_RANGE: "10.23.25.200,10.23.25.250"
|
DHCP_RANGE: "10.23.24.200,10.23.24.250"
|
||||||
PROVISIONING_INTERFACE: "pxe0"
|
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
# Site-level, phase-specific lists of hosts to generate
|
||||||
|
# This is used by the hostgenerator-m3 function to narrow down the site-level
|
||||||
|
# host-catalogue to just the hosts needed for a particular phase.
|
||||||
|
apiVersion: airshipit.org/v1alpha1
|
||||||
|
kind: VariableCatalogue
|
||||||
|
metadata:
|
||||||
|
name: host-generation-catalogue
|
||||||
|
hosts:
|
||||||
|
m3:
|
||||||
|
- node03
|
@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../../../../../function/hostgenerator-m3
|
||||||
|
- ../../../shared/catalogues/
|
||||||
|
- host-generation.yaml
|
||||||
|
|
||||||
|
transformers:
|
||||||
|
- ../../../../../function/hostgenerator-m3/replacements
|
@ -0,0 +1,48 @@
|
|||||||
|
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3
|
||||||
|
kind: KubeadmConfigTemplate
|
||||||
|
metadata:
|
||||||
|
name: worker-1
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
joinConfiguration:
|
||||||
|
nodeRegistration:
|
||||||
|
name: '{{ ds.meta_data.name }}'
|
||||||
|
kubeletExtraArgs:
|
||||||
|
node-labels: 'metal3.io/uuid={{ ds.meta_data.uuid }},node-type=worker'
|
||||||
|
provider-id: 'metal3://{{ ds.meta_data.uuid }}'
|
||||||
|
feature-gates: "IPv6DualStack=true"
|
||||||
|
ntp:
|
||||||
|
enabled: true
|
||||||
|
servers:
|
||||||
|
- 135.188.34.124
|
||||||
|
- 135.38.244.16
|
||||||
|
- 135.188.34.84
|
||||||
|
preKubeadmCommands:
|
||||||
|
- echo 'root:r00tme' | chpasswd
|
||||||
|
- echo 'ubuntu:r00tme' | chpasswd
|
||||||
|
- |
|
||||||
|
cat <<EOF | tee /etc/sysctl.d/k8s.conf
|
||||||
|
net.bridge.bridge-nf-call-ip6tables = 1
|
||||||
|
net.bridge.bridge-nf-call-iptables = 1
|
||||||
|
EOF
|
||||||
|
- sysctl --system
|
||||||
|
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
||||||
|
- curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
|
||||||
|
- add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
||||||
|
- echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list
|
||||||
|
- apt-get update
|
||||||
|
- apt-get install -y
|
||||||
|
docker-ce="$(apt policy docker-ce | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )"
|
||||||
|
docker-ce-cli="$(apt policy docker-ce-cli | grep 19.03.9 | sort | head -n 1 | tr -s " " | cut -d ' ' -f 2 )"
|
||||||
|
containerd.io
|
||||||
|
- swapoff -a
|
||||||
|
- apt-get install -y kubelet=1.18.6-00 kubeadm=1.18.6-00
|
||||||
|
- apt-mark hold kubelet kubeadm
|
||||||
|
- systemctl mask ntp
|
||||||
|
- systemctl enable --now systemd-timesyncd
|
||||||
|
users:
|
||||||
|
- name: deployer
|
||||||
|
sshAuthorizedKeys:
|
||||||
|
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDK5jnOafJwnoN+vp77LgayzLZ7O6tu96cObzwjIEwOowi2KHTk+G4sUXzE4mt2QbPTbyOF45d/omcRZYixrTmYwwtJ9QGPbwWw/qpCRzVo5uV4qbwBd3iRUqXryOmZRCCFac678JXZS9f8AfOP9rHkh2jqhA6dJdtvqYTOpPLtmw8pYjScH/YqBXZObNSFS5PlSPl901UhZH4FNUAuYeR9JGY99wgM+R9XHRRgfBPJzwzvOQ7ZYfvxb+n4TuBr7u7jZtYC+pmG/eOYbIt2/vexO0y/rNomtC+hjDAXZO2VFwHejYW6r+ZPpkNrdr+5U8s0aENGg4BJkVa2n3LwUrZF segorov@node1
|
||||||
|
sudo: ALL=(ALL) NOPASSWD:ALL
|
@ -0,0 +1,7 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
- kubeadmconfigtemplate.yaml
|
||||||
|
- metal3machinetemplate.yaml
|
||||||
|
- machinedeployment.yaml
|
@ -0,0 +1,29 @@
|
|||||||
|
apiVersion: cluster.x-k8s.io/v1alpha3
|
||||||
|
kind: MachineDeployment
|
||||||
|
metadata:
|
||||||
|
name: worker-1
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/cluster-name: target-cluster
|
||||||
|
spec:
|
||||||
|
clusterName: target-cluster
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
cluster.x-k8s.io/cluster-name: target-cluster
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
cluster.x-k8s.io/cluster-name: target-cluster
|
||||||
|
spec:
|
||||||
|
clusterName: target-cluster
|
||||||
|
version: v1.18.3
|
||||||
|
bootstrap:
|
||||||
|
configRef:
|
||||||
|
name: worker-1
|
||||||
|
apiVersion: bootstrap.cluster.x-k8s.io/v1alpha3
|
||||||
|
kind: KubeadmConfigTemplate
|
||||||
|
infrastructureRef:
|
||||||
|
name: worker-1
|
||||||
|
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
|
||||||
|
kind: Metal3MachineTemplate
|
||||||
|
---
|
@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha3
|
||||||
|
kind: Metal3MachineTemplate
|
||||||
|
metadata:
|
||||||
|
name: worker-1
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
image:
|
||||||
|
url: http://10.23.24.1:8099/target-image.qcow2
|
||||||
|
checksum: http://10.23.24.1:8099/target-image.qcow2.md5sum
|
@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
generators:
|
||||||
|
- ../hostgenerator
|
||||||
|
|
||||||
|
commonLabels:
|
||||||
|
airshipit.org/k8s-role: controlplane-host
|
@ -60,6 +60,7 @@
|
|||||||
- name: clone document model
|
- name: clone document model
|
||||||
command: git clone -q {{ airship_config_primary_repo_url }} {{ remote_work_dir }}
|
command: git clone -q {{ airship_config_primary_repo_url }} {{ remote_work_dir }}
|
||||||
when: remote_work_dir is defined
|
when: remote_work_dir is defined
|
||||||
|
|
||||||
- name: get VM config(MACs and bootMode) from BareMetalHost objects
|
- name: get VM config(MACs and bootMode) from BareMetalHost objects
|
||||||
include_tasks:
|
include_tasks:
|
||||||
file: get-vm-config.yaml
|
file: get-vm-config.yaml
|
||||||
@ -69,6 +70,7 @@
|
|||||||
loop:
|
loop:
|
||||||
- { name: 'target', path: 'ephemeral/controlplane' }
|
- { name: 'target', path: 'ephemeral/controlplane' }
|
||||||
- { name: 'ephemeral', path: 'ephemeral/bootstrap' }
|
- { name: 'ephemeral', path: 'ephemeral/bootstrap' }
|
||||||
|
- { name: 'worker', path: 'target/workers' }
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: roleinputvar
|
loop_var: roleinputvar
|
||||||
|
|
||||||
@ -96,6 +98,7 @@
|
|||||||
target_vm_vcpus: 2
|
target_vm_vcpus: 2
|
||||||
target_vms_count: 1
|
target_vms_count: 1
|
||||||
worker_disk_size: 10G
|
worker_disk_size: 10G
|
||||||
|
worker_vm_cfg: "{{ worker_vm_cfg }}"
|
||||||
worker_vm_memory_mb: 1024
|
worker_vm_memory_mb: 1024
|
||||||
worker_vm_vcpus: 1
|
worker_vm_vcpus: 1
|
||||||
worker_vms_count: 1
|
worker_vms_count: 1
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
- ./tools/deployment/31_deploy_initinfra_target_node.sh
|
- ./tools/deployment/31_deploy_initinfra_target_node.sh
|
||||||
- ./tools/deployment/32_cluster_init_target_node.sh
|
- ./tools/deployment/32_cluster_init_target_node.sh
|
||||||
- ./tools/deployment/33_cluster_move_target_node.sh
|
- ./tools/deployment/33_cluster_move_target_node.sh
|
||||||
|
- ./tools/deployment/34_deploy_worker_node.sh
|
||||||
|
|
||||||
- name: "Run gate scripts"
|
- name: "Run gate scripts"
|
||||||
include_role:
|
include_role:
|
||||||
|
@ -170,7 +170,7 @@
|
|||||||
name: libvirt-domain
|
name: libvirt-domain
|
||||||
vars:
|
vars:
|
||||||
libvirt_domain:
|
libvirt_domain:
|
||||||
boot_mode: UEFI
|
boot_mode: "{{ chosen_flavor.worker_vm_cfg[vm_index|int - 1].boot_mode | default('UEFI') }}"
|
||||||
enable_vnc: true
|
enable_vnc: true
|
||||||
console_log_enabled: true
|
console_log_enabled: true
|
||||||
state: shutdown
|
state: shutdown
|
||||||
@ -188,9 +188,9 @@
|
|||||||
pool: "{{ airship_gate_names.pool }}"
|
pool: "{{ airship_gate_names.pool }}"
|
||||||
interfaces:
|
interfaces:
|
||||||
- network: "{{ airship_gate_names.nat_network }}"
|
- network: "{{ airship_gate_names.nat_network }}"
|
||||||
mac: ""
|
mac: "{{ chosen_flavor.worker_vm_cfg[vm_index|int - 1].nat_mac | default('') }}"
|
||||||
- network: "{{ airship_gate_names.provision_network }}"
|
- network: "{{ airship_gate_names.provision_network }}"
|
||||||
mac: ""
|
mac: "{{ chosen_flavor.worker_vm_cfg[vm_index|int - 1].provision_mac | default('') }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: vm_index
|
loop_var: vm_index
|
||||||
with_sequence: "start=1 end={{ chosen_flavor.worker_vms_count }}"
|
with_sequence: "start=1 end={{ chosen_flavor.worker_vms_count }}"
|
||||||
|
@ -38,5 +38,5 @@ airship_gate_names:
|
|||||||
target_volume_prefix: "vol_target"
|
target_volume_prefix: "vol_target"
|
||||||
ephemeral_volume: "vol_ephemeral"
|
ephemeral_volume: "vol_ephemeral"
|
||||||
pool: airship
|
pool: airship
|
||||||
worker_vm_prefix: "air-target"
|
worker_vm_prefix: "air-worker"
|
||||||
worker_volume_prefix: "vol_worker"
|
worker_volume_prefix: "vol_worker"
|
||||||
|
48
tools/deployment/34_deploy_worker_node.sh
Executable file
48
tools/deployment/34_deploy_worker_node.sh
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
set -xe
|
||||||
|
|
||||||
|
#Default wait timeout is 3600 seconds
|
||||||
|
export TIMEOUT=${TIMEOUT:-3600}
|
||||||
|
export KUBECONFIG=${KUBECONFIG:-"$HOME/.airship/kubeconfig"}
|
||||||
|
|
||||||
|
echo "Switch context to target cluster and set manifest"
|
||||||
|
airshipctl config use-context target-cluster-admin@target-cluster
|
||||||
|
airshipctl config set-context target-cluster-admin@target-cluster --manifest dummy_manifest
|
||||||
|
|
||||||
|
echo "Stop ephemeral node"
|
||||||
|
sudo virsh destroy air-ephemeral
|
||||||
|
|
||||||
|
echo "Deploy worker node"
|
||||||
|
airshipctl phase apply workers --debug
|
||||||
|
|
||||||
|
#Wait till node is created
|
||||||
|
end=$(($(date +%s) + $TIMEOUT))
|
||||||
|
echo "Waiting $TIMEOUT seconds for node to be provisioned."
|
||||||
|
while true; do
|
||||||
|
if (kubectl --request-timeout 20s --kubeconfig $KUBECONFIG get node node03 | grep -qw Ready) ; then
|
||||||
|
echo -e "\nGet node status"
|
||||||
|
kubectl --kubeconfig $KUBECONFIG get node
|
||||||
|
break
|
||||||
|
else
|
||||||
|
now=$(date +%s)
|
||||||
|
if [ $now -gt $end ]; then
|
||||||
|
echo -e "\nWorker node is not ready before TIMEOUT."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo -n .
|
||||||
|
sleep 15
|
||||||
|
fi
|
||||||
|
done
|
@ -98,6 +98,7 @@
|
|||||||
- ./tools/deployment/31_deploy_initinfra_target_node.sh
|
- ./tools/deployment/31_deploy_initinfra_target_node.sh
|
||||||
- ./tools/deployment/32_cluster_init_target_node.sh
|
- ./tools/deployment/32_cluster_init_target_node.sh
|
||||||
- ./tools/deployment/33_cluster_move_target_node.sh
|
- ./tools/deployment/33_cluster_move_target_node.sh
|
||||||
|
- ./tools/deployment/34_deploy_worker_node.sh
|
||||||
serve_dir: /srv/iso
|
serve_dir: /srv/iso
|
||||||
serve_port: 8099
|
serve_port: 8099
|
||||||
voting: false
|
voting: false
|
||||||
|
Loading…
Reference in New Issue
Block a user