1장. Pod 사양 수정
1.1. 소개
Pod의 Kubernetes 개념은 하나의 호스트에 함께 배포되는 하나 이상의 컨테이너이며 정의, 배포 또는 관리할 수 있는 최소 컴퓨팅 단위입니다.
Pod는 컨테이너에 대한 머신 인스턴스(실제 또는 가상)와 동일합니다. 각 Pod에는 자체 내부 IP 주소가 할당되므로 해당 Pod가 전체 포트 공간을 소유하고 Pod 내의 컨테이너는 로컬 스토리지와 네트워킹을 공유할 수 있습니다.
Pod에는 라이프사이클이 있습니다. 그런 다음 노드에서 실행되도록 할당된 다음 컨테이너가 종료되거나 다른 이유로 제거될 때까지 실행됩니다. Pod는 정책 및 종료 코드에 따라 종료 후 제거되거나 컨테이너 로그에 대한 액세스를 활성화하기 위해 유지될 수 있습니다.
Red Hat Ansible Automation Platform은 간단한 기본 Pod 사양을 제공하지만 기본 Pod 사양을 재정의하는 사용자 정의 YAML 또는 JSON 문서를 제공할 수 있습니다. 이 사용자 정의 문서에서는 유효한 Pod JSON 또는 YAML로 직렬화할 수 있는 ImagePullSecrets
와 같은 사용자 정의 필드를 사용합니다.
전체 옵션 목록은 Openshift Online 설명서에서 확인할 수 있습니다.
장기 실행 서비스를 제공하는 Pod의 예.
이 예제에서는 Pod의 많은 기능을 보여줍니다. 대부분 다른 주제에서 설명하므로 여기에서 간단히 설명합니다.
apiVersion: v1 kind: Pod metadata: annotations: { ... } 1 labels: deployment: docker-registry-1 deploymentconfig: docker-registry docker-registry: default generateName: docker-registry-1- 2 spec: containers: 3 - env: 4 - name: OPENSHIFT_CA_DATA value: ... - name: OPENSHIFT_CERT_DATA value: ... - name: OPENSHIFT_INSECURE value: "false" - name: OPENSHIFT_KEY_DATA value: ... - name: OPENSHIFT_MASTER value: https://master.example.com:8443 image: openshift/origin-docker-registry:v0.6.2 5 imagePullPolicy: IfNotPresent name: registry ports: 6 - containerPort: 5000 protocol: TCP resources: {} 7 securityContext: { ... } 8 volumeMounts: 9 - mountPath: /registry name: registry-storage - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: default-token-br6yz readOnly: true dnsPolicy: ClusterFirst imagePullSecrets: 10 - name: default-dockercfg-at06w restartPolicy: Always 11 serviceAccount: default 12 volumes: 13 - emptyDir: {} name: registry-storage - name: default-token-br6yz secret: secretName: default-token-br6yz
레이블 | 설명 |
---|---|
|
Pod는 단일 작업에서 Pod 그룹을 선택하고 관리하는 데 사용할 수 있는 라벨을 하나 이상 사용하여 "태그를 지정"할 수 있습니다. 레이블은 메타데이터 해시의 key:value 형식으로 저장됩니다. 이 예제의 하나의 레이블은 |
|
Pod에는 해당 네임스페이스 내에 고유한 이름이 있어야 합니다. Pod 정의는 |
|
|
| 환경 변수는 각 컨테이너에 필요한 값을 전달합니다. |
| Pod의 각 컨테이너는 자체 Docker 형식의 컨테이너 이미지에서 인스턴스화됩니다. |
| 컨테이너는 Pod의 IP에서 사용할 수 있는 포트에 바인딩할 수 있습니다. |
| Pod를 지정할 때 컨테이너에 필요한 각 리소스의 양을 선택적으로 설명할 수 있습니다. 지정할 가장 일반적인 리소스는 CPU 및 메모리(RAM)입니다. 기타 리소스를 사용할 수 있습니다. |
| OpenShift Online은 권한이 있는 컨테이너로 실행할 수 있는지, 선택한 사용자로 실행할 수 있는지 여부를 지정하는 보안 컨텍스트를 정의합니다. 기본 컨텍스트는 매우 제한적이지만 관리자는 필요에 따라 변경할 수 있습니다. |
| 컨테이너는 컨테이너 내에서 외부 스토리지 볼륨을 마운트해야 하는 위치를 지정합니다. 이 경우 레지스트리 데이터를 저장하기 위한 볼륨이 있으며, 하나는 OpenShift Online API에 대해 요청하는 데 필요한 자격 증명에 대한 액세스용입니다. |
|
Pod에는 일부 레지스트리에서 가져와야 하는 하나 이상의 컨테이너가 포함될 수 있습니다. 컨테이너가 인증이 필요한 레지스트리에서 제공하는 경우 네임스페이스에 |
|
Pod는 가능한 값 |
|
OpenShift Online API에 대해 요청하는 Pod는 요청 시 Pod에서 인증해야 하는 서비스 계정 사용자를 지정하는 |
| Pod는 사용할 컨테이너에서 사용할 수 있는 스토리지 볼륨을 정의합니다. 이 경우 레지스트리 스토리지의 임시 볼륨과 서비스 계정 인증 정보가 포함된 시크릿 볼륨을 제공합니다. |
자동화 컨트롤러를 사용하고 자동화 컨트롤러 UI에서 Pod 사양을 편집하여 Kubernetes 기반 클러스터에서 작업을 실행하는 데 사용되는 Pod를 변경할 수 있습니다. 작업을 실행하는 Pod를 생성하는 데 사용되는 Pod 사양은 YAML 형식입니다. Pod 사양 편집에 대한 자세한 내용은 Pod 사양 사용자 지정을 참조하십시오.
1.1.1. Pod 사양 사용자 정의
다음 절차를 사용하여 Pod를 사용자 지정할 수 있습니다.
절차
- 자동화 컨트롤러 UI에서 .
- 확인합니다.
- Pod Spec Override 필드에서 토글을 사용하여 Pod Spec Override 필드를 활성화하고 확장하여 네임스페이스를 지정합니다.
- 을 클릭합니다.
- 선택 사항: 추가 사용자 지정을 제공하려면 를 클릭하여 전체 사용자 지정 창을 확인합니다.
작업 시작 시 사용되는 이미지는 작업과 연결된 실행 환경에 따라 결정됩니다. 컨테이너 레지스트리 인증 정보가 실행 환경과 연결된 경우 자동화 컨트롤러는 ImagePullSecret
을 사용하여 이미지를 가져옵니다. 서비스 계정에 시크릿을 관리할 수 있는 권한을 부여하지 않으려면 ImagePullSecret
을 사전 생성하여 Pod 사양에 지정하고, 사용된 실행 환경에서 인증 정보를 생략해야 합니다.
1.1.2. Pod에서 다른 보안 레지스트리의 이미지를 참조하도록 활성화
컨테이너 그룹에서 인증 정보가 필요한 보안 레지스트리의 컨테이너를 사용하는 경우, 컨테이너 레지스트리 인증 정보를 작업 템플릿에 할당된 실행 환경과 연결할 수 있습니다. 자동화 컨트롤러는 이를 사용하여 컨테이너 그룹 작업이 실행되는 OpenShift Container Platform 네임스페이스에서 ImagePullSecret
을 생성하고 작업이 완료된 후 정리합니다.
또는 컨테이너 그룹 네임스페이스에 ImagePullSecret
이 이미 있는 경우 ContainerGroup
의 사용자 정의 Pod 사양에 ImagePullSecret
을 지정할 수 있습니다.
컨테이너 그룹에서 실행 중인 작업에서 사용하는 이미지는 항상 작업과 연결된 실행 환경으로 재정의됩니다.
사전 생성된 ImagePullSecrets (Advanced) 사용
이 워크플로를 사용하고 ImagePullSecret
을 사전 생성하려는 경우 이전에 보안 컨테이너 레지스트리에 액세스한 시스템의 로컬 .dockercfg
파일에서 생성하는 데 필요한 정보를 소싱할 수 있습니다.
절차
최신 Docker 클라이언트의 .dockercfg 파일
또는 $HOME/.docker/config.json
은 이전에 보안 또는 비보안 레지스트리에 로그인한 경우 정보를 저장하는 Docker 인증 정보 파일입니다.
보안 레지스트리에 대한
.dockercfg
파일이 이미 있는 경우 다음 명령을 실행하여 해당 파일에서 보안을 생성할 수 있습니다.$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
또는
$HOME/.docker/config.json
파일이 있는 경우:$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
보안 레지스트리에 대한 Docker 인증 정보 파일이 아직 없는 경우 다음 명령을 실행하여 보안을 생성할 수 있습니다.
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
Pod의 이미지 가져오기에 시크릿을 사용하려면 서비스 계정에 이 시크릿을 추가해야 합니다. 이 예제의 서비스 계정 이름은 Pod에서 사용하는 서비스 계정 이름과 일치해야 합니다. 기본값은 기본 서비스 계정입니다.
$ oc secrets link default <pull_secret_name> --for=pull
선택 사항: 빌드 이미지를 푸시하고 가져오는 데 보안을 사용하려면 Pod 내에서 보안을 마운트할 수 있어야 합니다. 다음을 실행하여 이 작업을 수행할 수 있습니다.
$ oc secrets link builder <pull_secret_name>
- 선택 사항: 빌드의 경우 빌드 구성 내에서 가져오기 보안으로 보안을 참조해야 합니다.
컨테이너 그룹이 성공적으로 생성되면 새로 생성된 컨테이너 그룹의 세부 정보 탭이 유지됩니다. 이를 통해 컨테이너 그룹 정보를 검토하고 편집할 수 있습니다. 인스턴스 그룹 링크에서 아이콘을 클릭하면 열리는 메뉴와 같습니다. 인스턴스를 편집하고 이 인스턴스 그룹과 연결된 작업을 검토할 수도 있습니다.