IT박스

배포 된 Kubernetes 서비스 용 YAML을 받으시겠습니까?

itboxs 2020. 12. 1. 07:49
반응형

배포 된 Kubernetes 서비스 용 YAML을 받으시겠습니까?


Google Container Engine 에서 실행되는 Kubernetes에 내 앱을 배포하려고합니다 .

앱은 https://github.com/Industrial/docker-znc 에서 찾을 수 있습니다 .

Dockerfile는 에 이미지에 내장 된 구글 컨테이너 레지스트리 .

+ 버튼을 통해 Kubernetes에 앱을 배포했습니다 . 이에 대한 YAML이 없습니다.

앱에 필요한 PEM 파일에 대해 KubernetesSecret삽입했습니다 .

  1. 양식을 작성하여 Kubernetes에서 생성 한 Deployment , ServicePod에 대한 YAML을 얻으려면 어떻게해야 합니까?
  2. 사용을 위해 포드비밀가져 오려면 어떻게해야 합니까?

배포를위한 yaml을 가져 오려면 (서비스, 포드, 시크릿 등) :

kubectl get deploy deploymentname -o yaml --export

비밀에 관한 두 번째 질문에 대해서는 k8s 문서에서 가져온 것입니다. 자세한 내용은 https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets참조 하십시오 .

  1. 비밀을 만들거나 기존 비밀을 사용합니다. 여러 포드가 동일한 암호를 참조 할 수 있습니다.
  2. spec.volumes [] 아래에 볼륨을 추가하도록 포드 정의를 수정합니다. 볼륨의 이름을 지정하고 비밀 개체의 이름과 동일한 spec.volumes []. secret.secretName 필드를 갖습니다.
  3. 비밀이 필요한 각 컨테이너에 spec.containers []. volumeMounts []를 추가하십시오. 비밀을 표시 할 미사용 디렉토리 이름에 spec.containers []. volumeMounts []. readOnly = true 및 spec.containers []. volumeMounts []. mountPath를 지정하십시오.
  4. 프로그램이 해당 디렉토리에서 파일을 찾도록 이미지 및 / 또는 명령 줄을 수정합니다. 비밀 데이터 맵의 각 키는 mountPath 아래의 파일 이름이됩니다.

나는 이것을 사용했고 잘 작동합니다.


양식을 작성하여 Kubernetes에서 생성 한 배포, 서비스 및 포드에 대한 YAML을 얻으려면 어떻게해야합니까?

kubectl get deployment,service,pod yourapp -o yaml --export

@Sinaesthetic 질문에 답변 :

전체 클러스터 (모든 배포)에 대해 수행하는 방법에 대한 아이디어가 있습니까?

kubectl get deploy --all-namespaces -o yaml --export

이 방법의 문제점은 내보내기 에 네임 스페이스가 포함되지 않는다는 것입니다. 따라서 동시에 많은 리소스를 내보내려면 네임 스페이스별로 수행하는 것이 좋습니다.

kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml

불행히도 kubernetes는 여전히 진정한 get all 명령을 지원하지 않으므로 내보내려는 리소스 유형을 수동으로 나열해야합니다. 다음을 사용하여 리소스 유형 목록을 가져올 수 있습니다.

kubectl api-resources

  • 위에서 언급했듯이 "--export"는 kubeernetes 객체에 해당하는 매니페스트를 가져 오는 하나의 옵션입니다.
  • 그러나 "--export"는 버그가있는 것으로 간주되며이를 사용하지 않는 제안이 있습니다.
  • 현재 더 나은 옵션은 "-o yaml"또는 "-o json"을 수행하고 불필요한 필드를 제거하는 것입니다.
  • 주요 차이점은 "--export"는 클러스터 특정 설정 (예 : k8s 서비스의 클러스터 서비스 IP)을 제거 할 것으로 예상된다는 것입니다. 그러나 이와 관련하여 일관성이없는 것으로 밝혀졌습니다.

이 명령을 사용하여 서비스의 yaml 형식을 가져옵니다.

kubectl get service servicename -o yaml

일부 파일에 넣을 수도 있습니다.

kubectl get service servicename -o yaml >service.yaml


kubectl -n <namespace> get <resource type> <resource Name> -o yaml 

위의 명령을 사용하면 Kubernetes에 정의 된 모든 리소스를 YAML형식 으로 내보낼 수 있습니다 .


파일을보고 편집해야하는 경우 다음을 사용하십시오.

kubectl edit service servicename

참고 URL : https://stackoverflow.com/questions/43941772/get-yaml-for-deployed-kubernetes-services

반응형