<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abhishek Tiwari</title>
    <description>The latest articles on DEV Community by Abhishek Tiwari (@abhishektiwari).</description>
    <link>https://dev.to/abhishektiwari</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F52832%2Fec282aa4-e02b-4563-8885-73dc1d7603d9.png</url>
      <title>DEV Community: Abhishek Tiwari</title>
      <link>https://dev.to/abhishektiwari</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhishektiwari"/>
    <language>en</language>
    <item>
      <title>Introducing JWT Debugger App</title>
      <dc:creator>Abhishek Tiwari</dc:creator>
      <pubDate>Fri, 29 May 2020 16:58:12 +0000</pubDate>
      <link>https://dev.to/axioms/introducing-jwt-debugger-app-2alo</link>
      <guid>https://dev.to/axioms/introducing-jwt-debugger-app-2alo</guid>
      <description>&lt;p&gt;&lt;a href="https://tools.ietf.org/html/rfc7519" rel="noopener noreferrer"&gt;JSON Web Token&lt;/a&gt; is a compact yet URL-safe token primarily used for OAuth 2 and OpenID based authentication and authorization. A JWT token represents a set of claims as a JSON object that is encoded in a JSON Web Signature (JWS) structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  JWT Token
&lt;/h2&gt;

&lt;p&gt;A JWT token is made of three URL-safe portions header, payload, and signature separated by period ('.') characters. Each component contains a base64url-encoded value. For instance, the following string represents a JWT token&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1czNvcmphczc5bDAzOHBrMWJwNmoxZCIsIm5hbWUiOiJKb2huIERvZSIsImp0aSI6Ijc4ZjRnMWpkam5naTBpMzJveGtuZCIsImV4cCI6MTU5MDc2OTE1OH0.rP0Ykkr1jjzErb14OAeNTlCSSGpuKQaxRa2hO3-2Olc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Decoding a token
&lt;/h2&gt;

&lt;p&gt;When you decode a JWT token you get a JSON header and JSON payload. The overall token decoding process is really straightforward. You take the first portion, Base64url decode it and remove any line breaks, whitespace, or other additional characters which gives you header. You take the second portion and Base64url decode it and remove any line breaks, whitespace, or other additional characters which gives you payload.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Token Header decoded from eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;alg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;HS256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;typ&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JWT&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Token Payload decoded from eyJzdWIiOiJ1czNvcmphczc5bDAzOHBrMWJwNmoxZCIsIm5hbWUiOiJKb2huIERvZSIsImp0aSI6Ijc4ZjRnMWpkam5naTBpMzJveGtuZCIsImV4cCI6MTU5MDc2OTE1OH0&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sub&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;us3orjas79l038pk1bp6j1d&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John Doe&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;jti&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;78f4g1jdjngi0i32oxknd&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;exp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1590769158&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Token validation
&lt;/h2&gt;

&lt;p&gt;Validation of the token requires signing key or secrete used to create the signature portion of the token. Signing algorithm is described by &lt;code&gt;alg&lt;/code&gt; claim the token header. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the signing algorithm belongs the family of asymmetrical algorithms i.e. Rivest–Shamir–Adleman (RSA) or Elliptic Curve Digital Signature Algorithm (ECDSA) then you will need the public version of the private key used for token signing. The public key can be in JSON Web Key (JWK) format or PEM format. If you are using an OpenID Connect compliant authorizations server then the public side of JWK keys are served by a JSON Web Key Set (JWKS) endpoint. A JWKS endpoint returns a set of keys which contains the one or more public keys.&lt;/li&gt;
&lt;li&gt;If the signing algorithm belongs to the family of symmetrical algorithms HMAC (sometimes expanded as either keyed-hash message authentication code or hash-based message authentication code) you will need the shared key or secret used to sign the token.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is an example of &lt;a href="https://www.googleapis.com/oauth2/v3/certs" rel="noopener noreferrer"&gt;JWKS endpoint&lt;/a&gt; of Google OAuth 2 server. JWKS endpoint may return more than one public key so you identify relevant key matching the &lt;code&gt;kid&lt;/code&gt; parameter of token header and JWK key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"keys"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"e"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"AQAB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"alg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"RS256"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"use"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"sig"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"n"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"qx9oubekMS3x-mmgPJOUeoPJH9aoYwlDfElkRk2XfQnRmsfbxVc8Gna6V8avfWpBcXuyTMkJ4_hmk4Ra3x4KMwpQ3XVZGtFvP2PwTHKbtf47if-gVsh5PZlHovKOS1ixTnagfidzBGpnwAGGSyrIDSVOxPC6GcOIxWtJ56AZ6kcHtI9zGO4AE8T8-TXEgIkUfby-AQCFxzlXDsA_zxWbjka0gscAqiYESB5JLjMrxNWwEPhlvIRO7LospdwYTjZteLAAC5OEWPMlxI6laSB9TzPWLHMsNNEe6_YOylp2sMSwslOb9FFsP5KVaVdBBLwHwFf7ncVaHExFqhwTHIoS8Q"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"kty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"RSA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"kid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"960a7e8e8341ed752f12b186fa129731fe0b04c0"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"n"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"zK8PHf_6V3G5rU-viUOL1HvAYn7q--dxMoUkt7x1rSWX6fimla-lpoYAKhFTLUELkRKy_6UDzfybz0P9eItqS2UxVWYpKYmKTQ08HgUBUde4GtO_B0SkSk8iLtGh653UBBjgXmfzdfQEz_DsaWn7BMtuAhY9hpMtJye8LQlwaS8ibQrsC0j0GZM5KXRITHwfx06_T1qqC_MOZRA6iJs-J2HNlgeyFuoQVBTY6pRqGXa-qaVsSG3iU-vqNIciFquIq-xydwxLqZNksRRer5VAsSHf0eD3g2DX-cf6paSy1aM40svO9EfSvG_07MuHafEE44RFvSZZ4ubEN9U7ALSjdw"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"kty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"RSA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"kid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"fb8ca5b7d8d9a5c6c6788071e866c6c40f3fc1f9"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"e"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"AQAB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"alg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"RS256"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
         &lt;/span&gt;&lt;span class="nl"&gt;"use"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"sig"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, the use of JWKS endpoint for token validation is recommended as it is safe and does not require sharing of the secret key between parties.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a JWT Debugger
&lt;/h2&gt;

&lt;p&gt;If you are a developer working with JWT tokens then most likely you use a debugger tool to decode and validate your token. &lt;a href="https://jwt.io/" rel="noopener noreferrer"&gt;JWT.io&lt;/a&gt; is probably one of the most popular out there. JWT.io is an amazing tool but if you are working with sensitive tokens probably you want to avoid pasting them online which is why we created a cross-platform interactive &lt;a href="https://jwtdebugger.app/" rel="noopener noreferrer"&gt;JWT Debugger App&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk2klmq70lzg29dfzj3mz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk2klmq70lzg29dfzj3mz.jpg" alt="JWT Debugger App Web Version with PWA Support" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://jwtdebugger.app/" rel="noopener noreferrer"&gt;JWT Debugger App&lt;/a&gt;, use the web version as a progressive web app or install desktop apps for Mac, Window, and Linux. More importantly, [JWT Debugger App] supports token validation using both JWKS Endpoint and PEM/Secret Keys. JWT.io and many other JWT tools currently don't support JWKS Endpoint based token validation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4u8d0git9lr1u4svev8w.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4u8d0git9lr1u4svev8w.jpg" alt="JWT Debugger App Desktop Version" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jwtdebugger.app/" rel="noopener noreferrer"&gt;JWT Debugger App&lt;/a&gt; itself is &lt;a href="https://github.com/axioms-io/axioms-jwt-debugger" rel="noopener noreferrer"&gt;open-source&lt;/a&gt; and if you find any issues or like to add a feature just open a &lt;a href="https://github.com/axioms-io/axioms-jwt-debugger/issues" rel="noopener noreferrer"&gt;Github ticket&lt;/a&gt; and we will love to help.&lt;/p&gt;

</description>
      <category>jwt</category>
      <category>opened</category>
      <category>oauth2</category>
      <category>json</category>
    </item>
    <item>
      <title>10 open-source Kubernetes tools for highly effective SRE and Ops Teams</title>
      <dc:creator>Abhishek Tiwari</dc:creator>
      <pubDate>Sat, 06 Jan 2018 13:00:00 +0000</pubDate>
      <link>https://dev.to/abhishektiwari/10-open-source-tools-for-highly-effective-kubernetes-sre-and-ops-teams-5fmd</link>
      <guid>https://dev.to/abhishektiwari/10-open-source-tools-for-highly-effective-kubernetes-sre-and-ops-teams-5fmd</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwll0uebefhuc4tho5e4s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwll0uebefhuc4tho5e4s.jpg" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are running workloads in Kubernetes, your site reliability engineering (SRE) and operations (Ops) teams need right kind of tooling to ensure the high-reliability of the Kubernetes cluster and workloads running in it. Here we present a list of 10 open-source Kubernetes tools to make your SRE and Ops teams more effective to achieve their service level objectives.&lt;/p&gt;

&lt;h1&gt;
  
  
  Kube-ops-view
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/hjacobs/kube-ops-view" rel="noopener noreferrer"&gt;Kube-ops-view&lt;/a&gt; provides a common operational view for multiple Kubernetes clusters. It is a handy tool for SRE and Ops teams. Kube-ops-view provides read-only system dashboard. Some of the cool features offered by kube-ops-view,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switch between multiple Kubernetes clusters&lt;/li&gt;
&lt;li&gt;Render nodes and indicate their overall status ("Ready")&lt;/li&gt;
&lt;li&gt;Show node capacity and resource usage (CPU, memory)&lt;/li&gt;
&lt;li&gt;Indicate status of pods (green: ready/running, red: error etc)&lt;/li&gt;
&lt;li&gt;Provide tooltip information for nodes and pods&lt;/li&gt;
&lt;li&gt;Animate pod creation and termination&lt;/li&gt;
&lt;li&gt;Project dashboards on TV screens using screen tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcurszmjncjtqskpuvcmh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcurszmjncjtqskpuvcmh.png" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="726" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Cabin
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/bitnami/cabin" rel="noopener noreferrer"&gt;Cabin&lt;/a&gt; is the native mobile dashboard app for Kubernetes. Cabin UI is built using React Native hence runs both iOS and Android devices. It is an on the move assistant which provides fine-grained actions to manipulate Kubernetes resources. Cabin app is touch optimised. So for instance, you can delete pods with a single left swipe. You can scale deployments with a finger scroll.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1tu336ktcbxb5jpxuxuz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1tu336ktcbxb5jpxuxuz.jpg" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of the interesting features included in Cabin,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seamless support for Google Kubernetes Engine (GKE). You can create GKE clusters directly from your mobile phone.&lt;/li&gt;
&lt;li&gt;Early support for Help charts, you can view Charts repositories and launch charts with one click on the move.&lt;/li&gt;
&lt;li&gt;Access pod logs, search resources by the label, trigger rolling-updates by changing the image of your deployments etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Kubectx
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/ahmetb/kubectx" rel="noopener noreferrer"&gt;Kubectx&lt;/a&gt; is another must-have tool if you working with multiple Kubernetes clusters. Kubectx comes bundled with kubens and together they allow you switch between Kubernetes clusters and namespaces when using kubectl.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fflo9f319g8b9jne44bxa.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fflo9f319g8b9jne44bxa.gif" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="1367" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;kubectx and kubens support tab completion on bash/zsh shells to help you with long context names. You don't have to remember full context names anymore.&lt;/p&gt;

