Kubernetes Plugins
Este plugin permite que os desenvolvedores verifiquem a integridade dos serviços sem precisar acessar diretamente o cluster.
A idéia é aumentar a visibilidade dos erros identificados e fornecer detalhes sobre os deployments, pods e outros objetos de um serviço.
O plugin é divido em duas partes a parte frontend (instalado no app) que mostra as informações e a parte backend que faz comunicação com o cluster para coletar os dados.
Para instalar o plugin do kubernetes temos duas etapas. A primeira feita no frontend (app) e a segunda feita no backend.
App
No diretório raiz do backstage
yarn --cwd packages/app add @backstage/plugin-kubernetes
Agora vamos adicionar a página no código em packages/app/src/components/catalog/EntityPage.tsx.
Geralmente essa parte já vem no código se estiver usando as versões mais recentes.
// Só irá mostrar que isKubernetesAvailable for true, ou seja, se a annotation correta tiver presente.
const serviceEntityPage = (
<EntityLayout>
{/* other tabs... */}
<EntityLayout.Route
path="/kubernetes"
title="Kubernetes"
if={isKubernetesAvailable}
>
<EntityKubernetesContent refreshIntervalMs={10000} />
</EntityLayout.Route>
</EntityLayout>
);
Backend
Instalando as dependências.
yarn --cwd packages/backend add @backstage/plugin-kubernetes-backend
E dentro de packages/backend/src/index.ts antes de backend.start() vamos adicionar a linha abaixo. Nos códigos mais novos do backstage costuma já estar adicionado.
backend.add(import('@backstage/plugin-kubernetes-backend'));
As configurações do plugin estão definidas em app-config.yaml. Existem várias maneiras de adicionar o cluster e fazer a autenticação. É interessante tenhamos uma service account para o backstage como foi feito no lab, mas com as permissões corretas.
kubernetes:
serviceLocatorMethod:
type: 'multiTenant'
clusterLocatorMethods:
- type: 'config'
clusters:
- name: 'kind-study'
url: 'https://localhost:6443' # Verifique se esta é a URL correta do Kind
authProvider: 'serviceAccount'
skipTLSVerify: true
skipMetricsLookup: true
serviceAccountToken: ${KUBERNETES_BACKSTAGE_SA_TOKEN}
Para fazer funcionar precisar adicionar a annotation. O que ela faz é procurar o recurso com as labels corretas para mostrar.
No projeto backestage-argocd-app que esta utilizando o ArgoCD, todos os recursos da mesma application node-frontend recebe a tag app.kubernetes.io/instance=node-backend podemos filtrar por esta tag por exemplo.


Podemos ver os logs, o yaml, e mudar o comportamento dos botões para deletar um pod por exemplo.
É necessário se aprofundar neste assunto pois possui muitas configurações aproveitando custom resourses do kubernetes.
Cluster Resource
Podemos adicionar o cluster como um recurso para ser relacionado com outros.
No próprio backstage podemos utilizar o location para criar um recurso fixo. Crie uma pasta clusters e defina o recurso abaixo.
tree clusters
clusters
└── kind.yaml
Aqui o kind.yaml que esta criando de fato um recurso que representa o cluster.
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: kind-study-cluster
description: "Kubernetes Cluster for local study"
tags:
- kubernetes
links:
# link util para acessar o dashboard do cluster
- url: https://dash.localhost
title: Kubernetes Dashboard
icon: dashboard
spec:
type: kubernetes-cluster
owner: team-sre
No api-config.yaml podemos adicionar esse resource.
catalog:
,...
locations:
- type: file
target: ../../clusters/kind.yaml