如何在Karate Framework中使用Kubernetes kubeConfig执行API调用及配置SSL?
在Karate中使用Kube配置文件的证书进行API调用
一、直接使用解码后的PEM证书调用API
首先从kube配置文件中提取client-certificate-data和client-key-data的base64内容,解码为PEM格式文件:
- 解码客户端证书:
echo "<client-certificate-data内容>" | base64 -d > client.crt - 解码客户端密钥:
echo "<client-key-data内容>" | base64 -d > client.key
将生成的client.crt和client.key放到Karate项目的资源目录下,然后在feature文件中配置SSL参数:
Feature: 调用Kubernetes API Background: # 配置SSL客户端证书和密钥 * configure ssl = { clientCert: 'classpath:client.crt', clientKey: 'classpath:client.key' } # 如果密钥有密码,添加clientKeyPassword: '你的密钥密码' Scenario: 获取集群Pod列表 Given url 'https://你的kube-api地址:6443/api/v1/pods' When method get Then status 200
二、将PEM证书转换为SSL密钥库并配置使用
Karate支持JKS或PKCS12格式的密钥库,你可以通过工具将PEM证书转换为密钥库文件:
1. 转换为PKCS12格式
使用OpenSSL将PEM证书和密钥合并为PKCS12文件:
openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -name "kube-client"
执行时会提示设置PKCS12文件的密码,需记录该密码用于后续配置。
2. 转换为JKS格式(可选)
如果需要使用JKS格式,通过keytool工具转换:
keytool -importkeystore -srckeystore client.p12 -srcstoretype PKCS12 -destkeystore client.jks -deststoretype JKS
输入PKCS12文件的密码,再设置JKS文件的新密码即可。
3. 在Karate中配置密钥库
使用PKCS12密钥库:
Feature: 用PKCS12密钥库调用API Background: * configure ssl = { keyStore: 'classpath:client.p12', keyStorePassword: '你的PKCS12密码', keyStoreType: 'PKCS12' } Scenario: 获取集群节点信息 Given url 'https://你的kube-api地址:6443/api/v1/nodes' When method get Then status 200
使用JKS密钥库:
Feature: 用JKS密钥库调用API Background: * configure ssl = { keyStore: 'classpath:client.jks', keyStorePassword: '你的JKS密码' } Scenario: 获取命名空间列表 Given url 'https://你的kube-api地址:6443/api/v1/namespaces' When method get Then status 200
额外说明
- 若需要信任Kube API的CA证书,可将kube配置中
certificate-authority-data解码得到的CA证书添加到信任库,或测试环境下临时禁用证书验证:* configure ssl = { trustAll: true }
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

