Skip to content

Commit a899648

Browse files
committed
CKS: Externalize control and worker node setup wait time and installation attempts (#38)
1 parent f228c7a commit a899648

File tree

7 files changed

+75
-8
lines changed

7 files changed

+75
-8
lines changed

plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterManagerImpl.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1984,7 +1984,11 @@ public ConfigKey<?>[] getConfigKeys() {
19841984
KubernetesClusterUpgradeTimeout,
19851985
KubernetesClusterUpgradeRetries,
19861986
KubernetesClusterExperimentalFeaturesEnabled,
1987-
KubernetesMaxClusterSize
1987+
KubernetesMaxClusterSize,
1988+
KubernetesControlNodeInstallAttemptWait,
1989+
KubernetesControlNodeInstallReattempts,
1990+
KubernetesWorkerNodeInstallAttemptWait,
1991+
KubernetesWorkerNodeInstallReattempts
19881992
};
19891993
}
19901994
}

plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/KubernetesClusterService.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,30 @@ public interface KubernetesClusterService extends PluggableService, Configurable
9191
true,
9292
ConfigKey.Scope.Account,
9393
KubernetesServiceEnabled.key());
94+
static final ConfigKey<Long> KubernetesControlNodeInstallAttemptWait = new ConfigKey<Long>("Advanced", Long.class,
95+
"cloud.kubernetes.control.node.install.attempt.wait.duration",
96+
"15",
97+
"Time in seconds for the installation process to wait before it re-attempts",
98+
true,
99+
KubernetesServiceEnabled.key());
100+
static final ConfigKey<Long> KubernetesControlNodeInstallReattempts = new ConfigKey<Long>("Advanced", Long.class,
101+
"cloud.kubernetes.control.node.install.reattempt.count",
102+
"100",
103+
"Number of times the offline installation of K8S will be re-attempted",
104+
true,
105+
KubernetesServiceEnabled.key());
106+
final ConfigKey<Long> KubernetesWorkerNodeInstallAttemptWait = new ConfigKey<Long>("Advanced", Long.class,
107+
"cloud.kubernetes.worker.node.install.attempt.wait.duration",
108+
"30",
109+
"Time in seconds for the installation process to wait before it re-attempts",
110+
true,
111+
KubernetesServiceEnabled.key());
112+
static final ConfigKey<Long> KubernetesWorkerNodeInstallReattempts = new ConfigKey<Long>("Advanced", Long.class,
113+
"cloud.kubernetes.worker.node.install.reattempt.count",
114+
"40",
115+
"Number of times the offline installation of K8S will be re-attempted",
116+
true,
117+
KubernetesServiceEnabled.key());
94118

95119
KubernetesCluster findById(final Long id);
96120

plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterResourceModifierActionWorker.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131

3232
import javax.inject.Inject;
3333

