1. 课程导入与全景认知
在开始动手之前,先把这张"地图"看清楚,比急着敲第一条命令更重要。Oracle Cloud 容器平台并不是单一产品,而是一组围绕容器镜像与 Kubernetes 编排协同工作的云服务集合。理解它们各自负责什么、彼此如何衔接,才能在后 29 章中知道每一步操作究竟落在整条交付链的哪个位置。
一、平台由哪些核心服务构成
本课程聚焦三个核心服务,它们分别对应容器应用交付的三个关键环节:
- OKE(Oracle Container Engine for Kubernetes):托管的 Kubernetes 集群服务。它负责运行容器化应用,管理节点池、Pod 调度、Service 与 Ingress 等编排对象。控制平面由 Oracle 托管,用户主要管理节点池与工作负载。
- OCIR(Oracle Cloud Infrastructure Registry):容器镜像仓库服务。它负责存储、版本化和分发容器镜像,是构建产物与运行环境之间的"中转站"。镜像以
<region>.ocir.io/<namespace>/<repo>:<tag>形式寻址。 - DevOps(OCI DevOps):持续集成与持续交付服务。它负责把代码变更自动转化为构建、测试、推送镜像、部署到 OKE 的流水线,是连接"代码"与"运行集群"的自动化引擎。
三者不是并列孤立的,而是构成一条清晰的交付链:代码经 DevOps 构建成镜像,推送到 OCIR 存储,再由 OKE 从 OCIR 拉取镜像并运行。缺少任何一环,自动化交付都无法闭环。
二、整体架构与交付关系
下面这张图展示了三个核心服务在应用交付链中的位置、数据流向与关键接口。请重点观察镜像的流动方向,以及各服务之间的依赖关系。
三、三个服务各自的关键概念
在进入实操前,需要先建立几个基础认知,它们会在后续章节反复出现。
OKE 的集群形态:创建 OKE 集群时,需要选择"托管节点池"或"虚拟节点"。托管节点池由用户管理计算实例,适合需要自定义运行时环境的场景;虚拟节点由 Oracle 管理,按 Pod 计费,适合突发负载。集群创建后,控制平面 API Server 的端点、kubeconfig 的获取方式、节点池的扩缩容策略,都是后续部署应用时必须掌握的操作点。
OCIR 的寻址与认证:OCIR 中的镜像地址格式为 <region>.ocir.io/<tenancy-namespace>/<repo>:<tag>。例如在 ap-chuncheon-1 区域,命名空间为 mytenancy,仓库为 webapp,标签为 v1.0,则完整地址为 ap-chuncheon-1.ocir.io/mytenancy/webapp:v1.0。推送和拉取都需要认证令牌(Auth Token),OKE 节点拉取镜像时则通过 imagePullSecret 提供凭据。
DevOps 流水线的阶段划分:OCI DevOps 流水线通常分为"构建阶段"和"部署阶段"。构建阶段执行代码检出、编译、测试、镜像构建与推送;部署阶段执行 Kubernetes 清单应用或 Helm 部署。每个阶段由若干"阶段(Stage)"组成,阶段之间可以设置审批门禁,实现受控发布。
四、学习路径与实战目标
本课程按"认知 → 构建 → 部署 → 运维 → 进阶"的路径推进,具体安排如下:
| 阶段 | 核心内容 | 对应服务 |
|---|---|---|
| 认知与准备 | 平台全景、账号与权限、CLI 环境搭建 | OCI 基础 |
| 镜像管理 | OCIR 仓库创建、镜像推送拉取、认证配置 | OCIR |
| 集群与部署 | OKE 集群创建、节点池管理、应用部署与暴露 | OKE |
| 自动化交付 | DevOps 流水线搭建、CI/CD 集成、审批门禁 | DevOps |
| 运维与进阶 | 监控日志、扩缩容、滚动更新、故障排查 | OKE + DevOps |
完成本课程后,你应当能够独立完成以下实战目标:
- 在 OCI 中创建并配置一个可用的 OKE 集群,获取 kubeconfig 并验证节点就绪。
- 将本地构建的容器镜像打标签并推送到 OCIR,验证镜像可被拉取。
- 编写 Kubernetes Deployment 与 Service 清单,将应用部署到 OKE 并对外暴露。
- 配置一条 OCI DevOps 流水线,实现"代码提交 → 自动构建 → 推送 OCIR → 部署 OKE"的完整闭环。
- 对部署后的应用进行基本的健康检查、日志查看与滚动更新操作。
五、一个最小交付示例的预期形态
为了让你对最终成果有直观预期,这里给出一个最小交付示例的形态描述(非实测结果,仅为教学示例):
# 示例:镜像地址与部署清单片段(教学示例,非实测)
# 镜像地址
ap-chuncheon-1.ocir.io/mytenancy/webapp:v1.0
# Deployment 中的镜像引用
spec:
containers:
- name: webapp
image: ap-chuncheon-1.ocir.io/mytenancy/webapp:v1.0
ports:
- containerPort: 8080
imagePullSecrets:
- name: ocir-secret
当这条 Deployment 被应用后,OKE 会从 OCIR 拉取镜像,在节点上启动 Pod,并通过 Service 暴露端口。你可以通过 kubectl get pods 观察 Pod 状态从 Pending 变为 Running,通过 kubectl get svc 获取外部访问地址。如果 Pod 长时间处于 ImagePullBackOff,通常意味着 imagePullSecret 配置有误或 OCIR 认证失败——这类判断逻辑会在后续排障章节详细展开。
现在,你已经有了这张全景地图。接下来,我们从最基础的 OCI 账号与权限准备开始,逐步把这条交付链上的每个环节落到实处。