Skip to content

Commit dc142a7

Browse files
committed
support Docker Host Certificate Authentication type
Signed-off-by: Shuwei Hao <[email protected]>
1 parent 04552e0 commit dc142a7

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,11 @@
234234
<version>1.18</version>
235235
<scope>test</scope>
236236
</dependency>
237+
<dependency>
238+
<groupId>org.jenkins-ci.plugins</groupId>
239+
<artifactId>docker-commons</artifactId>
240+
<version>1.14</version>
241+
</dependency>
237242
</dependencies>
238243

239244

src/main/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesCloud.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.csanchez.jenkins.plugins.kubernetes.pipeline.PodTemplateMap;
3232
import org.csanchez.jenkins.plugins.kubernetes.pod.retention.Default;
3333
import org.csanchez.jenkins.plugins.kubernetes.pod.retention.PodRetention;
34+
import org.jenkinsci.plugins.docker.commons.credentials.DockerServerCredentials;
3435
import org.jenkinsci.plugins.plaincredentials.FileCredentials;
3536
import org.jenkinsci.plugins.plaincredentials.StringCredentials;
3637
import org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl;
@@ -718,7 +719,8 @@ public ListBoxModel doFillCredentialsIdItems(@QueryParameter String serverUrl) {
718719
CredentialsMatchers.instanceOf(
719720
org.jenkinsci.plugins.kubernetes.credentials.TokenProducer.class),
720721
CredentialsMatchers.instanceOf(StandardCertificateCredentials.class),
721-
CredentialsMatchers.instanceOf(StringCredentials.class)), //
722+
CredentialsMatchers.instanceOf(StringCredentials.class),//
723+
CredentialsMatchers.instanceOf(DockerServerCredentials.class)),
722724
CredentialsProvider.lookupCredentials(StandardCredentials.class, //
723725
Jenkins.getInstance(), //
724726
ACL.SYSTEM, //

src/main/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesFactoryAdapter.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
4040
import io.fabric8.kubernetes.client.KubernetesClient;
4141
import jenkins.model.Jenkins;
42+
import org.jenkinsci.plugins.docker.commons.credentials.DockerServerCredentials;
4243
import org.jenkinsci.plugins.kubernetes.credentials.TokenProducer;
4344
import org.jenkinsci.plugins.plaincredentials.FileCredentials;
4445
import org.jenkinsci.plugins.plaincredentials.StringCredentials;
@@ -152,6 +153,10 @@ public KubernetesClient createClient() throws NoSuchAlgorithmException, Unrecove
152153
builder.withClientCertData(Base64.encodeBase64String(certificate.getEncoded()))
153154
.withClientKeyData(pemEncodeKey(key))
154155
.withClientKeyPassphrase(Secret.toString(certificateCredentials.getPassword()));
156+
} else if (credentials instanceof DockerServerCredentials) {
157+
DockerServerCredentials certificateCredentials = (DockerServerCredentials) credentials;
158+
builder.withClientCertData(certificateCredentials.getClientCertificate())
159+
.withClientKeyData(certificateCredentials.getClientKey());
155160
}
156161

157162
if (skipTlsVerify) {
@@ -160,7 +165,11 @@ public KubernetesClient createClient() throws NoSuchAlgorithmException, Unrecove
160165

161166
if (caCertData != null) {
162167
// JENKINS-38829 CaCertData expects a Base64 encoded certificate
163-
builder.withCaCertData(Base64.encodeBase64String(caCertData.getBytes(UTF_8)));
168+
if (credentials instanceof DockerServerCredentials) {
169+
builder.withCaCertData(org.apache.commons.codec.binary.StringUtils.newStringUtf8(caCertData.getBytes(UTF_8)));
170+
} else {
171+
builder.withCaCertData(Base64.encodeBase64String(caCertData.getBytes(UTF_8)));
172+
}
164173
}
165174

166175
builder = builder.withRequestTimeout(readTimeout * 1000).withConnectionTimeout(connectTimeout * 1000);

0 commit comments

Comments
 (0)