使用https访问kubernetes

使用https访问kubernetes的方式

本文介绍三种使用https协议访问kubernetes集群的方式:(1)curl (2) fabric8 API(3) 使用Rest API

kubernetes集群的生成的安全认证文件

apiserver.crt apiserver.key
ca.crt ca.key ca.srl
server.crt server.csr server.key

curl访问kubernetes

将kubernetes集群的认证文件拷贝到要访问kubernetes集群的机器上
例如:拷贝到/root/kubernetes

cd /root/kubernetes
curl -k --cert ./server.crt --key ./server.key -X GET https://192.168.1.100:6443/api/v1/nodes

fabric8 API访问kubernetes集群

public class Fabric8ioAPITest {
    
    private KubernetesClient client;
    @Before
    public void connectTest(){
         Config config = new ConfigBuilder().withMasterUrl("https://192.168.1.100:6443")
                .withTrustCerts(true)
                .withCaCertFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"k8s/product/ca.crt")
                .withClientCertFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"k8s/product/server.crt")
                .withClientKeyFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"k8s/product/server.key")
                .build();
      client = new DefaultKubernetesClient(config);
    }
    
    @Test
    public void listDeploymentTest(){
        DeploymentList list = client.extensions().deployments().list();
        for(Deployment deployment:list.getItems()){
            System.out.println(deployment.getMetadata().getName());
        }
    }
    
}

使用Rest API访问kubernetes集群

kubernetes-client 的2.2.7版本目前没有提供访问statefulset的功能,所以需要使用Rest API来操作

public class KubernetesRestAPITest {
    
  @Test
  public void testk8s(){
    Config config = new ConfigBuilder().withMasterUrl("https://192.168.1.100:6443")
               .withTrustCerts(true)
               .withCaCertFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"k8s/staging/ca.crt")
               .withClientCertFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"k8s/staging/server.crt")
               .withClientKeyFile(Thread.currentThread().getContextClassLoader().getResource("").getPath()+"k8s/staging/server.key")
               .build();
    OkHttpClient k8sClient=HttpClientUtils.createHttpClient(config);
    Request k8sRequest = new Request.Builder().url("https://192.168.1.100:6443/apis/apps/v1beta1/namespaces/default/statefulsets/").build();
    Call call = k8sClient.newCall(k8sRequest); 
    try {
      Response k8sresponse = call.execute();
      System.out.println(k8sresponse.body().string());
    } catch (IOException e) {
        e.printStackTrace();
    }
  }
}

你可能感兴趣的:(使用https访问kubernetes)