OpenShift 本地开发环境配置(基于 Minishift)

2021年11月22日 阅读数:2
这篇文章主要向大家介绍OpenShift 本地开发环境配置(基于 Minishift),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

本文要作什么?

不少为了验证应用在 OpenShift 平台的行为是否正常,或者组成一个简单的开发环境,直接搭建一个 OpenShift/Origin 环境可能过重了,并且运行在本机可能占用内存也太多。此时使用 MiniShift 来组成本身的开发环境就比较合适了。php

本文就简单介绍下如何配置 MiniShift 环境,不管是 Windows/Linux/MacOS都是能够安装的,前提是你须要安装个虚拟机软件 virtualbox。此处将以笔者 Linux 开发环境进行演示,操做大同小异可供参考。html

安装 Minishift

官方 Github Relese Page https://github.com/minishift/minishift/releases,node

cd ~/Downloads
#下载v1.34.3 minishift
wget https://github.com/minishift/minishift/releases/download/v1.34.3/minishift-1.34.3-linux-amd64.tgz
#解压到/usr/bin目录下
sudo tar zxvf minishift-1.34.3-linux-amd64.tgz -C /usr/bin
#验证是否能执行,有版本输出即正常
minishift version
#添加自动补全,重开shell自动提示即正常
sudo minishift completion bash > /etc/bash_completion.d/minishift

对于 Win 环境,将下载的 zip 包解压到任意目录,而后将minishift.exe添加环境变量Path中便可,Win下自动补全功能好像没有。mysql

安装 virtualbox

官方下载地址 https://www.virtualbox.org/wiki/Downloadslinux

根据本身的平台下载安装便可。git

简易搭建docker registry

注意,请提早规划好docker registry端口号,配置到docker上再重启docker服务。github

docker run --name myRegistry --restart=always -d -p 5000:5000 registry

webUI 能够参考 CSDN 胡了了 的博客 https://blog.csdn.net/huqigang/article/details/76655854web

搭建 Gitea

基于 docker-compose 搭建 Gitea 用于 Minishift 上传代码构建镜像。sql

gitea/docker-compose.ymlmongodb

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.15.6
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - ./gitea:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"

启动 Gitea

cd gitea
docker-compose up -d

启动完成后,访问 3000 新建用户便可使用。

配置与启动 Minishift

如下命令依次执行,内存、CPU、硬盘、非安全docker仓库按需配置便可。

#设置虚拟机驱动
minishift config set vm-driver virtualbox
#设置openshift版本
minishift config set openshift-version 3.11.0
#设置虚拟机cpu核数
minishift config set cpus 2
#设置虚拟机内存
minishift config set memory 9GB
#设置虚拟机磁盘大小
minishift config set disk-size 20GB
#设置docker registry仓库地址,刚才建立的那个
minishift config set insecure-registry 192.168.99.1:5000
#设置镜像缓存,方便删除集群后再建立,不须要再从新拉镜像(不开之后再拉较慢)
minishift config set image-caching true
#启用管理员用户插件
minishift addon enable admin-user
#启用任意用户uid,不设置会致使自定义镜像部署时用户设置不正常
minishift addon enable anyuid
#设置静态ip,也能够不设置
minishift ip --set-static

启动 Minishift

#启动minishift,等待初始化完成,首次初始化较慢
hellxz@debian:~/WorkSpace/openshift$ minishift start
-- Starting profile 'minishift'
-- Check if deprecated options are used ... OK
-- Checking if https://github.com is reachable ... FAIL
-- Checking if requested OpenShift version 'v3.11.0' is valid ... SKIP
-- Checking if requested OpenShift version 'v3.11.0' is supported ... OK
-- Checking if requested hypervisor 'virtualbox' is supported on this platform ... OK
-- Checking if VirtualBox is installed ... OK
-- Checking the ISO URL ... OK
-- Checking if provided oc flags are supported ... OK
-- Starting the OpenShift cluster using 'virtualbox' hypervisor ...
-- Starting Minishift VM ..................... OK
-- Checking for IP address ... OK
-- Checking for nameservers ... OK
-- Checking if external host is reachable from the Minishift VM ... 
   Pinging 8.8.8.8 ... OK
