1.2. kn service 명령 오프라인 모드
1.2.1. Knative CLI 오프라인 모드 정보
kn service
명령을 실행하면 변경 사항이 즉시 클러스터로 전파됩니다. 그러나 대안으로 오프라인 모드에서 kn service
명령을 실행할 수 있습니다. 오프라인 모드로 서비스를 생성하면 클러스터에서 변경 사항이 발생하지 않으며 대신 로컬 시스템에 서비스 설명자 파일이 생성됩니다.
Knative CLI의 오프라인 모드는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
설명자 파일이 생성되면 수동으로 수정하고 버전 제어 시스템에서 추적할 수 있습니다. 설명자 파일에서 kn service create -f
,kn service apply -f
또는 oc apply -f
명령을 사용하여 변경 사항을 클러스터에 전파할 수도 있습니다.
오프라인 모드에는 여러 방식이 있습니다.
- 클러스터 변경에 사용하기 전에 설명자 파일을 수동으로 수정할 수 있습니다.
- 버전 관리 시스템에서 서비스의 설명자 파일을 로컬로 추적할 수 있습니다. 이를 통해 CI(지속적 통합) 파이프라인, 개발 환경 또는 데모와 같이 대상 클러스터 이외의 위치에서 설명자 파일을 재사용할 수 있습니다.
-
생성된 설명자 파일을 검사하여 Knative 서비스에 대해 확인할 수 있습니다. 특히 결과 서비스가
kn
명령에 전달된 다양한 인수에 영향을 받는 방법을 확인할 수 있습니다.
오프라인 모드는 속도가 빠르고 클러스터에 연결할 필요가 없다는 장점이 있습니다. 그러나 오프라인 모드에서는 서버 측 유효성 검사가 없습니다. 따라서 서비스 이름이 고유하거나 지정된 이미지를 가져올 수 있는지 등을 확인할 수 없습니다.
1.2.2. 오프라인 모드를 사용하여 서비스 생성
클러스터에서 변경 사항이 발생하지 않도록 kn service
명령을 오프라인 모드에서 실행할 수 있으며 대신 로컬 시스템에 서비스 설명자 파일이 생성됩니다. 설명자 파일이 생성되면 파일을 수정한 후 클러스터의 변경 사항을 전파할 수 있습니다.
Knative CLI의 오프라인 모드는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다.
프로세스
오프라인 모드에서 로컬 Knative 서비스 설명자 파일을 생성합니다.
$ kn service create showcase \ --image quay.io/openshift-knative/showcase \ --target ./ \ --namespace test
출력 예
Service 'showcase' created in namespace 'test'.
--target ./
플래그는 오프라인 모드를 활성화하고 새 디렉터리 트리를 저장하는 디렉토리로./
를 지정합니다.기존 디렉터리를 지정하지 않고
--target my-service.yaml
과 같은 파일 이름을 사용하면 디렉터리 트리가 생성되지 않습니다. 대신 서비스 설명자 파일my-service.yaml
만 현재 디렉터리에 생성됩니다.파일 이름에는.
.yaml
,.yml
, 또는.json
확장을 사용할 수 있습니다..json
을 선택하면 JSON 형식으로 서비스 설명자 파일을 생성합니다.--namespace test
옵션은 새 서비스를test
네임스페이스에 배치합니다.--namespace를
사용하지 않고 OpenShift Container Platform 클러스터에 로그인한 경우 현재 네임스페이스에 설명자 파일이 생성됩니다. 그렇지 않으면 설명자 파일이default
네임스페이스에 생성됩니다.
생성된 디렉터리 구조를 확인합니다.
$ tree ./
출력 예
./ └── test └── ksvc └── showcase.yaml 2 directories, 1 file
-
--target
에서 지정된 현재./
디렉터리에는 지정된 네임스페이스를 바탕으로 이름이 지정된test/
디렉터리가 포함되어 있습니다. -
test/
디렉터리에는 리소스 유형의 이름에 따라 이름이 지정된ksvc
디렉터리가 포함되어 있습니다. -
ksvc
디렉터리에는 지정된 서비스 이름에 따라 이름이 지정된 설명자 파일showcase.yaml
이 포함되어 있습니다.
-
생성된 서비스 기술자 파일을 확인합니다.
$ cat test/ksvc/showcase.yaml
출력 예
apiVersion: serving.knative.dev/v1 kind: Service metadata: creationTimestamp: null name: showcase namespace: test spec: template: metadata: annotations: client.knative.dev/user-image: quay.io/openshift-knative/showcase creationTimestamp: null spec: containers: - image: quay.io/openshift-knative/showcase name: "" resources: {} status: {}
새 서비스에 대한 정보를 나열합니다.
$ kn service describe showcase --target ./ --namespace test
출력 예
Name: showcase Namespace: test Age: URL: Revisions: Conditions: OK TYPE AGE REASON
target ./
옵션은 네임스페이스 하위 디렉터리를 포함하는 디렉터리 구조의 루트 디렉터리를 지정합니다.또는
--target
옵션을 사용하여 YAML 또는 JSON 파일 이름을 직접 지정할 수 있습니다. 허용된 파일 확장자는.yaml
,.yml
,.json
입니다.--namespace
옵션은 필요한 서비스 기술자 파일을 포함하는 하위 디렉터리를kn
와 통신하는 네임스페이스를 지정합니다.--namespace
를 사용하지 않고 OpenShift Container Platform 클러스터에 로그인한 경우kn
은 현재 네임스페이스를 바탕으로 이름이 지정된 하위 디렉터리에서 서비스를 검색합니다. 그렇지 않으면kn
은default/
하위 디렉터리에서 검색합니다.
서비스 설명자 파일을 사용하여 클러스터에 서비스를 생성합니다.
$ kn service create -f test/ksvc/showcase.yaml
출력 예
Creating service 'showcase' in namespace 'test': 0.058s The Route is still working to reflect the latest desired specification. 0.098s ... 0.168s Configuration "showcase" is waiting for a Revision to become ready. 23.377s ... 23.419s Ingress has not yet been reconciled. 23.534s Waiting for load balancer to be ready 23.723s Ready to serve. Service 'showcase' created to latest revision 'showcase-00001' is available at URL: http://showcase-test.apps.example.com