$ oc login -u=<username> -p=<password> --server=<your-openshift-server> --insecure-skip-tls-verify
您必须能够访问正在运行的 OpenShift Container Platform 实例。如果您没有访问权限,请联系您的集群管理员。
您必须已下载并安装 OpenShift 命令行界面 (oc
)。
您可以登录到 OpenShift 命令行界面 (oc
) 以访问和管理您的集群。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
使用用户名和密码、OAuth 令牌或 Web 浏览器从命令行登录到 OpenShift Container Platform
使用用户名和密码
$ oc login -u=<username> -p=<password> --server=<your-openshift-server> --insecure-skip-tls-verify
使用 OAuth 令牌
$ oc login <https://api.your-openshift-server.com> --token=<tokenID>
使用 Web 浏览器
$ oc login <cluster_url> --web
您现在可以创建项目或发出其他命令来管理您的集群。
项目使用户社区能够隔离地组织和管理其内容。项目是 OpenShift Container Platform 对 Kubernetes 命名空间的扩展。项目具有启用用户自助配置的其他功能。
用户必须由管理员授予项目访问权限。集群管理员可以允许开发者创建他们自己的项目。在大多数情况下,用户可以自动访问他们自己的项目。
每个项目都有自己的一套对象、策略、约束和服务账号。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
要创建一个新项目,请输入以下命令
$ oc new-project user-getting-started --display-name="Getting Started with OpenShift"
Now using project "user-getting-started" on server "https://openshift.example.com:6443".
OpenShift Container Platform会在每个项目中自动创建一些特殊的服务账号。默认服务账号负责运行 Pod。OpenShift Container Platform使用并将其注入到启动的每个Pod中。
以下步骤将为默认的ServiceAccount
对象创建一个RoleBinding
对象。服务账号与OpenShift Container Platform API通信,以了解项目中的Pod、服务和资源。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
您必须具有cluster-admin
或project-admin
权限。
要将查看角色添加到user-getting-started
项目中的默认服务帐户,请输入以下命令
$ oc adm policy add-role-to-user view -z default -n user-getting-started
在OpenShift Container Platform中部署应用程序最简单的方法是运行现有的容器镜像。以下步骤部署名为national-parks-app
应用程序的前端组件。该Web应用程序显示一个交互式地图。地图显示全球主要国家公园的位置。
您必须能够访问 OpenShift Container Platform 集群。
安装OpenShift CLI(oc
)。
要部署应用程序,请输入以下命令
$ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'
--> Found container image 0c2f55f (12 months old) from quay.io for "quay.io/openshiftroadshow/parksmap:latest"
* An image stream tag will be created as "parksmap:latest" that will track this image
--> Creating resources with label app=national-parks-app,app.kubernetes.io/part-of=national-parks-app,component=parksmap,role=frontend ...
imagestream.image.openshift.io "parksmap" created
deployment.apps "parksmap" created
service "parksmap" created
--> Success
外部客户端可以通过路由层访问在OpenShift Container Platform上运行的应用程序,其背后的数据对象是路由。默认的OpenShift Container Platform路由器(HAProxy)使用传入请求的HTTP标头来确定将连接代理到哪里。
可以选择为路由定义安全策略,例如TLS。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
您必须具有cluster-admin
或project-admin
权限。
要检索已创建的应用程序服务,请输入以下命令
$ oc get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
parksmap ClusterIP <your-cluster-IP> <123.456.789> 8080/TCP 8m29s
要创建路由,请输入以下命令
$ oc create route edge parksmap --service=parksmap
route.route.openshift.io/parksmap created
要检索已创建的应用程序路由,请输入以下命令
$ oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
OpenShift Container Platform利用Kubernetes的Pod概念,Pod是在一台主机上一起部署的一个或多个容器,是可定义、部署和管理的最小计算单元。Pod大致相当于容器的物理或虚拟机实例。
您可以查看集群中的Pod,并确定这些Pod和整个集群的健康状况。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
要列出所有包含节点名称的Pod,请输入以下命令
$ oc get pods
NAME READY STATUS RESTARTS AGE
parksmap-5f9579955-6sng8 1/1 Running 0 77s
要列出所有Pod详细信息,请输入以下命令
$ oc describe pods
Name: parksmap-848bd4954b-5pvcc
Namespace: user-getting-started
Priority: 0
Node: ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c/10.0.128.4
Start Time: Sun, 13 Feb 2022 14:14:14 -0500
Labels: app=national-parks-app
app.kubernetes.io/part-of=national-parks-app
component=parksmap
deployment=parksmap
pod-template-hash=848bd4954b
role=frontend
Annotations: k8s.v1.cni.cncf.io/network-status:
[{
"name": "ovn-kubernetes",
"interface": "eth0",
"ips": [
"10.131.0.14"
],
"default": true,
"dns": {}
}]
k8s.v1.cni.cncf.io/network-status:
[{
"name": "ovn-kubernetes",
"interface": "eth0",
"ips": [
"10.131.0.14"
],
"default": true,
"dns": {}
}]
openshift.io/generated-by: OpenShiftNewApp
openshift.io/scc: restricted
Status: Running
IP: 10.131.0.14
IPs:
IP: 10.131.0.14
Controlled By: ReplicaSet/parksmap-848bd4954b
Containers:
parksmap:
Container ID: cri-o://4b2625d4f61861e33cc95ad6d455915ea8ff6b75e17650538cc33c1e3e26aeb8
Image: quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
Image ID: quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
Port: 8080/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 13 Feb 2022 14:14:25 -0500
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-6f844 (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-6f844:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
ConfigMapName: openshift-service-ca.crt
ConfigMapOptional: <nil>
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 46s default-scheduler Successfully assigned user-getting-started/parksmap-848bd4954b-5pvcc to ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c
Normal AddedInterface 44s multus Add eth0 [10.131.0.14/23] from ovn-kubernetes
Normal Pulling 44s kubelet Pulling image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b"
Normal Pulled 35s kubelet Successfully pulled image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b" in 9.49243308s
Normal Created 35s kubelet Created container parksmap
Normal Started 35s kubelet Started container parksmap
在Kubernetes中,Deployment
对象定义了应用程序如何部署。在大多数情况下,用户会一起使用Pod
、Service
、ReplicaSets
和Deployment
资源。在大多数情况下,OpenShift Container Platform会为您创建这些资源。
部署national-parks-app
镜像时,会创建一个部署资源。在此示例中,只部署了一个Pod
。
以下步骤将national-parks-image
扩展为使用两个实例。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
要将您的应用程序从一个Pod实例扩展到两个Pod实例,请输入以下命令
$ oc scale --current-replicas=1 --replicas=2 deployment/parksmap
deployment.apps/parksmap scaled
要确保您的应用程序已正确扩展,请输入以下命令
$ oc get pods
NAME READY STATUS RESTARTS AGE
parksmap-5f9579955-6sng8 1/1 Running 0 7m39s
parksmap-5f9579955-8tgft 1/1 Running 0 24s
要将您的应用程序缩减回一个Pod实例,请输入以下命令
$ oc scale --current-replicas=2 --replicas=1 deployment/parksmap
以下步骤部署parksmap
应用程序的后端服务。Python应用程序对MongoDB数据库执行二维地理空间查询,以查找并返回全球所有国家公园的地图坐标。
已部署的后端服务是nationalparks
。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
要创建一个新的Python应用程序,请输入以下命令
$ oc new-app python~https://github.com/openshift-roadshow/nationalparks-py.git --name nationalparks -l 'app=national-parks-app,component=nationalparks,role=backend,app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=python' --allow-missing-images=true
--> Found image 0406f6c (13 days old) in image stream "openshift/python" under tag "3.9-ubi9" for "python"
Python 3.9
----------
Python 3.9 available as container is a base platform for building and running various Python 3.9 applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.
Tags: builder, python, python39, python-39, rh-python39
* A source build using source code from https://github.com/openshift-roadshow/nationalparks-py.git will be created
* The resulting image will be pushed to image stream tag "nationalparks:latest"
* Use 'oc start-build' to trigger a new build
--> Creating resources with label app=national-parks-app,app.kubernetes.io/name=python,app.kubernetes.io/part-of=national-parks-app,component=nationalparks,role=backend ...
imagestream.image.openshift.io "nationalparks" created
buildconfig.build.openshift.io "nationalparks" created
deployment.apps "nationalparks" created
service "nationalparks" created
--> Success
要创建一个路由来公开您的应用程序nationalparks
,请输入以下命令
$ oc create route edge nationalparks --service=nationalparks
route.route.openshift.io/parksmap created
要检索已创建的应用程序路由,请输入以下命令
$ oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
nationalparks nationalparks-user-getting-started.apps.cluster.example.com nationalparks 8080-tcp edge None
parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
部署并连接一个MongoDB数据库,national-parks-app
应用程序在其中存储位置信息。将national-parks-app
应用程序标记为地图可视化工具parksmap
的后端后,parksmap
部署将使用OpenShift Container Platform发现机制自动显示地图。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
要连接到数据库,请输入以下命令
$ oc new-app quay.io/centos7/mongodb-36-centos7:master --name mongodb-nationalparks -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb -e MONGODB_ADMIN_PASSWORD=mongodb -l 'app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=mongodb'
--> Found container image dc18f52 (3 years old) from quay.io for "quay.io/centos7/mongodb-36-centos7:master"
MongoDB 3.6
-----------
MongoDB (from humongous) is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas. This container image contains programs to run mongod server.
Tags: database, mongodb, rh-mongodb36
* An image stream tag will be created as "mongodb-nationalparks:master" that will track this image
--> Creating resources with label app.kubernetes.io/name=mongodb,app.kubernetes.io/part-of=national-parks-app ...
imagestream.image.openshift.io "mongodb-nationalparks" created
deployment.apps "mongodb-nationalparks" created
service "mongodb-nationalparks" created
--> Success
Secret
对象提供了一种机制来保存敏感信息,例如密码、OpenShift Container Platform客户端配置文件、私有源代码库凭据等。密钥将敏感内容与Pod分离。您可以使用卷插件将密钥挂载到容器中,或者系统可以使用密钥代表Pod执行操作。以下步骤添加密钥nationalparks-mongodb-parameters
并将其挂载到nationalparks
工作负载。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
要创建一个密钥,请输入以下命令
$ oc create secret generic nationalparks-mongodb-parameters --from-literal=DATABASE_SERVICE_NAME=mongodb-nationalparks --from-literal=MONGODB_USER=mongodb --from-literal=MONGODB_PASSWORD=mongodb --from-literal=MONGODB_DATABASE=mongodb --from-literal=MONGODB_ADMIN_PASSWORD=mongodb
secret/nationalparks-mongodb-parameters created
要更新环境变量以将mongodb密钥附加到nationalpartks
工作负载,请输入以下命令
$ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
deployment.apps/nationalparks updated
要显示nationalparks
部署的状态,请输入以下命令
$ oc rollout status deployment nationalparks
deployment "nationalparks" successfully rolled out
要显示mongodb-nationalparks
部署的状态,请输入以下命令
$ oc rollout status deployment mongodb-nationalparks
deployment "nationalparks" successfully rolled out
deployment "mongodb-nationalparks" successfully rolled out
您已部署parksmap
和nationalparks
应用程序,然后部署了mongodb-nationalparks
数据库。但是,尚未将数据加载到数据库中。
您必须能够访问 OpenShift Container Platform 集群。
您必须已安装 OpenShift 命令行界面 (oc
)。
您已部署了一个镜像。
要加载国家公园数据,请输入以下命令
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s https://127.0.0.1:8080/ws/data/load
"Items inserted in database: 2893"
要验证您的数据是否已正确加载,请输入以下命令
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s https://127.0.0.1:8080/ws/data/all
, {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]
要向路由添加标签,请输入以下命令
$ oc label route nationalparks type=parksmap-backend
route.route.openshift.io/nationalparks labeled
要检索您的路由以查看地图,请输入以下命令
$ oc get routes
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
nationalparks nationalparks-user-getting-started.apps.cluster.example.com nationalparks 8080-tcp edge None
parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
将您在上一步中获取的HOST/PORT
路径复制并粘贴到您的网页浏览器中。您的浏览器应该会显示一张世界各地国家公园的地图。