开源项目lab-k8s-playground v1.3.1发布,All-in-One K8S Playground现在可以支持最新的OpenShift v4啦!如果您喜欢这个项目,欢迎点击下面的按钮,关注,加星,以及贡献代码^_^

Watch Star Fork

OpenShift v4

OpenShift是Red Hat开发的构筑于Kubernetes之上的企业级容器应用平台,为企业应用与服务的开发,管理,以及部署提供了全面的支持,是当前炙手可热的一款Kubernetes发行版本。其社区版称为OKD(OpenShift Kubernetes Distribution的缩写,原名Origin)。

OpenShift v4是目前OpenShift的最新版本,和v3相比,新版本从功能,架构,到实现,都有非常巨大的变化,当然这也包括安装方式的变化。从v4开始,OpenShift不再支持oc cluster up方式的单节点集群部署,而是开发了专门的Installer,并在此基础上提供了一种在本机部署的单节点集群安装方式,叫做CodeReady Containers(简称为crc)。

尽管v3和v4有着天壤之别,通过本文将会看到,利用All-in-One Kubernetes Playground,我们依然可以沿用和之前同样的命令行命令,启动OpenShift v4的单节点集群。这是因为,Playground为我们屏蔽了差异,使我们可以用统一的方式,在单机环境下部署:多节点的标准Kubernetes集群,以及单节点的OpenShift v3或v4集群。

不仅如此,像Istio这样的应用,也已经在这一版本的Playground被成功迁移到了OpenShift v4集群上。只需要简单几条命令,就可以完成部署,整个过程是完全自动化进行的,并且可以无限次重复!

准备环境

All-in-One K8S Playground 中文使用指南以及All-in-One K8S Playground新增OpenShift支持一文里,我们已经学会了如何在单机环境下快速自动部署起一个支持多节点的标准Kubernetes集群,以及支持单节点的OpenShift v3集群。如果要想让Playground支持OpenShift v4,只要把K8S_PROVIDER这个环境变量的值设置成crc就可以了。

export K8S_PROVIDER=crc

目前,该环境变量支持的合法值包括:

  • dind,代表基于DIND技术(即Docker-in-Docker)实现的,可在单机环境里运行的,多节点标准Kubernetes集群;
  • oc,代表基于OpenShift的oc cluster up命令实现的,可在单机环境里运行的,单节点OpenShift 3.x集群;
  • crc,代表基于OpenShift的CodeReady Containers实现的,可在单机环境里运行的,单节点OpenShift v4集群;

执行下面的命令,可以验证当前环境变量的设置是否正确:

$ launch env
Targets to be launched: [env]
####################################
# Launch target env...
####################################
Common:
  LAB_HOME=/root/lab-playgrounds/lab-k8s-playground
  HOST_IP     : 127.0.0.1
  K8S_PROVIDER: crc

Specific to crc:
  CRC_VERSION          : 1.2.0
  CRC_MEMORY           : 10240
  CRC_CPUS             : 4

Total elapsed time: 0 seconds

通过相关环境变量的设置,我们还可以选择特定的crc版本,集群所占主机内存与CPU资源的大小。

crc会在宿主机上首先启动一个虚拟机,然后再在虚拟机里跑OpenShift。通常,它会在不同的操作系统环境下自动选择相应的虚拟机技术。比如:

  • 在MacOS上,使用Hyperkit;
  • 在Windows上,使用Hyper-V;
  • 在Linux上,使用KVM;

目前crc可以支持在Linux,MacOS,Windows上运行。

启动OpenShift v4

启动OpenShift v4集群所用的命令和启动OpenShift v3以及标准Kubernetes集群是一模一样的:

$ launch kubernetes

等命令执行完毕以后,Playground会为我们在当前主机上启动起一个单节点的OpenShift v4集群。

在OpenShift启动过程中,可能会提示输入Pull Secret。我们可以从这里找到自己的Pull Secret。如果把Pull Secret下载下来,并以pull-secret.txt为文件名保存到当前用户主目录下的.crc子目录,那么Playground会自动检测到并读取它,这样就不会在OpenShift启动过程中再提示用户输入了。

执行如下命令,我们可以看到OpenShift Web Console的访问地址:

$ launch endpoints
Targets to be launched: [endpoints]
####################################
# Launch target endpoints...
####################################
Common:
  ✗ Web Terminal     : https://127.0.0.1:4200 
  ✔ OpenShift Console: https://console-openshift-console.apps-crc.testing (admin usr/pwd: kubeadmin/F44En-Xau6V-jQuyb-yuMXB)

Total elapsed time: 0 seconds

使用OpenShift v4

根据launch endpoints返回结果中给出的管理员用户名和密码,我们可以登录到OpenShift所提供的Web Console里,对应用和集群进行管理。

如果希望通过命令行来管理应用和集群,则可以利用OpenShift提供的oc命令进行登录。以管理员身份登录:

$ oc login -u kubeadmin -p <password>

或者以开发人员身份登录:

$ oc login -u developer -p developer