-- Checking HTTP connectivity from the VM ... 
   Retrieving http://minishift.io/index.html ... OK
-- Checking if persistent storage volume is mounted ... OK
-- Checking available disk space ... 19% used OK
-- Writing current configuration for static assignment of IP address ... OK
-- OpenShift cluster will be configured with ...
   Version: v3.11.0
-- Copying oc binary from the OpenShift container image to VM ... OK
-- Starting OpenShift cluster ...............................
Getting a Docker client ...
Checking if image openshift/origin-control-plane:v3.11.0 is available ...
Checking type of volume mount ...
Determining server IP ...
Using public hostname IP 192.168.99.115 as the host IP
Checking if OpenShift is already running ...
Checking for supported Docker version (=>1.22) ...
Checking if insecured registry is configured properly in Docker ...
Checking if required ports are available ...
Checking if OpenShift client is configured properly ...
Checking if image openshift/origin-control-plane:v3.11.0 is available ...
Starting OpenShift using openshift/origin-control-plane:v3.11.0 ...
I1121 10:47:29.719658    2437 flags.go:30] Running "create-kubelet-flags"
I1121 10:47:30.136043    2437 run_kubelet.go:49] Running "start-kubelet"
I1121 10:47:30.373865    2437 run_self_hosted.go:181] Waiting for the kube-apiserver to be ready ...
I1121 10:48:00.400822    2437 interface.go:26] Installing "kube-proxy" ...
I1121 10:48:00.401522    2437 interface.go:26] Installing "kube-dns" ...
I1121 10:48:00.401530    2437 interface.go:26] Installing "openshift-service-cert-signer-operator" ...
I1121 10:48:00.401535    2437 interface.go:26] Installing "openshift-apiserver" ...
I1121 10:48:00.401559    2437 apply_template.go:81] Installing "openshift-apiserver"
I1121 10:48:00.402465    2437 apply_template.go:81] Installing "kube-proxy"
I1121 10:48:00.403006    2437 apply_template.go:81] Installing "kube-dns"
I1121 10:48:00.403118    2437 apply_template.go:81] Installing "openshift-service-cert-signer-operator"
I1121 10:48:35.202811    2437 interface.go:41] Finished installing "kube-proxy" "kube-dns" "openshift-service-cert-signer-operator" "openshift-apiserver"
I1121 10:48:45.237092    2437 run_self_hosted.go:242] openshift-apiserver available
I1121 10:48:45.237114    2437 interface.go:26] Installing "openshift-controller-manager" ...
I1121 10:48:45.237133    2437 apply_template.go:81] Installing "openshift-controller-manager"
I1121 10:48:47.120838    2437 interface.go:41] Finished installing "openshift-controller-manager"
Adding default OAuthClient redirect URIs ...
Adding centos-imagestreams ...
Adding registry ...
Adding router ...
Adding persistent-volumes ...
Adding web-console ...
Adding sample-templates ...
I1121 10:48:47.161522    2437 interface.go:26] Installing "centos-imagestreams" ...
I1121 10:48:47.161533    2437 interface.go:26] Installing "openshift-image-registry" ...
I1121 10:48:47.161541    2437 interface.go:26] Installing "openshift-router" ...
I1121 10:48:47.161546    2437 interface.go:26] Installing "persistent-volumes" ...
I1121 10:48:47.161554    2437 interface.go:26] Installing "openshift-web-console-operator" ...
I1121 10:48:47.161560    2437 interface.go:26] Installing "sample-templates" ...
I1121 10:48:47.161607    2437 interface.go:26] Installing "sample-templates/postgresql" ...
I1121 10:48:47.161614    2437 interface.go:26] Installing "sample-templates/nodejs quickstart" ...
I1121 10:48:47.161620    2437 interface.go:26] Installing "sample-templates/rails quickstart" ...
I1121 10:48:47.161626    2437 interface.go:26] Installing "sample-templates/jenkins pipeline ephemeral" ...
I1121 10:48:47.161632    2437 interface.go:26] Installing "sample-templates/mongodb" ...
I1121 10:48:47.161637    2437 interface.go:26] Installing "sample-templates/mysql" ...
I1121 10:48:47.161647    2437 interface.go:26] Installing "sample-templates/cakephp quickstart" ...
I1121 10:48:47.161653    2437 interface.go:26] Installing "sample-templates/dancer quickstart" ...
I1121 10:48:47.161662    2437 interface.go:26] Installing "sample-templates/django quickstart" ...
I1121 10:48:47.161684    2437 interface.go:26] Installing "sample-templates/sample pipeline" ...
I1121 10:48:47.161724    2437 interface.go:26] Installing "sample-templates/mariadb" ...
I1121 10:48:47.161772    2437 apply_list.go:67] Installing "sample-templates/mariadb"
W1121 10:48:47.162234    2437 create_secret.go:78] Error reading $HOME/.docker/config.json: open /home/docker/.docker/config.json: no such file or directory, imagestream import credentials will not be setup
I1121 10:48:47.162270    2437 apply_list.go:67] Installing "centos-imagestreams"
I1121 10:48:47.162982    2437 apply_list.go:67] Installing "sample-templates/mongodb"
I1121 10:48:47.163194    2437 apply_list.go:67] Installing "sample-templates/mysql"
I1121 10:48:47.163346    2437 apply_list.go:67] Installing "sample-templates/cakephp quickstart"
I1121 10:48:47.163459    2437 apply_list.go:67] Installing "sample-templates/dancer quickstart"
I1121 10:48:47.163564    2437 apply_list.go:67] Installing "sample-templates/django quickstart"
I1121 10:48:47.163670    2437 apply_list.go:67] Installing "sample-templates/sample pipeline"
I1121 10:48:47.163706    2437 apply_template.go:81] Installing "openshift-web-console-operator"
I1121 10:48:47.163904    2437 apply_list.go:67] Installing "sample-templates/postgresql"
I1121 10:48:47.163958    2437 apply_list.go:67] Installing "sample-templates/nodejs quickstart"
I1121 10:48:47.164070    2437 apply_list.go:67] Installing "sample-templates/rails quickstart"
I1121 10:48:47.164091    2437 apply_list.go:67] Installing "sample-templates/jenkins pipeline ephemeral"
I1121 10:48:55.790359    2437 interface.go:41] Finished installing "sample-templates/postgresql" "sample-templates/nodejs quickstart" "sample-templates/rails quickstart" "sample-templates/jenkins pipeline ephemeral" "sample-templates/mongodb" "sample-templates/mysql" "sample-templates/cakephp quickstart" "sample-templates/dancer quickstart" "sample-templates/django quickstart" "sample-templates/sample pipeline" "sample-templates/mariadb"
I1121 10:48:59.606507    2437 interface.go:41] Finished installing "centos-imagestreams" "openshift-image-registry" "openshift-router" "persistent-volumes" "openshift-web-console-operator" "sample-templates"
Server Information ...
OpenShift server started.

The server is accessible via web console at:
    https://192.168.99.115:8443/console

此时直接访问输出的地址就能访问平台了,最好先执行下边的命令再进平台。

启动后配置命令:

#启用admin用户
minishift addons apply admin-user
#启用任意用户uid,容许pod使用root用户运行(便于调试)
minishift addons apply anyuid

访问 Minishift WebUI,那个 console 地址(本例中为https://192.168.99.115:8443/console),使用 developer 和任意密码便可登陆。

可使用默认的 My Project 也能够本身新建,这里使用默认的就行。

到这个熟悉的 OpenShift 界面就能够了。除了 logo 不大同样,其他功能都差很少。

立刻更新自定义OpenShift镜像,静请期待!

本文同步发布如下两个地址,未经许可禁止转载。