Skip to content

Instantly share code, notes, and snippets.

@swamibluedata
Last active June 29, 2020 18:14
Show Gist options
  • Save swamibluedata/7f3fee42614cd8a62ebd4f1c9733120f to your computer and use it in GitHub Desktop.
Save swamibluedata/7f3fee42614cd8a62ebd4f1c9733120f to your computer and use it in GitHub Desktop.
f().
ClientCertFromKubeconfig = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4akNDQWRxZ0F3SUJBZ0lJZkY0OFZJcTRFZmN3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TURBek1EVXhPREl6TVRGYUZ3MHlNVEF6TURVeE9ESXpNVFJhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXVJL1c1eTA0NEZPUWlwSlEKclovSjBINW50VmhwbkQ5cUZNaWg0L3kyQVdKMDNBd3NmbU1HbE81d3RnZUNwSGRFZFdzQ05yWDE2N3Y3RUtWVApxUU1MWFBmN1Njd0Z4R1VNUVdaZUZHMTJjc2wzMmxkbEdMc1FtM24vSk5EM1NlZVU5N0Q2cHhMTHRQK2J3UE1wClZkRm8zZG1ER1MwUEtEd3RWY0prdVZNbU1jMFRaY3ovWmN0YUVySVpxUTZqZHdTZWM2NzQ1VDJiOG1nS0JkZ0kKRjhnS2pFQnVCNEFRbzd3OXRuQjhnWjczZUdZb203Q215MGJaYzRRQnBqUWk2V1YzL2tDeExHbW5hSVZDOFRoOQo3VldsTTFZaDB1WDdUbTlrVndwQnZOYVd6UXllTlU5K0RnZmVsRHUzTGdEY2xQM3NZYTB3WWNHci9xUXVDRjVmCkN1QkxoUUlEQVFBQm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFDZVBNV0toUERZeTlJQ3ByY2ErblRITFU3MjY5Y0MwNWc3agp4SmE3L2VsTkF6VUpJTmZBdEFrd25OV1BDcmgweWJTYTNwS01oZFhmbWVJRlpQTU0wUS95Mi85cldqeC80Tm4yCk50b2djRDJDZ1NrY3hlQmNaMUkrNW1TZFlWNmVMUGZaejJiMEF3ZjM5S1hpdCtUWTd3ZlJSRXlMSWZ2Q1QvYnEKOGx3bmkzSjM1bUs5N1I3Nm9nbm8xaXhnSDFmZ0VsNEhxaE1ZVWR4cCs4Y0xLZW5tYXQrM1ZoTGFzR1dsaDdhQgpJVFlMOEZsK1BnRTViUlpRanpzdm1BMVQreFJSMnVySWlEYTBGa0h5dUJtMzk1aUgzM3kxSVdLOUpsUWYydVNyCmFmWWRSMjhDU0pIalU1TG1ORjNaMU1WWDVadlBsa2tIUTFpS0JiRG81M0s3Z1o4bXAyST0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=".
ClientCert = base64:decode(ClientCertFromKubeconfig).
ClientKeyFromKubeConfig = "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdUkvVzV5MDQ0Rk9RaXBKUXJaL0owSDVudFZocG5EOXFGTWloNC95MkFXSjAzQXdzCmZtTUdsTzV3dGdlQ3BIZEVkV3NDTnJYMTY3djdFS1ZUcVFNTFhQZjdTY3dGeEdVTVFXWmVGRzEyY3NsMzJsZGwKR0xzUW0zbi9KTkQzU2VlVTk3RDZweExMdFArYndQTXBWZEZvM2RtREdTMFBLRHd0VmNKa3VWTW1NYzBUWmN6LwpaY3RhRXJJWnFRNmpkd1NlYzY3NDVUMmI4bWdLQmRnSUY4Z0tqRUJ1QjRBUW83dzl0bkI4Z1o3M2VHWW9tN0NtCnkwYlpjNFFCcGpRaTZXVjMva0N4TEdtbmFJVkM4VGg5N1ZXbE0xWWgwdVg3VG05a1Z3cEJ2TmFXelF5ZU5VOSsKRGdmZWxEdTNMZ0RjbFAzc1lhMHdZY0dyL3FRdUNGNWZDdUJMaFFJREFRQUJBb0lCQUZiTW56OWVEMC9CUFV0TwpnTThIUlR6ZkZoczlsMzI2ZlVPRkVFNU8vYkl0QWRTempRRnJ4UjZwL1N3KzMveEZjMWJkbXM3c1NOb3pNR0tsCnZuRFFVN25IanRFb09OWWl4OTdDTENEalVqK3Q3TVl0TUFpdmdhSDlnRGRxWjhMRVBWVTRVTW5lbHh0cTAyK3QKYkpWRnhWSUJDQjBCQ2czY0wxNFQ3SmNVT2ZSVk44eVREbU1FcE9HaTh2eWM2WUNHMi9SU2IxczZlZEhSZmRLbQpuWlBNaTN0NTJ5UUpYb3NzSUlFK2FoazhKTjlhVkJiRHNSQ0lvRzhTakV0Ny9wd0NmZjY1TnN5c3VMR1BJUU9JCk14Z2VRMlFoanlWK0ZEYzZOdXBTeXV0YVpta0VEL3EyT2ZBZmExMXpPRmJyaG1HSzFETmlFd2tNYnZYNWNsRUcKQW9zNkFZRUNnWUVBNDRmc0RTamRUN24rNk0xSjVpUTM0cXZXZGE0UTI4M053TlF0TWRYQnorSmJJODFZMDE1UwpRcGVTZ3JwTE11SE9SRmRaVDM2WnpPd052RXBzZVFoR3FpRDZnbm92aExqdng2cDRZMWN1V2R4U0VqNlBaL0gzCm56UDdsZjlGOWhVZ2VXQkxFNWl5Y3dBVGJ1YmlwWEloYlJ3REVIUTl3cVg5Z3VCOEZ4R21hdlVDZ1lFQXo2ZVIKalVYS3RXU1VIMFZBb0pMVmlKdDlZbTFjNmt6dzd6M1N4T1U3UGhHZm1YdElaQjc0S1ZzSy81UTJLbEpDbk9EUwp6SmR1S3BUMWdQWFphNmNTRUNhYW15ZFhuQXdZU3Qxc1lHc3ZVbDBCTmExeDBpaVI1aGIzY0FtWisyZlJXNXhGClIwV3llMjk5cXREdG9ldzNURDFqeFlDRDFCQkZkS0lHa0hTMkpGRUNnWUVBeWZ0bFh5RkJwWDdWZlZDUUk0OVAKVlJkNllDbFBxZkIra0lsS1BZMG1haWJsQlZsTFd3ZkdPbnRYZ2xsaVhCNzcvc3NUNjIvVmxJYVFndkFHYjBNYgpoL2VTcXJWUTdaOUdySmIySENuT2FkTWR3RGh0RWJkSlBMam13L2RDNGZ0TFFyUnFzVkRDU1RodUIrdEtrOWhICk9CYS8yYUYzR2c1RWlDUkR4QzdVN3VrQ2dZRUFzQUhyYUNBWTRray9GNFkrY2h3akxDZ0hUZTgraTBYdURncUwKNU9JYnBjK1FSS3B2UUpYVGFGSkg3enV6OFlsSjl1akZKQzdTYlB0WFlCaUNVaklKS0hGZ0tGUmZlTi96a3prOQpERGl0b3BVOFdrQUtNc1M2YlpsWDM3bnpyMWxlNWRSK0VCd3VYVnV4MjZBOVd6cjU0QUJFMmZuRlEzRUxQZ0c3CnFLT1VZeEVDZ1lBbFZkd044QjFiSzBvL0ZhZ0V1amNYWEZLTkhHa3JaRWIwMXNIT1hNZFZ6cTlBb2FBaEdDOCsKc0pBeWdSZ0ZYV1I2K3F3ZjJsaHAxMHdJZUFwQ2VXOTVKREpYdm81UmJadTd4S085MWs5R1k5SE9OM3RWUGpRaAo1MHB1NkVlUURpQkdjbjZZS2l4UEw0a3M2Tm1FMzNReVVtZ0dGNFFaMHdENnRZVFJ5Y2d3dXc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=".
ClientKey = base64:decode(ClientKeyFromKubeConfig).
% Get der encoded binary for cert
[PemEntry] = public_key:pem_decode(ClientCert).
PemCert = public_key:pem_entry_decode(PemEntry).
DerEncodedCert = public_key:der_encode(element(1, PemCert), PemCert).
% Get der encoded binary for private key
[PemKeyEntry] = public_key:pem_decode(ClientKey).
PemKeyCert = public_key:pem_entry_decode(PemKeyEntry).
DerEncodedKey = {element(1, PemKeyCert), public_key:der_encode(element(1, PemKeyCert), PemKeyCert)}.
% Set ssl options. NOTE verify_none. We can add cacert data here as well if needed
SslOpts = [{verify, verify_none}, {cert, DerEncodedCert}, {key, DerEncodedKey}].
httpc:set_options([{keep_alive_timeout, 5000}, {max_sessions, 1}, {verbose, false}]).
% Url from kubeconfig
ServerUrl = "https://16.143.21.100:10000".
Url = ServerUrl ++ "/api/v1/nodes".
HttpOpts = [{timeout, 60*1000},
{connect_timeout, 30*1000},
{ssl, SslOpts}],
httpc:request(get, {Url, []}, HttpOpts, []).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment