반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- CANARY
- opensearch
- gitops
- Kubernetes
- CI/CD
- MLflow
- mlops
- knative
- gitea
- Litmus
- Pulumi
- nginx ingress
- seldon core
- tekton
- opentelemetry
- 오퍼레이터
- 카오스 엔지니어링
- serving
- Argo
- Kopf
- keda
- argo rollout
- Kubernetes 인증
- Continuous Deployment
- kubernetes operator
- operator
- Kubeflow
- Model Serving
- argocd
- blue/green
Archives
- Today
- Total
Kubernetes 이야기
Typescript client for kubernetes 본문
반응형
TypeScript로 Kubernetes api 호출하는 방법을 알아보자.
먼저 npm init 로 프로젝트를 생성해 보자.
# npm init
이제 TypeScript 와 필요한 client 를 설치해 보자.
# npm install -g typescript
Javascript용 Kubernetes client api를 설치하자.
# npm install @kubernetes/client-node
설치되어 있는 Kubernetes default Namespace에 Pod List를 얻어오는 샘플을 만들어 보자.
import k8s = require('@kubernetes/client-node');
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const k8sApi = kc.makeApiClient(k8s.CoreV1Api);
k8sApi.listNamespacedPod('default')
.then((res) => {
console.log(res.body.items.map((pod) => pod.metadata!.name!))
});
이제 컴파일 후 실행 해 보면 아래오 같이 출력되는걸 볼 수 있다.
node index.js
[
'hello-v2-7b5b8f988c-2tq2n',
'hello-v2-7b5b8f988c-h8mgw',
'hello-v2-7b5b8f988c-v4kxt'
]
다음은 deployment를 출력하는 샘플을 보자
import k8s = require('@kubernetes/client-node');
import Table = require('easy-table');
const kc = new k8s.KubeConfig();
kc.loadFromDefault();
const appsV1Api = kc.makeApiClient(k8s.AppsV1Api);
const coreV1Api = kc.makeApiClient(k8s.CoreV1Api);
async function getDeployments() {
const deploymentsRes = await appsV1Api.listNamespacedDeployment('default');
const deployments = [];
for (const deployment of deploymentsRes.body.items) {
deployments.push({
name: deployment.metadata!.name,
status: deployment.status!.conditions![0].status,
image: deployment.spec!.template!.spec!.containers![0].image,
});
}
await renderTable(deployments);
}
async function renderTable(data: any, showHeader = true) {
const table = new Table();
for (const d of data) {
table.cell('Deployment', d.name);
table.cell('Status', d.status ? 'running' : 'stopped');
table.cell('Image', d.image);
table.newRow();
};
table.sort(['Role|asc']);
if (showHeader) {
console.log(table.toString());
} else {
console.log(table.print());
}
}
getDeployments().catch(console.error.bind(console));
참고
https://github.com/kubernetes-client/javascript
https://blog.codewithdan.com/using-the-kubernetes-javascript-client-library/
반응형
'개발 > typescript' 카테고리의 다른 글
Typescript 설치 (0) | 2022.03.09 |
---|
Comments