&lt;h1&gt;
  
  
  Kube-shell
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/cloudnativelabs/kube-shell" rel="noopener noreferrer"&gt;Kube-shell&lt;/a&gt; is an integrated shell for working with the Kubernetes CLI. It has some really nifty features such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;auto-completion of commands, auto-suggestions, in-line documentation&lt;/li&gt;
&lt;li&gt;access to the history of commands executed by using up/down arrow keys&lt;/li&gt;
&lt;li&gt;current context from kubeconfig, easy switch between the clusters/namespaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://camo.githubusercontent.com/6dd81f81976c3abf550dddbed8dcc1fa93d86595/687474703a2f2f692e696d6775722e636f6d2f6466656c6b4b722e676966" class="article-body-image-wrapper"&gt;&lt;img src="https://camo.githubusercontent.com/6dd81f81976c3abf550dddbed8dcc1fa93d86595/687474703a2f2f692e696d6775722e636f6d2f6466656c6b4b722e676966" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related tools
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/c-bata/kube-prompt" rel="noopener noreferrer"&gt;Kube-prompt&lt;/a&gt; is yet another interactive Kubernetes client featuring auto-complete. It accepts commands without kubectl prefix.&lt;/p&gt;

&lt;p&gt;In addition, &lt;a href="https://github.com/jonmosco/kube-ps1" rel="noopener noreferrer"&gt;Kube-ps1&lt;/a&gt; is a neat script that lets you add the current Kubernetes context and namespace configured on kubectl to your Bash/Zsh prompt strings.&lt;/p&gt;

&lt;p&gt;Lastly, &lt;a href="https://github.com/boz/kail" rel="noopener noreferrer"&gt;Kail&lt;/a&gt; is Kubernetes tail. As a Kubernetes log viewer, kail allows you to stream logs from matching pods using selectors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://asciinema.org/a/133521" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkumx32xj1apoihlcfvp.png" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can match pods based on a standard label selector, by name, by service, by deployment, etc.&lt;/p&gt;

&lt;h1&gt;
  
  
  Telepresence
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.telepresence.io" rel="noopener noreferrer"&gt;Telepresence&lt;/a&gt; is an open source tool that lets you debug a service locally while keeping the connection with its dependency services hosted in a remote Kubernetes cluster and remote cloud resources like a database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://asciinema.org/a/117761" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0w3fa4ng22s3sgrdx1to.png" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Personally, I think Telepresence has a lot potential. Telepresence is already a powerful local development environment for services running in Kubernetes. Live debugging part is new but evolving quite rapidly.&lt;/p&gt;

&lt;h1&gt;
  
  
  Weave Scope
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/weaveworks/scope" rel="noopener noreferrer"&gt;Weave Scope&lt;/a&gt; is troubleshooting &amp;amp; monitoring tool for Docker and Kubernetes. It automatically builds logical topologies of your application and infrastructure which enable your SRE and Ops team to intuitively understand, monitor and control your containerized, microservices based application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0s7o7zdusuh2hmcyd7bh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0s7o7zdusuh2hmcyd7bh.jpg" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apart from Topology view, Weave Scope can provide a drill down views i.e everything between nodes and processes including deployments, services, replica sets, pods, and containers. In addition, you can apply filters based on CPU and Memory usage or use search to quickly find node types, containers, and processes by name, label or even path.&lt;/p&gt;

&lt;h1&gt;
  
  
  PowerfulSeal
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/bloomberg/powerfulseal" rel="noopener noreferrer"&gt;PowerfulSeal&lt;/a&gt; is inspired by Chaos Monkey and developed by Bloomberg engineering team. It can add chaos to your Kubernetes clusters like killing targeted pods and nodes. It operates in two modes: interactive and autonomous.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Interactive mode is designed to allow you to discover your cluster's components, and manually break things to see what happens. It operates on nodes, pods, deployments, and namespaces.&amp;gt; Autonomous mode reads a policy file, which can contain any number of pod and node scenarios. Each scenario describes a list of matches, filters, and actions to execute on your cluster.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Policy files are written in &lt;a href="https://github.com/bloomberg/powerfulseal/blob/master/tests/policy/example_config.yml" rel="noopener noreferrer"&gt;YAML format&lt;/a&gt; and includes scenarios which will be executed by the autonomous agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related tools
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/asobti/kube-monkey" rel="noopener noreferrer"&gt;kube-monkey&lt;/a&gt; is an alternative implementation of Netflix's Chaos Monkey for Kubernetes clusters. It randomly deletes pods in the Kubernetes cluster encouraging and validating the development of failure-resilient services.&lt;/p&gt;

