- Downward API를 통한 메타 데이터 전달
- 사용 가능한 메타 데이터
- 환경 변수를 통한 메타 데이터 노출
- yaml spec.env
- kubectl exec downward env
- Downward API 볼륨 내의 파일을 통한 메타 데이터 전달
- yaml spec.containers.image:busybox.volumes.downwardAPI.items.{path, resourceFieldRef} /etc/downward
- kubectl exec downward ls -lL /etc/downward (key=value\n)
- yaml spec.volumes.downwardAPI.items.{path, resourceFieldRef}
- 라벨과 주석 업데이트
- 볼륨 스펙에서 컨테이너-레벨 메타 데이터 참조
- Downward API 사용시 이해해야 할 점
- 쿠버네티스 API 서버와 통신하기
- 쿠버네티스 REST API 탐색
- kubectl cluster-info
- curl https://192.168.99.100:8443 -k
- kubectl proxy를 통한 API 서버 접근
- kubectl proxy
- kubectl proxy를 통한 쿠버네티스 API 탐험
- curl localhost:8001 (json)
- 배치 API 그룹의 REST 엔드포인트 탐험
- 클러스터에 있는 모든 잡 인스턴스 목록
- 이름으로 특정한 잡 인스턴스 가져오기
- curl http://localhost:8001/apis/batch/v1/namespaces/default/jobs/my-job
- kubectl get job my-job -o json
- 포드 내에서 API 서버와 통신
- API 서버와의 통신을 시도해서 포드 실행하기
- yaml spec.containers.command:[“sleep”, “999999”]
- kubectl exec -it curl bash
- API 서버 주소 찾기
- kubectl get svc
- env | grep KUBERNETES_SERVICE
- curl https://kubernetes (-k)
- 서버의 신원 검증
- ls /var/run/secrets/kubernetes.io/serviceaccount
- curl –cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt https://kubernetes
- export CURL_CA_BUNDLE=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
- curl https://kubernetes
- API 서버로 인증
- TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
- curl -H “Authorization: Bearer $TOKEN” https://kubernetes
- 실행 중인 포드의 네임스페이스 가져오기
- NS=$(cat /var/run/secrets/kubernetes.io/servieaccount/namespace)
- curl -H “Authorization: Bearer $TOKEN” https://kubernetes/api/v1/namespaces/$NS/pods
- 포드가 쿠버네티스와 통신하는 법 자세히 알아보기
- 앰배서더 컨테이너와의 API 서버 통신 간소화
- 앰배서더 컨테이너 패턴 소개
- 추가적인 앰배서더 컨테이너로 curl 포드 실행하기
- yaml spec.containers.name:{ambassador, luksa/kubectl-proxy:1.6.2}
- kubectl exec -it curl-with-ambassador -c main bash
- 앰배서더를 통한 API 서버와의 통신
- curl localhost:8001
- 클라이언트 라이브러리를 사용해 API 서버와의 통신
- 기존의 클라이언트 라이브러리 사용
- FABRIC8 자바 클라이언트를 사용한 쿠버네티스와의 상호작용 예시
- 스웨거와 OpenAPI를 사용해 자신만의 라이브러리 구축
- 스웨거 UI로 API 탐색
- 쿠버네티스 REST API 탐색
- 요약
- 포드의 이름, 네임스페이스, 그 밖의 메타 데이터가 환경 변수 또는 downwardAPI 볼륨의 파일을 통해 프로세스에 노출되는 방법
- CPU 및 메모리 요청 및 제한이 애플리케이션에 필요한 모든 유닛에서 애플리케이션으로 전달되는 방식
- 포드에서 downwardAPI 볼륨을 사요해 포드의 수명 동안 변경될 수 있는 최신 메타 데이터를 가져오는 방법 (예: 라벨 및 주석)
- kubectl proxy를 통해 쿠버네티스 REST API를 검색하는 방법
- 쿠버네티스에 정의된 다른 서비스와 마찬가지로 환경 변수 또는 DNS를 통해 포드가 API 서버의 위치를 찾는 방법
- 포드에서 실행 중인 애플리케이션이 API 서버와 통신하고 있으며 자신을 인증하는 방법을 확인할 수 있는 방법
- 앰배서더 컨테이너를 사용해서 애플리케이션 내에서 API 서버와 훨씬 더 간단하게 통신할 수 있는 방법
- 클라이언트 라이브러리를 사용해 쿠버네티스로 몇 분만에 상호작용할 수 있는 방법