본문 바로가기
WIKI 기술 지식 베이스

Kubernetes 트러블슈팅

원문 보기 위키 갱신

출처: 문서

본문

Kubernetes가 Service 엔티티에 표시되지 않음

이것은 Kubernetes 클러스터가 Backstage에 다음과 같이 연결되어 있는지 확인해 디버그할 수 있어요.

curl --location --request POST '{{backstage-backend-url}}:{{backstage-backend-port}}/api/kubernetes/services/:service-entity-name' \
--header 'Content-Type: application/json' \
--data-raw '{
    "entity": {
        "metadata": {
            "name": <service-entity-name>
        }
    }
}'

curl 응답에는 Kubernetes의 리소스가 있어야 해요.

# curl response
{
  "items": [
    {
      "cluster": {
        "name": <cluster-name>
      },
      "resources": [
        {
          "type": "services",
          "resources": [
            {
              "metadata": {
                "creationTimestamp": "2022-03-13T13:52:46.000Z",
                "labels": {
                  "app": <k8s-app-name>,
                  "backstage": <selector>,
                  "backstage.io/kubernetes-id": <service-entity-name>
                },
                "name": <k8s-app-name>,
                "namespace": <namespace>
              },
              ....
            }
          ]
        },
        ....
        {
          "type": "pods",
          "resources": [
            ,,,,
          ]
        }
      ],
      "errors": []
    }
  ]
}

카탈로그 정보 주석이 관련 Kubernetes 리소스와 일치하지 않으면 Kubernetes 탭은 아무것도 표시하지 않을 거예요. 리소스에 다음 라벨을 추가하고 라벨 셀렉터 주석을 다음과 같이 사용하는 것을 권장해요.

backstage.io/kubernetes-id: <entity-service-name>은 k8s 서비스 관련 객체를 얻기 위한 것입니다. 플러그인 코드를 참고하세요.

# k8s related yaml (service.yaml, deployment.yaml, ingress.yaml)
metadata:
  creationTimestamp: '2022-03-13T13:52:46.000Z'
  labels:
    app: <k8s-app-name>
    env: <environment>
    backstage.io/kubernetes-id: <service-entity-name>
  name: <k8s-app-name>
  namespace: <namespace>

k8s-app-name과 service-entity-name은 달라도 되지만, k8s와 backstage 사이에서 이름을 일관되게 유지하고 싶다면 같은 이름을 사용하는 것을 권장해요.

그리고 카탈로그 정보 주석은 라벨 셀렉터를 사용할 거예요.

# catalog-info.yaml (backstage)
annotations:
  backstage.io/kubernetes-label-selector: '<label-selector>'

더 알아보기 (Learn more)