&lt;h1&gt;
  
  
  Marmot
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/google/marmot" rel="noopener noreferrer"&gt;Marmot&lt;/a&gt; is a workflow execution engine from Google for processing workflows targeting DevOps/SRE needs. It has been designed as a tool for handling infrastructure changes but it can be used with Kubernetes.&lt;/p&gt;

&lt;p&gt;It is particularly suitable for any type of operation that must be performed in steps with certain pacing and may require state checks for health. So, for instance, you are rolling out a new service version on Kubernetes with a large number of instances then you perform an incremental but controlled rollout (canary release).&lt;/p&gt;

&lt;h1&gt;
  
  
  Ark
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/heptio/ark" rel="noopener noreferrer"&gt;Ark&lt;/a&gt; is a tool for managing disaster recovery for your Kubernetes resources and volumes. Ark provides a simple and operationally robust way to back up and restore Kubernetes resources and Persistent Volumes from a series of checkpoints. The backup files are stored in an object storage service (e.g. Amazon S3).&lt;/p&gt;

&lt;p&gt;Ark enables you to you to automate following scenarios in a more efficient way,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disaster recovery with reduced TTR (time to respond)&lt;/li&gt;
&lt;li&gt;Cross-cloud-provider migration of Kubernetes API objects&lt;/li&gt;
&lt;li&gt;Dev and testing environment setup (+ CI), via replication of prod&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ark comes with an in-cluster service (Ark server) and CLI (Ark client). In-cluster service does the most of heavy lifting as it runs all of the Ark controllers. Ark server performs the actual backup, validates it and loads backup files in cloud object storage.&lt;/p&gt;

&lt;h1&gt;
  
  
  Sysdig
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/draios/sysdig" rel="noopener noreferrer"&gt;Sysdig&lt;/a&gt; is container troubleshooting tool which captures system calls and events from the Linux kernel. Simply put, Sysdig is strace + tcpdump + htop + iftop + lsof + wireshark for your entire cluster.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sysdig instruments your physical and virtual machines at the OS level by installing into the Linux kernel and capturing system calls and other OS events. Sysdig also makes it possible to create trace files for system activity&lt;/p&gt;
&lt;h2&gt;
  
  
  Related tools
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://github.com/draios/sysdig-inspect" rel="noopener noreferrer"&gt;Sysdig Inspect&lt;/a&gt; is an interface to visualize the data collected by Sysdig. Sysdig Inspect enables SRE and Ops teams in container troubleshooting and security investigation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Inspect's user interface is designed to intuitively navigate the data-dense Sysdig captures that contain granular system, network, and application activity of a Linux system. Sysdig Inspect helps you understand trends, correlate metrics and find the needle in the haystack. It comes packed with features designed to support both performance and security investigations, with deep container introspection.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnso3wz7shjbmibsc7ozz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnso3wz7shjbmibsc7ozz.jpg" alt="10 open-source tools for highly effective Kubernetes SRE and Ops Teams" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/draios/falco" rel="noopener noreferrer"&gt;Sysdig Falco&lt;/a&gt; is another tool built on top of granular data collected by Sysdig. Falco monitors behavioral activity and it is designed to detect anomalous activity in your application. For instance, using Falco you can detect activities such as,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a shell is run inside a container&lt;/li&gt;
&lt;li&gt;a container is running in privileged mode&lt;/li&gt;
&lt;li&gt;a container is mounting a sensitive from the host&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Final thoughts
&lt;/h1&gt;

&lt;p&gt;Kubernetes ecosystem is observing an explosive growth. There are a large number of open source and commercial tools which you can help you to be more effective and efficient when operating missing-critical Kubernetes cluster and services. As always, setting down on top 10 tools is not easy. Did we miss something? &lt;a href="https://twitter.com/abhishektiwari" rel="noopener noreferrer"&gt;Tell us on Twitter&lt;/a&gt; if you are using something interesting to manage Kubernetes in production.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>sre</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
