性感的桔子 · 搭建android源代码gitlab仓库 ...· 1 周前 · |
听话的牛肉面 · Import and migrate ...· 6 天前 · |
从未表白的煎饼果子 · gitlab如何从Github导入项目 - ...· 6 天前 · |
粗眉毛的沙滩裤 · CSS 选择器 | 菜鸟教程· 1 年前 · |
强健的啄木鸟 · New action to take ...· 1 年前 · |
年轻有为的葫芦 · 深度理解梯度在神经网络中的应用 - 知乎· 1 年前 · |
千杯不醉的丝瓜 · 为什么nativescript-phone ...· 1 年前 · |
坐怀不乱的金针菇 · Excel VBA ...· 1 年前 · |
目录
Helm 是一个管理 Kubernetes Charts 的工具,Charts 可以理解为预先配置的 Kubernetes 资源包,通过 Helm 可以轻松的安装和管理 Kubernetes 应用,类似我们平时使用的 apt、yum、homebrew 工具。Helm 包含两部分:客户端 Helm 和服务端 Tiller,服务端 Tiller 运行在 Kubernetes 集群内部,作为一个代理 Pod 管理安装我们的 Charts。 而 Charts 配置至少需要两样:一是 Package 描述文件(Chart.yaml),主要用来针对该资源包进行一些必要的说明信息。二是一个或多个包含应用需要安装的 Kubernetes 清单文件的模板文件。
通过之前的文章 初试 Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台 ,我们已经演示了如何通过 Helm 安装 Spinnaker 平台到本地 Kubernetes 集群中。本次演示环境,我依旧是在本机 MAC OS 上操作,以下是安装的软件及版本:
注意:这里 Kubernetes 集群搭建我使用 Minikube 来完成,Minikube 启动的单节点 k8s Node 实例是需要运行在本机的 VM 虚拟机里面,所以需要提前安装好 VM,这里我选择 Oracle VirtualBox。k8s 运行底层使用 Docker 容器,所以本机需要安装好 Docker 环境,这里忽略 Docker、VirtualBox 的安装过程,着重介绍下 Minikube、Kuberctl 和 Helm 的安装。
之前文章 初试 minikube 本地部署运行 kubernetes 实例 中,我有详细介绍 Minikube 以及 kubectl 安装,这里我再次简单描述一下,不过有一点要注意的地方,就是如何通过 HomeBrew 安装指定版本软件 。
首先我们需要安装 Minikube 到本机 MacOS 上,具体操作命令如下:
# 安装指定版本,例如:v0.22.3
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.22.3/minikube-darwin-amd64
2、赋二进制文件执行权限
$ chmod +x minikube
3、将二进制文件移到 PATH 中
$ sudo mv minikube /usr/local/bin/
其次还需要安装 kubectl 来管理 Kubernetes 集群,具体操作命令如下:
1、安装最新版
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl
2、赋二进制文件执行权限
chmod +x ./kubectl
3、将二进制文件移到 PATH 中
sudo mv ./kubectl /usr/local/bin/kubectl
当然,针对 MacOS 系统,可以使用 Homebrew 工具执行
brew install kubectl
命令安装即可。这里,要注意一下,使用 HomeBrew 工具安装确实很方便,但是它默认安装的是最新版本,由于我们 Kubernetes 安装的版本为 v1.7.5,为了避免出现工具版本兼容性问题,所以 kubectl 最好也安装该版本。那么问题来了,如何让 HomeBrew 安装指定版本,而非默认最新版本呢?
首先,我们需要找到 HomeBrew 安装软件的安装源在哪里,通过命令
helm info xxxx
可以得到相关信息。例如,我们查看 kubectl 的相关信息。
$ brew info kubectl
kubernetes-cli: stable 1.11.0 (bottled), HEAD
Kubernetes command-line interface
https://kubernetes.io/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/kubernetes-cli.rb
==> Dependencies
Build: go ✔
==> Options
--HEAD
Install HEAD version
从这个输出可以得到几个信息,首先 kubernetes-cli 最新版本已经到了
1.11.0
,其次
From
字段显示了其安装源地址,最后,该软件需要依赖 go 语言环境。我们浏览器访问一下该安装源地址文件
https://github.com/Homebrew/homebrew-core/blob/master/Formula/kubernetes-cli.rb
,可以看到如下核心信息:
class KubernetesCli < Formula
desc "Kubernetes command-line interface"
homepage "https://kubernetes.io/"
url "https://github.com/kubernetes/kubernetes.git",
:tag => "v1.11.0",
:revision => "91e7b4fd31fcd3d5f436da26c980becec37ceefe"
head "https://github.com/kubernetes/kubernetes.git"
......
该文件中
:tag
和
:revision
就是控制安装源版本的地方。只要我们能够将这两个标记切换到指定版本 tag 和 revision ,那么 HomeBrew 就能安装指定版本了。接下来,我们 clone 整个
Homebrew/homebrew-core
库到本地。
$ git clone https://github.com/Homebrew/homebrew-core.git
然后,查看
kubernetes-cli.rb
文件所有提交记录,从中找到
1.7.5
版本 commit_id。
$ cd homebrew-core
$ git log ./Formula/kubernetes-cli.rb | less
......
commit 6efa7fb97724c27bf436a8b888008cc821f5b186
Author: Christoph Blecker <admin@toph.ca>
Date: Thu Aug 31 12:27:35 2017 -0700
kubernetes-cli 1.7.5
Closes #17448.
Signed-off-by: JCount <JCount42@gmail.com>
......
我们找到
kubernetes-cli 1.7.5
版本的 commit_id 为
6efa7fb97724c27bf436a8b888008cc821f5b186
,接下来,切换到该 commit 版本。
$ git checkout 6efa7fb
此时,再次查看
kubernetes-cli.rb
文件,就是我们需要的指定版本源信息了。
$ cat ./Formula/kubernetes-cli.rb
class KubernetesCli < Formula
desc "Kubernetes command-line interface"
homepage "https://kubernetes.io/"
url "https://github.com/kubernetes/kubernetes.git",
:tag => "v1.7.5",
:revision => "17d7182a7ccbb167074be7a87f0a68bd00d58d97"
head "https://github.com/kubernetes/kubernetes.git"
......
最后,执行 brew 安装命令,指定该安装源文件即可完成指定版本 kubectl 的安装。
$ brew install ./Formula/kubernetes-cli.rb
安装完毕,使用 kubectl 命令查看版本信息,确实是否安装成功。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.5", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-08-31T09:14:02Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"darwin/amd64"}
以上都安装完毕后,就可以启动 Minikube 了。在启动之前,我们还需要配置一下 Minikube VM 分配内存、CPU 和存储空间,因为根据官网文档 GitLab-Omnibus Helm Chart ,集群配置至少如下:
所以,为了满足应用配置的需要,我们要保证 Minikube VM 至少分配 4G 内存、2核 CPU 和 41G 存储空间,可以通过以下命令行操作:
# 设置内存大小
$ minikube config set memory 4096
# 设置 CPU 核数
$ minikube config set cpus 2
# 设置存储空间大小
$ minikube config set disk-size 51200
设置完成后,就可以执行
minikube start
操作了。当然如果觉得这样比较麻烦,我们也可以在执行
minikube start
命令时,指定参数配置也可以。
$ minikube start --memory 4096 --cpus 2 --disk-size 51200
Starting local Kubernetes v1.7.5 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
此时,去 VirtualBox 界面可以看到 Minikube 虚拟机已经成功启动了。我们也可以通过命令行查看一下集群状态。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.5", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-08-31T09:14:02Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.5", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-09-18T20:30:29Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
$ kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health": "true"}
这里要提醒一下,如果是第一次启动 Minikube,很有可能因为网络的问题,下载国外镜像失败导致启动服务失败,参照上边文章中提到的解决办法,替代需要访问外国网站下载的 images 即可。注意:直接在当前窗口上执行
docker images
是不会列举出来 Minikube 虚拟机内部镜像列表的,需要通过命令设置 Minikube 虚拟机的 Docker 环境变量。
$ minikube docker-env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/wanyang3/.minikube/certs"
export DOCKER_API_VERSION="1.23"
# Run this command to configure your shell:
# eval $(minikube docker-env)
# 设置 Docker 环境变量
$ eval $(minikube docker-env)
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gcr.io/google-containers/kube-addon-manager v6.4-beta.2 51a9cd46a30c 2 months ago 79.2MB
gcr.io/google_containers/kubernetes-dashboard-amd64 v1.6.3 4da5a945ae40 4 months ago 88.9MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 1.14.4 dbe106a365a5 6 months ago 41.4MB
gcr.io/google_containers/k8s-dns-sidecar-amd64 1.14.4 db6d003fad04 6 months ago 41.8MB
gcr.io/google_containers/k8s-dns-kube-dns-amd64 1.14.4 a8e00546bcf3 8 months ago 49.4MB
gcr.io/google_containers/pause-amd64 3.0 99e59f495ffa 22 months ago 747kB
好了,Kubernetes 集群已经有了,在正式安装 Gitlab 之前,我们需要安装 Helm 客户端到本地,同时安装服务端 Tiller 到 Kubernetes 中。Helm 安装方式有很多种,这里我就针对本机 MacOS 系统用两种方式安装一下。
方式一:下载最新版 release 版 Helm 二进制码安装。
$ wget https://storage.googleapis.com/kubernetes-helm/helm-v2.8.0-darwin-amd64.tar.gz
$ tar -zxvf helm-v2.7.2-darwin-amd64.tar.gz
$ chmod +x ./darwin-amd64/helm
$ mv ./darwin-amd64/helm /usr/local/bin/
方式二:使用 HomeBrew 安装。
$ brew install kubernetes-helm
接下来,我们需要初始化并验证 Helm 了。
$ helm init
Creating /Users/wanyang3/.helm
Creating /Users/wanyang3/.helm/repository
Creating /Users/wanyang3/.helm/repository/cache
Creating /Users/wanyang3/.helm/repository/local
Creating /Users/wanyang3/.helm/plugins
Creating /Users/wanyang3/.helm/starters
Creating /Users/wanyang3/.helm/cache/archive
Creating /Users/wanyang3/.helm/repository/repositories.yaml
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com
Adding local repo with URL: http://127.0.0.1:8879/charts
$HELM_HOME has been configured at /Users/wanyang3/.helm.
稍等一会,你就会发现服务端 Tiller 已经安装到 Minikube 集群中了,并且作为 Kubernetes Pod 服务运行在 kube-system 的 namespace 中.
$ helm version
Client: &version.Version{SemVer:"v2.8.0", GitCommit:"14af25f1de6832228539259b821949d20069a222", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.8.0", GitCommit:"14af25f1de6832228539259b821949d20069a222", GitTreeState:"clean"}
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default hello-minikube-2754686071-0g6h3 1/1 Running 1 1d
kube-system kube-addon-manager-minikube 1/1 Running 1 1d
kube-system kube-dns-910330662-04l0k 3/3 Running 3 1d
kube-system kubernetes-dashboard-2lvgh 1/1 Running 1 1d
kube-system tiller-deploy-246345418-sqx12 1/1 Running 3 1d
这里值的一提的是,由于国内网络的问题,在安装 Tiller 的时候,需要下载镜像
gcr.io/kubernetes-helm/tiller:v2.8.0
,很有可能会安装失败,这里我借鉴网上下载国外镜像的方式,通过
DockerHub 官网
中 “Create Automated Build” 功能中的 “Create Auto-build Github”,关联自己的 GitHub 项目,可以选择对应的 dockerfile 文件,来执行自动构建,从而将生成的指定 Docker Image 镜像上传到 DockerHub 上。通过这个功能,我将 Tiller 需要的镜像上传到了我的 DockerHub 仓库里面去了,然后在本地 Minikube 中下载镜像,修改镜像名称即可,虽然麻烦了点,但是解决了我们不能下载国外镜像的难题。
$ docker pull huwanyang168/tiller:v2.8.0
$ docker tag huwanyang168/tiller:v2.8.0 gcr.io/kubernetes-helm/tiller:v2.8.0
执行上述操作后,再执行
helm init
命令,就可以避开镜像下载不到的问题,从而完成 Tiller 的安装和启动。如果 Tiller 安装失败,通过
helm version
命令会提示连接不到 Tiller。
现在 Minikube 和 Helm 已经运行起来了,接下来我们可以安装 Gitlab 到 Kubernetes 中了。在 Kubernetes Charts GitHub 中已经支持 Gitlab Chart 方式安装,安装过程非常简单,就一条命令就可以完成整个安装。在开始安装之前,需要一个 Yaml 配置文件(values.yaml)来配置 Gitlab 相关信息。我们可以从 Gitlab Helm Chart GitHub 中获取最新版下载到本地并配置相关信息。
## GitLab CE image
## ref: https://hub.docker.com/r/gitlab/gitlab-ce/tags/
image: gitlab/gitlab-ce:10.6.2-ce.0
## Specify a imagePullPolicy
## 'Always' if imageTag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
imagePullPolicy: IfNotPresent
## The URL (with protocol) that your users will use to reach the install.
## ref: https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
externalUrl: http://my.gitlab.com/
## Change the initial default admin password if set. If not set, you'll be
## able to set it when you first visit your install.
gitlabRootPassword: "123456hwy"
## For minikube, set this to NodePort, elsewhere use LoadBalancer
## ref: http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types
serviceType: NodePort
## Ingress configuration options
ingress:
annotations:
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
enabled: false
# - secretName: gitlab.cluster.local
# hosts:
# - gitlab.cluster.local
url: gitlab.cluster.local
## Configure external service ports
## ref: http://kubernetes.io/docs/user-guide/services/
sshPort: 22
httpPort: 80
httpsPort: 443
## livenessPort Port of liveness probe endpoint
livenessPort: http
## readinessPort Port of readiness probe endpoint
readinessPort: http
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
resources:
## GitLab requires a good deal of resources. We have split out Postgres and
## redis, which helps some. Refer to the guidelines for larger installs.
## ref: https://docs.gitlab.com/ce/install/requirements.html#hardware-requirements
requests:
memory: 1Gi
cpu: 500m
limits:
memory: 2Gi
cpu: 1
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
## ref: https://docs.gitlab.com/ce/install/requirements.html#storage
persistence:
## This volume persists generated configuration files, keys, and certs.
gitlabEtc:
enabled: true
size: 1Gi
## If defined, volume.beta.kubernetes.io/storage-class: <storageClass>
## Default: volume.alpha.kubernetes.io/storage-class: default
# storageClass:
accessMode: ReadWriteOnce
## This volume is used to store git data and other project files.
## ref: https://docs.gitlab.com/omnibus/settings/configuration.html#storing-git-data-in-an-alternative-directory
gitlabData:
enabled: true
size: 10Gi
## If defined, volume.beta.kubernetes.io/storage-class: <storageClass>
## Default: volume.alpha.kubernetes.io/storage-class: default
# storageClass:
accessMode: ReadWriteOnce
## Configuration values for the postgresql dependency.
## ref: https://github.com/kubernetes/charts/blob/master/stable/postgresql/README.md
postgresql:
# 9.6 is the newest supported version for the GitLab container
imageTag: "9.6.5"
cpu: 1000m
memory: 1Gi
postgresUser: gitlab
postgresPassword: gitlab
postgresDatabase: gitlab
persistence:
size: 10Gi
## Configuration values for the redis dependency.
## ref: https://github.com/kubernetes/charts/blob/master/stable/redis/README.md
redis:
redisPassword: "gitlab"
resources:
requests:
memory: 1Gi
persistence:
size: 10Gi
注意:这里大多都是官方默认配置,不过有几个地方需要修改下配置:
gitlab/gitlab-ce:10.6.2-ce.0
镜像,默认
gitlab/gitlab-ce:9.4.1-ce.0
版本有点低。
IfNotPresent
,优先从本地查找镜像,避免每次都去获取最新镜像,导致版本兼容性问题。
http://my.gitlab.com/
,后边配置 Ingress 配合本地 Host 绑定方式即可访问。
OK,最后使用 Helm 执行一条命令即可完成安装。
$ helm install --name gitlab -f values.yaml stable/gitlab-ce
说明一下,
helm install ...
命令可以配置其他启动参数,这里使用了最基本参数的配置,默认安装到 default 命名空间,如果想指定其他命名空间安装,可以使用参数
--namespace xxx
来完成。
执行完毕,稍等一会,就会发现控制台输出 Gitlab 已经安装完成并启动完成啦!
$ helm install --name gitlab -f values.yaml stable/gitlab-ce
Error: failed to download "stable/gitlab-ce"
bj-m-204072a:k8s-gitlab-ce wanyang3$ helm install --name gitlab -f values.yaml stable/gitlab-ce
NAME: gitlab
LAST DEPLOYED: Wed Jul 11 11:36:36 2018
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Secret
NAME TYPE DATA AGE
gitlab-postgresql Opaque 1 2s
gitlab-redis Opaque 1 2s
gitlab-gitlab-ce Opaque 4 2s
==> v1/ConfigMap
NAME DATA AGE
gitlab-gitlab-ce 1 2s
==> v1/PersistentVolumeClaim
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
gitlab-postgresql Pending standard 2s
gitlab-redis Bound pvc-9d3f3747-84bb-11e8-ad5b-080027de4c7f 10Gi RWO standard 2s
gitlab-gitlab-ce-data Bound pvc-9d401d9d-84bb-11e8-ad5b-080027de4c7f 10Gi RWO standard 2s
gitlab-gitlab-ce-etc Pending standard 2s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gitlab-postgresql ClusterIP 10.0.0.77 <none> 5432/TCP 2s
gitlab-redis ClusterIP 10.0.0.67 <none> 6379/TCP 2s
gitlab-gitlab-ce LoadBalancer 10.0.0.133 <pending> 22:30733/TCP,80:30638/TCP,443:31737/TCP 1s
==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
gitlab-postgresql 1 1 1 0 1s
gitlab-redis 1 1 1 0 1s
gitlab-gitlab-ce 1 1 1 0 1s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
gitlab-postgresql-1290581213-jbm0s 0/1 Pending 0 1s
gitlab-redis-2286670209-dfrks 0/1 Pending 0 0s
gitlab-gitlab-ce-2349088227-z1nkn 0/1 Pending 0 0s
NOTES:
##############################################################################
This chart has been deprecated in favor of the official GitLab chart:
http://docs.gitlab.com/ce/install/kubernetes/gitlab_omnibus.html
##############################################################################
1. Get your GitLab URL by running:
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc -w gitlab-gitlab-ce'
export SERVICE_IP=$(kubectl get svc --namespace default gitlab-gitlab-ce -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP/
2. Login as the root user:
Username: root
Password: 123456hwy
3. Point a DNS entry at your install to ensure that your specified
external URL is reachable:
http://my.gitlab.com/
我们通过 kubectl 命令行查看一下 Gitlab 相关组件和服务是否启动成功吧!
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
gitlab-gitlab-ce-2349088227-z1nkn 1/1 Running 0 5m
gitlab-postgresql-1290581213-jbm0s 1/1 Running 0 5m
gitlab-redis-2286670209-dfrks 1/1 Running 0 5m
$ kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gitlab-gitlab-ce 10.0.0.133 <nodes> 22:30733/TCP,80:30638/TCP,443:31737/TCP 5h
gitlab-postgresql 10.0.0.77 <none> 5432/TCP 5h
gitlab-redis 10.0.0.67 <none> 6379/TCP 5h
kubernetes 10.0.0.1 <none> 443/TCP 12d
启动成功,我们可以通过浏览器访问
http://<cluster_ip>:<node_port>
地址来访问 Gitlab 服务,这里我本地可以通过
http://192.168.99.101:30638/
地址访问 Gitlab 服务,当然也可以使用 Minikube 命令
minikube service gitlab-gitlab-ce
直接浏览器打开该服务访问。
尝试使用配置的管理员账号密码登录也都是没有问题的。
上边我们配置了
externalUrl: http://my.gitlab.com/
,意思是可以外部通过域名
http://my.gitlab.com/
访问 Gitlab 服务,这里就存在一个路由转发问题,我们的 Gitlab Web 服务通过
80:30638
外部端口 30638 映射容器 80 端口,外部访问可以通过
http://<cluster_ip>:<node_port>
方式,或者使用外部 Nginx 等代理将请求转到到该 30638 端口,但都不是很方便。我们需要的是不管后端 Kubernetes 中 Gitlab 服务增加还是减少,都不需要修改配置,依旧直接可以通过域名访问,那么就可以使用 Ingress 实现了。
Kubernetes Ingress 暴漏服务详细介绍,可以参考之前文章
初试 Kubernetes 暴漏服务类型之 Nginx Ingress
,那里是通过 yaml 文件来部署
Default Backend
和
Ingress Controller
的,因为这里我们使用的是 Minikube,它本身支持部署 Ingress 服务,所以可以使用 Minikube 命令行方式安装它们。
$ minikube addons list
- kube-dns: enabled
- ingress: disabled
- registry: disabled
- addon-manager: enabled
- dashboard: enabled
- default-storageclass: enabled
- heapster: disabled
- registry-creds: disabled
通过该命令,可以列举出 Minikube 所支持的插件集列表,以及是否已经开启该服务。默认 ingress 服务是
disabled
关闭状态,那么我们只需要将其设置为
enabled
开启状态,然后重启 Minikube 服务,即可自动部署
Default Backend
和
Ingress Controller
服务。
$ minikube addons enabled ingress
$ minikube stop
$ minikube start
注意:这里自动安装 Ingress 需要下载两个镜像
gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.11
和
gcr.io/google_containers/defaultbackend:1.0
,如果国内网络不通的话,请自行 Docker Hub 查找该镜像,然后修改为该名称镜像即可。启动成功后,可以通过 kubectl 命令行查看如下:
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
default-http-backend-j2bmz 1/1 Running 1 1h
nginx-ingress-controller-9tq68 1/1 Running 1 1h
kube-addon-manager-minikube 1/1 Running 1 2d
kube-dns-910330662-lj3xz 3/3 Running 3 2d
kubernetes-dashboard-wx8gl 1/1 Running 1 2d
tiller-deploy-246345418-8lqpm 1/1 Running 1 2h
接下来,我们需要新建一个基于域名访问虚拟主机的 Ingress 配置,Yaml 文件如下:
# 创建 Yaml 文件
$ vim my-gitlab-com.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-gitlab-com
namespace: default
spec:
rules:
- host: my.gitlab.com
http:
paths:
- backend:
serviceName: gitlab-gitlab-ce
servicePort: 80
# 创建 ingress
$ kubectl create -f my-gitlab-com.yaml
ingress "my-gitlab-com" created
# 查看 ingress
$ kubectl get ingress --all-namespaces
NAMESPACE NAME HOSTS ADDRESS PORTS AGE
default my-gitlab-com my.gitlab.com 192.168.99.101 80 5s
注意:
host: my.gitlab.com
这里就是跟上边定义的
externalUrl
一致,外部通过该域名来访问 gitlab 服务,
serviceName: gitlab-gitlab-ce
这里就是我们启动的 gitlab 服务名称,可通过
kubectl get svc --all-namespaces
命令查找对应服务名称,例如:
$ kubectl get svc --all-namespaces
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default gitlab-gitlab-ce 10.0.0.133 <nodes> 22:30733/TCP,80:30638/TCP,443:31737/TCP 2d
default gitlab-postgresql 10.0.0.77 <none> 5432/TCP 2d
default gitlab-redis 10.0.0.67 <none> 6379/TCP 2d
default kubernetes 10.0.0.1 <none> 443/TCP 13d
kube-system default-http-backend 10.0.0.145 <nodes> 80:30001/TCP 2d
kube-system kube-dns 10.0.0.10 <none> 53/UDP,53/TCP 13d
kube-system kubernetes-dashboard 10.0.0.161 <nodes> 80:30000/TCP 13d
kube-system tiller-deploy 10.0.0.112 <none> 44134/TCP 11d
好了,通过上边操作,已经把域名绑定到指定的 Service 上了。然后,我们要能本地访问,还需要本机绑定 Host。
粗眉毛的沙滩裤 · CSS 选择器 | 菜鸟教程 1 年前 |
强健的啄木鸟 · New action to take screenshots of a UI element - Power Platform Release Plan | Microsoft Learn 1 年前 |
年轻有为的葫芦 · 深度理解梯度在神经网络中的应用 - 知乎 1 年前 |