在OpenShift v4上运行Istio

在All-in-One K8S Playground里基于OpenShift v4运行Istio只需要一条命令就能实现。而且,这条命令和基于标准Kubernetes集群,以及OpenShift v3运行Istio是一模一样的!关于如何在标准Kubernetes集群里运行Istio,请参见All-in-One K8S Playground 中文使用指南一文;在OpenShift v3上执行,则参见All-in-One K8S Playground新增OpenShift支持一文。

等Kubernetes集群启动起来以后,执行如下命令启动Istio,以及它的Bookinfo示例应用:

$ launch istio istio-bookinfo

由于crc是在宿主机上跑着的一个虚拟机里运行OpenShift的,它所使用的网络是一个只在当前宿主机范围内可见的本地局域网,所以通常我们只能在本机对OpenShift集群,以及集群里的应用进行访问。如果希望从另一台机器上远程访问这个集群,可以使用反向代理。Playground里已经为我们预装了nginx,如果要远程访问Istio的应用,可以执行如下命令:

$ launch istio::expose istio-bookinfo::expose

它会自动帮我们更新nginx的配置,加入对Istio各个应用的请求转发规则,从而把Istio在本机的各个应用服务暴露给其他机器。

另外,如果要远程访问OpenShift v4的Web Console,则依然使用和本地访问相同的URL地址。为此,需要在本机的/etc/hosts文件里添加相应配置,比如:

192.168.0.10 api.crc.testing oauth-openshift.apps-crc.testing console-openshift-console.apps-crc.testing

这里的192.168.0.10就是OpenShift集群所在机器的IP地址。对于其他应用的访问地址,由于使用了nip.io提供的DNS服务,所以不需要把主机IP和主机名的映射定义添加到本地的/etc/hosts文件里了。

如果想得到包括Web Console在内的当前集群里所有应用的访问地址,可以通过运行launch endpoints命令查看到。

$ launch endpoints 
Targets to be launched: [endpoints]
####################################
# Launch target endpoints...
####################################
Common:
  ✗ Web Terminal     : https://127.0.0.1:4200 
  ✔ OpenShift Console: https://console-openshift-console.apps-crc.testing (admin usr/pwd: kubeadmin/F44En-Xau6V-jQuyb-yuMXB)

Istio:
  ✔ Grafana       : http://grafana-istio-system.apps-crc.testing 
  ✔ Kiali         : http://kiali-istio-system.apps-crc.testing 
  ✔ Jaeger        : http://jaeger-query-istio-system.apps-crc.testing 
  ✔ Prometheus    : http://prometheus-istio-system.apps-crc.testing 
  ✔ Istio Bookinfo: http://istio-ingressgateway-istio-system.apps-crc.testing/productpage 

Istio proxied:
  ✔ Grafana       : http://grafana-istio-system.192.168.0.10.nip.io
  ✔ Kiali         : http://kiali-istio-system.192.168.0.10.nip.io 
  ✔ Jaeger        : http://jaeger-query-istio-system.192.168.0.10.nip.io 
  ✔ Prometheus    : http://prometheus-istio-system.192.168.0.10.nip.io 
  ✔ Istio Bookinfo: http://istio-ingressgateway-istio-system.192.168.0.10.nip.io/productpage 

Total elapsed time: 2 seconds

更多参考资料

读到这里,相信你对开源项目lab-k8s-playground及其All-in-One Playground的应用应该有了更全面的了解了。那么,还有哪些参考资料你可以访问呢?那就请快速读一下下面这段Shell脚本编写的“代码”吧😊 相信一定难不倒你!

选择你感兴趣的分支,点击相应分支下列出的文档资源。最后,如果您喜欢这个项目,欢迎点击本文开头处(或下列代码注释里)的按钮,关注,加星,以及贡献代码^_^

function where_to_start {
  case $I_want in
  "to learn what it provides in general")
    cat "All-in-One K8S Playground Overview"
    ;;
  "to get started quickly")
    cat "All-in-One K8S Playground Usage Guide"
    cat "All-in-One K8S Playground 中文使用指南"
    ;;
  "to understand what's behind")
    cat "Launch multi-node k8s cluster locally in one min..."
    cat "Kubernetes实战视频: 如何1分钟内在本地启动一个多节点集群"
    cat "OpenShift v3的填坑之旅"
    cat "OpenShift v4的填坑之旅"
    ;;
  "to extend it by myself")
    cat "Launch Utility Usage Guide"
    cat "A Sample Target for Demo Purpose"
    ;;
  "to learn more cool features")
    cat "Quick Guide to Launch APIC Playground"
    cat "把API Connect关进All-in-One K8S Playground里"
    cat "All-in-One K8S Playground新增OpenShift支持"
    cat "All-in-One K8S Playground支持OpenShift v4"
    ;;
  "to contribute back")
    # Feel free to click these buttons: Watch Star Fork
    git clone https://github.com/morningspace/lab-k8s-playground.git
    ;;
  esac
}

留下评论

您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 *

正在加载...