22

在 OpenShift 集群中创建自己的 source-to-image 条目

 4 years ago
source link: http://www.ibm.com/developerworks/cn/cloud/library/creating-your-own-source-to-image-entry-openshift/index.html?ca=drs-
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在本教程中,您将学习如何为 OpenShift 集群创建自己的 source-to-image (S2I) 条目。比如,如果您计划将多个应用部署到云环境,就可以使用自定义 S2I,而不是为每个项目或应用构建单独的镜像。又比如,如果您有一个在 GitHub 上进行更新的应用,您希望这些更新能够自动触发和部署一个构建,这时或许您就会想要使用 S2I 和 GitHub webhook。本教程中的示例使用 Red Hat® OpenShift® on IBM Cloud™。

免费试用 IBM Cloud

利用 IBM Cloud Lite 快速轻松地构建您的下一个应用程序。您的免费帐户从不过期,而且您会获得 256 MB 的 Cloud Foundry 运行时内存和包含 Kubernetes 集群的 2 GB 存储空间。

前提条件

要完成本教程,您需要设置以下环境:

预计花费时间

完成本教程大约需要 20 分钟。

第 1 步:了解构建器镜像和 Docker 镜像

OpenShift source-to-image 条目是从构建器镜像创建的。这些镜像可用于从源代码构建可复制的容器镜像。本教程主要关注 Docker Hub 上的 Docker 镜像。

借助 Docker,可通过多种方式创建 source-to-image 条目。

  • 从头构建一个 基础镜像
  • 从现有基础镜像构建一个 父镜像
  • 使用 Docker Hub 中的现有基础镜像或父镜像。

第 2 步:构建一个 Go 父镜像

在本教程中,您将从一个 现有基础镜像 构建一个简单的 Go 父镜像。首先,将以下内容保存到 Dockerfile 中:

FROM centos/go-toolset-7-centos7:latest
EXPOSE 8080

上述操作的目的是使用现有基础镜像和公开的 8080 端口,以便能够从该镜像访问在容器中运行的一个应用程序。

第 3 步:将新镜像推送到 Docker Hub

通过以下命令,从 Dockerfile 所在的目录,将新镜像推送到 Docker Hub:

export DOCKERHUB_USERNAME=<your-dockerhub-username>
docker build -t $DOCKERHUB_USERNAME/go_s2i:latest .
docker login
docker push $DOCKERHUB_USERNAME/go_s2i:latest

第 4 步:定义镜像流

我们需要做的下一步就是定义 镜像流 。为此,我们将创建 goImageStream.json ,其中包含以下内容:

注意:应将 <your-dockerhub-username> 替换为自己真实的 Docker Hub 用户名

{
    "apiVersion": "v1",
    "kind": "ImageStream",
    "metadata": {
        "annotations": {
            "openshift.io/display-name": "Go"
        },
        "name": "golang"
    },
    "spec": {
        "tags": [
            {
                "name": "latest",
                "annotations": {
                    "description": "Build and run Go applications on CentOS 7 using this builder image",
                    "iconClass": "icon-go-gopher",
                    "openshift.io/display-name": "Go (Latest)",
                    "supports": "golang",
                    "tags": "builder,golang,go"
                },
                "from": {
                    "kind": "DockerImage",
                    "name": "docker.io<your-dockerhub-username>/go_s2i:latest"
                },
                "referencePolicy": {
                    "type": "Local"
                }
            }
        ]
    }
}

第 5 步:在 OpenShift 集群中创建 S2I 条目

在 IBM Cloud 上配置了 OpenShift 集群后,打开 OpenShift Web 控制台,将登录命令复制到终端窗口中。从新创建的 goImageStream.json 文件所在的目录,运行以下命令,以便在 OpenShift 集群中创建自己的 Source-to-Image 条目:

oc apply -n openshift --as system:admin -f goImageStream.json

刷新 OpenShift Web 控制台,您应该会在目录中看到 Go 条目。

第 6 步:使用构建器镜像创建一个 S2I 应用程序

现在,您可以使用这个构建器镜像创建一个 S2I 应用程序。创建一个新项目,并从目录中选择新的 Go 选项。选择新创建的项目,并为应用程序提供一个名称。对于 Git 存储库,使用 https://github.com/sclorg/golang-ex.git

该存储库是一个简单的 Go 应用程序,会在浏览器中显示 Hello OpenShift! 。构建完应用程序后,单击创建的路径,您应该会看到该应用程序正在运行。

结束语

现在,您已在 Docker Hub 上成功创建了构建器镜像,定义了镜像流,并将其应用到了 OpenShift 集群,而且使用自己的 Source-to-Image 条目将应用程序部署到了 OpenShift。您可以通过 Red Hat OpenShift on IBM Cloud 来自行尝试这些操作。

要了解有关 Source-to-Image 的更多信息,可以观看本视频。

参考资源

本文翻译自: Create your own source-to-image entry in an OpenShift cluster (2019-11-07)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK