$ kn service create showcase \
--image quay.io/openshift-knative/showcase \
--target ./ \
--namespace test
执行kn service
命令时,更改会立即传播到集群。但是,作为替代方案,您可以以离线模式执行kn service
命令。当您在离线模式下创建服务时,集群上不会发生任何更改,而是在本地机器上创建服务描述符文件。
Knative CLI 的离线模式只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围。 |
创建描述符文件后,您可以手动修改它并将其跟踪在版本控制系统中。您还可以使用描述符文件上的kn service create -f
、kn service apply -f
或oc apply -f
命令将更改传播到集群。
离线模式有多种用途
您可以手动修改描述符文件,然后再使用它来对集群进行更改。
您可以在版本控制系统中本地跟踪服务的描述符文件。这使您能够在目标集群以外的其他地方重用描述符文件,例如在持续集成 (CI) 管道、开发环境或演示中。
您可以检查创建的描述符文件以了解 Knative 服务。特别是,您可以了解传递给kn
命令的不同参数如何影响生成的服务器。
离线模式具有其优势:它速度快,并且不需要连接到集群。但是,离线模式缺乏服务器端验证。因此,例如,您无法验证服务名称是否唯一或是否可以提取指定的镜像。
您可以以离线模式执行kn service
命令,以便集群上不会发生任何更改,而是在本地机器上创建服务描述符文件。创建描述符文件后,您可以在将更改传播到集群之前修改该文件。
Knative CLI 的离线模式只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见技术预览功能支持范围。 |
OpenShift Serverless 运算符和 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