34+
import com.cloud.kubernetes.cluster.KubernetesClusterService;
3435
import com.cloud.network.rules.FirewallManager;
3536
import com.cloud.offering.NetworkOffering;
3637
import com.cloud.offerings.dao.NetworkOfferingDao;
@@ -174,6 +175,11 @@ private String getKubernetesNodeConfig(final String joinIp, final boolean ejectI
174175
final String joinIpKey = "{{ k8s_control_node.join_ip }}";
175176
final String clusterTokenKey = "{{ k8s_control_node.cluster.token }}";
176177
final String ejectIsoKey = "{{ k8s.eject.iso }}";
178+
final String installWaitTime = "{{ k8s.install.wait.time }}";
179+
final String installReattemptsCount = "{{ k8s.install.reattempts.count }}";
180+
181+
final Long waitTime = KubernetesClusterService.KubernetesWorkerNodeInstallAttemptWait.value();
182+
final Long reattempts = KubernetesClusterService.KubernetesWorkerNodeInstallReattempts.value();
177183
String pubKey = "- \"" + configurationDao.getValue("ssh.publickey") + "\"";
178184
String sshKeyPair = kubernetesCluster.getKeyPair();
179185
if (StringUtils.isNotEmpty(sshKeyPair)) {
@@ -186,7 +192,8 @@ private String getKubernetesNodeConfig(final String joinIp, final boolean ejectI
186192
k8sNodeConfig = k8sNodeConfig.replace(joinIpKey, joinIp);
187193
k8sNodeConfig = k8sNodeConfig.replace(clusterTokenKey, KubernetesClusterUtil.generateClusterToken(kubernetesCluster));
188194
k8sNodeConfig = k8sNodeConfig.replace(ejectIsoKey, String.valueOf(ejectIso));
189-
195+
k8sNodeConfig = k8sNodeConfig.replace(installWaitTime, String.valueOf(waitTime));
196+
k8sNodeConfig = k8sNodeConfig.replace(installReattemptsCount, String.valueOf(reattempts));
190197
k8sNodeConfig = updateKubeConfigWithRegistryDetails(k8sNodeConfig);
191198

192199
return k8sNodeConfig;

plugins/integrations/kubernetes-service/src/main/java/com/cloud/kubernetes/cluster/actionworkers/KubernetesClusterStartWorker.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,9 @@ private String getKubernetesControlNodeConfig(final String controlNodeIp, final
139139
final String clusterToken = "{{ k8s_control_node.cluster.token }}";
140140
final String clusterInitArgsKey = "{{ k8s_control_node.cluster.initargs }}";
141141
final String ejectIsoKey = "{{ k8s.eject.iso }}";
142+
final String installWaitTime = "{{ k8s.install.wait.time }}";
143+
final String installReattemptsCount = "{{ k8s.install.reattempts.count }}";
144+
142145
final List<String> addresses = new ArrayList<>();
143146
addresses.add(controlNodeIp);
144147
if (!serverIp.equals(controlNodeIp)) {
@@ -150,6 +153,8 @@ private String getKubernetesControlNodeConfig(final String controlNodeIp, final
150153
final String tlsClientCert = CertUtils.x509CertificateToPem(certificate.getClientCertificate());
151154
final String tlsPrivateKey = CertUtils.privateKeyToPem(certificate.getPrivateKey());
152155
final String tlsCaCert = CertUtils.x509CertificatesToPem(certificate.getCaCertificates());
156+
final Long waitTime = KubernetesClusterService.KubernetesControlNodeInstallAttemptWait.value();
157+
final Long reattempts = KubernetesClusterService.KubernetesControlNodeInstallReattempts.value();
153158
k8sControlNodeConfig = k8sControlNodeConfig.replace(apiServerCert, tlsClientCert.replace("\n", "\n "));
154159
k8sControlNodeConfig = k8sControlNodeConfig.replace(apiServerKey, tlsPrivateKey.replace("\n", "\n "));
155160
k8sControlNodeConfig = k8sControlNodeConfig.replace(caCert, tlsCaCert.replace("\n", "\n "));
@@ -161,6 +166,8 @@ private String getKubernetesControlNodeConfig(final String controlNodeIp, final
161166
pubKey += "\n - \"" + sshkp.getPublicKey() + "\"";
162167
}
163168
}
169+
k8sControlNodeConfig = k8sControlNodeConfig.replace(installWaitTime, String.valueOf(waitTime));
170+
k8sControlNodeConfig = k8sControlNodeConfig.replace(installReattemptsCount, String.valueOf(reattempts));
164171
k8sControlNodeConfig = k8sControlNodeConfig.replace(sshPubKey, pubKey);
165172
k8sControlNodeConfig = k8sControlNodeConfig.replace(clusterToken, KubernetesClusterUtil.generateClusterToken(kubernetesCluster));
166173
String initArgs = "";
@@ -241,6 +248,11 @@ private String getKubernetesAdditionalControlNodeConfig(final String joinIp, fin
241248
final String sshPubKey = "{{ k8s.ssh.pub.key }}";
242249
final String clusterHACertificateKey = "{{ k8s_control_node.cluster.ha.certificate.key }}";
243250
final String ejectIsoKey = "{{ k8s.eject.iso }}";
251+
final String installWaitTime = "{{ k8s.install.wait.time }}";
252+
final String installReattemptsCount = "{{ k8s.install.reattempts.count }}";
253+
254+
final Long waitTime = KubernetesClusterService.KubernetesControlNodeInstallAttemptWait.value();
255+
final Long reattempts = KubernetesClusterService.KubernetesControlNodeInstallReattempts.value();
244256
String pubKey = "- \"" + configurationDao.getValue("ssh.publickey") + "\"";
245257
String sshKeyPair = kubernetesCluster.getKeyPair();
246258
if (StringUtils.isNotEmpty(sshKeyPair)) {
@@ -249,6 +261,8 @@ private String getKubernetesAdditionalControlNodeConfig(final String joinIp, fin
249261
pubKey += "\n - \"" + sshkp.getPublicKey() + "\"";
250262
}
251263
}
264+
k8sControlNodeConfig = k8sControlNodeConfig.replace(installWaitTime, String.valueOf(waitTime));
265+
k8sControlNodeConfig = k8sControlNodeConfig.replace(installReattemptsCount, String.valueOf(reattempts));
252266
k8sControlNodeConfig = k8sControlNodeConfig.replace(sshPubKey, pubKey);
253267
k8sControlNodeConfig = k8sControlNodeConfig.replace(joinIpKey, joinIp);
254268
k8sControlNodeConfig = k8sControlNodeConfig.replace(clusterTokenKey, KubernetesClusterUtil.generateClusterToken(kubernetesCluster));

plugins/integrations/kubernetes-service/src/main/resources/conf/k8s-control-node-add.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,14 @@ write_files:
4242
ATTEMPT_ONLINE_INSTALL=false
4343
setup_complete=false
4444
45-
OFFLINE_INSTALL_ATTEMPT_SLEEP=15
46-
MAX_OFFLINE_INSTALL_ATTEMPTS=100
45+
OFFLINE_INSTALL_ATTEMPT_SLEEP={{ k8s.install.wait.time }}
46+
MAX_OFFLINE_INSTALL_ATTEMPTS={{ k8s.install.reattempts.count }}
47+
if [[ -z $OFFLINE_INSTALL_ATTEMPT_SLEEP || $OFFLINE_INSTALL_ATTEMPT_SLEEP -eq 0 ]]; then
48+
OFFLINE_INSTALL_ATTEMPT_SLEEP=15
49+
fi
50+
if [[ -z $MAX_OFFLINE_INSTALL_ATTEMPTS || $MAX_OFFLINE_INSTALL_ATTEMPTS -eq 0 ]]; then
51+
MAX_OFFLINE_INSTALL_ATTEMPTS=100
52+
fi
4753
offline_attempts=1
4854
MAX_SETUP_CRUCIAL_CMD_ATTEMPTS=3
4955
EJECT_ISO_FROM_OS={{ k8s.eject.iso }}

plugins/integrations/kubernetes-service/src/main/resources/conf/k8s-control-node.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,14 @@ write_files:
6262
ATTEMPT_ONLINE_INSTALL=false
6363
setup_complete=false
6464
65-
OFFLINE_INSTALL_ATTEMPT_SLEEP=15
66-
MAX_OFFLINE_INSTALL_ATTEMPTS=100
65+
OFFLINE_INSTALL_ATTEMPT_SLEEP={{ k8s.install.wait.time }}
66+
MAX_OFFLINE_INSTALL_ATTEMPTS={{ k8s.install.reattempts.count }}
67+
if [[ -z $OFFLINE_INSTALL_ATTEMPT_SLEEP || $OFFLINE_INSTALL_ATTEMPT_SLEEP -eq 0 ]]; then
68+
OFFLINE_INSTALL_ATTEMPT_SLEEP=15
69+
fi
70+
if [[ -z $MAX_OFFLINE_INSTALL_ATTEMPTS || $MAX_OFFLINE_INSTALL_ATTEMPTS -eq 0 ]]; then
71+
MAX_OFFLINE_INSTALL_ATTEMPTS=100
72+
fi
6773
offline_attempts=1
6874
MAX_SETUP_CRUCIAL_CMD_ATTEMPTS=3
6975
EJECT_ISO_FROM_OS={{ k8s.eject.iso }}

plugins/integrations/kubernetes-service/src/main/resources/conf/k8s-node.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,14 @@ write_files:
4242
ATTEMPT_ONLINE_INSTALL=false
4343
setup_complete=false
4444
45-
OFFLINE_INSTALL_ATTEMPT_SLEEP=30
46-
MAX_OFFLINE_INSTALL_ATTEMPTS=40
45+
OFFLINE_INSTALL_ATTEMPT_SLEEP={{ k8s.install.wait.time }}
46+
MAX_OFFLINE_INSTALL_ATTEMPTS={{ k8s.install.reattempts.count }}
47+
if [[ -z $OFFLINE_INSTALL_ATTEMPT_SLEEP || $OFFLINE_INSTALL_ATTEMPT_SLEEP -eq 0 ]]; then
48+
OFFLINE_INSTALL_ATTEMPT_SLEEP=30
49+
fi
50+
if [[ -z $MAX_OFFLINE_INSTALL_ATTEMPTS || $MAX_OFFLINE_INSTALL_ATTEMPTS -eq 0 ]]; then
51+
MAX_OFFLINE_INSTALL_ATTEMPTS=40
52+
fi
4753
offline_attempts=1
4854
MAX_SETUP_CRUCIAL_CMD_ATTEMPTS=3
4955
EJECT_ISO_FROM_OS={{ k8s.eject.iso }}

0 commit comments

Comments
 (0)