溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

開(kāi)普勒云平臺(tái):9個(gè)示例解析如何安裝依賴

發(fā)布時(shí)間:2020-07-25 17:39:04 來(lái)源:網(wǎng)絡(luò) 閱讀:1548 作者:宜信技術(shù) 欄目:云計(jì)算

本文介紹開(kāi)普勒云平臺(tái)如何安裝依賴。

Kplcloud是什么?

kplcloud是一個(gè)基于Kubernetes的輕量級(jí)PaaS平臺(tái),通過(guò)可視化的界面對(duì)應(yīng)用進(jìn)行管理,降低應(yīng)用容器化的對(duì)度,從而減少應(yīng)用容器化的時(shí)間成本。

Kplcloud已在宜信服務(wù)于宜人財(cái)富等多個(gè)團(tuán)隊(duì),穩(wěn)定運(yùn)行了近兩年,目前平臺(tái)已在生產(chǎn)環(huán)境跑著上百個(gè)應(yīng)用,近千個(gè)容器。

開(kāi)普勒云平臺(tái):9個(gè)示例解析如何安裝依賴

一、Namespace

建議將與開(kāi)普勒相關(guān)的服務(wù)獨(dú)立到一個(gè)專有的 Namespace下,在Kubernetes創(chuàng)建新的空間。您可以執(zhí)行以下命令創(chuàng)建該空間

$ kubectl create namespace kpaas

或執(zhí)行以下命令 :

$ kubectl apply -f install/kubernetes/namespace.yaml

二、配置持久化存儲(chǔ)

2.1 持久化存儲(chǔ)的相關(guān)配置

這里使用的是NFS的方式進(jìn)行持久化,如果您有自己的持久化方案可以不使用改方案。

$ kubectl apply -f install/kubernetes/storage/serviceaccount.yaml
$ kubectl apply -f install/kubernetes/storage/rbac.yaml
$ kubectl apply -f install/kubernetes/storage/provisioner.yaml
$ kubectl apply -f install/kubernetes/storage/stroageclass.yaml

2.2 需要調(diào)整provisioner

根據(jù)您自己的環(huán)境調(diào)service地址及path。

volumes:
- name: kpl-nfs-client-root
  nfs:
    server: 172.16.0.4
    path: "/home/data"
containers:
- name: kpl-nfs-client-provisioner
  image: quay.io/external_storage/nfs-client-provisioner:latest
  env:
    - name: PROVISIONER_NAME
      value: fuseim.pri/ifs
    - name: NFS_SERVER
      value: 172.16.0.4
    - name: NFS_PATH
      value: "/home/data"

開(kāi)普勒云平臺(tái):9個(gè)示例解析如何安裝依賴

開(kāi)普勒云平臺(tái):9個(gè)示例解析如何安裝依賴

三、安裝Redis 單點(diǎn)

為了方便給大家演示,redis也使用的docker版本部署在kubernetes集群上,真實(shí)環(huán)境請(qǐng)使用獨(dú)立的redis服務(wù)器或集群

如果您還沒(méi)有初始化持久化存儲(chǔ)的,請(qǐng)?jiān)谶@里持久化存儲(chǔ)配置好存儲(chǔ)類再安裝Redis服務(wù)。

3.1 安裝

$ kubectl apply -f install/kubernetes/redis/statefulset.yaml
$ kubectl apply -f install/kubernetes/redis/service.yaml
$ kubectl apply -f install/kubernetes/redis/configmap.yaml

redis的配置相關(guān)信息寫(xiě)在configmap里面 statefulset.yaml

官方redis默認(rèn)的存在/data目錄,所以我們需要將持久化存儲(chǔ)目標(biāo)配置在/data目錄下。

四、安裝Consul集群

如果您的獨(dú)立的Consul集群或不想使用Consul的話,不需要執(zhí)行以下命令。 以下命令是將docker版的consul集群安裝在您的kubernetes集群上前提是前必須有持久化存儲(chǔ)。

如果您還沒(méi)有初始化持久化存儲(chǔ)的,請(qǐng)?jiān)谶@里持久化存儲(chǔ)配置好存儲(chǔ)類再安裝consul集群。

4.1 安裝

$ kubectl apply -f install/kubernetes/consul/configmap.yaml
$ kubectl apply -f install/kubernetes/consul/service.yaml
$ kubectl apply -f install/kubernetes/consul/statefulset.yaml
$ kubectl apply -f install/kubernetes/consul/ingress.yaml

咱們采用的是StatefulSet的方式部署集群,若您已經(jīng)有了持久化的存儲(chǔ)類,將storageClassName修改成您的存儲(chǔ)類包就好。

開(kāi)普勒云平臺(tái):9個(gè)示例解析如何安裝依賴

ingress.yaml 提供對(duì)外訪問(wèn)的入口

configmap.yaml consul cluster server的配置文件

4.2 注釋

這個(gè)kubernetes親和度問(wèn)題您可能需要關(guān)注一下,如果您的kubernetes是單點(diǎn),請(qǐng)使用以下注釋掉的代碼。否由會(huì)無(wú)法起動(dòng)服務(wù)。

      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchLabels:
                  app: consul
                  component: server
              topologyKey: kubernetes.io/hostname
#          # 單節(jié)點(diǎn)用這個(gè)
#          preferredDuringSchedulingIgnoredDuringExecution:
#            - wight: 100
#              podAffinityTerm:
#                topologyKey: kubernetes.io/hostname

五、安裝RabbitMQ服務(wù)

為了方便給大家演示,rabbitmq也使用的docker版本部署在kubernetes集群上,真實(shí)環(huán)境請(qǐng)使用獨(dú)立的rabbitmq服務(wù)器

如果您還沒(méi)有初始化持久化存儲(chǔ)的,請(qǐng)?jiān)谶@里持久化存儲(chǔ)配置好存儲(chǔ)類再安裝rabbitMQ服務(wù)。

5.1 安裝

$ kubectl apply -f install/kubernetes/rabbitmq/statefulset.yaml
$ kubectl apply -f install/kubernetes/rabbitmq/service.yaml

有狀態(tài)服務(wù): statefulset.yaml 入口: ingress.yaml

kpass在rabbitmq里需要?jiǎng)?chuàng)建:

  • Vhost: kplcloud
  • Exchanges: kplcloud-exchange
  • User: kplcloud
  • RoutingKey: kplcloud

開(kāi)普勒云平臺(tái):9個(gè)示例解析如何安裝依賴

六、安裝Mysql服務(wù)

6.1 mysql

為了方便給大家演示,mysql也使用的docker版本部署在kubernetes集群上,真實(shí)環(huán)境請(qǐng)使用獨(dú)立的mysql服務(wù)器

如果您還沒(méi)有初始化持久化存儲(chǔ)的,請(qǐng)?jiān)谶@里持久化存儲(chǔ)配置好存儲(chǔ)類再安裝mysql服務(wù)。

6.2 安裝

$ kubectl apply -f install/kubernetes/mysql/statefulset.yaml
$ kubectl apply -f install/kubernetes/mysql/service.yaml
  • MYSQL_ROOT_PASSWORD: mysql用戶名
  • MYSQL_ROOT_PASSWORD: mysql密碼

statefulset.yaml

本項(xiàng)目需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù): kplcloud

七、安裝ELK

Logstash、ES對(duì)機(jī)器要的求比較高,建議使用獨(dú)立的ELK集群負(fù)責(zé)日志的采集分析

如果您非要使用Docker版的elk的并且部署在Kubernetes集群里,如果還沒(méi)有初始貨持久化存儲(chǔ),先初始化持久化存儲(chǔ)的,請(qǐng)?jiān)谶@里持久化存儲(chǔ)配置好存儲(chǔ)類再安裝相關(guān)服務(wù)服務(wù)。

ELK主要包含Elasticsearch、Logstash、Kibana幾個(gè)服務(wù),kibana和logstash可以做在Deployment,全ES需要持久化,因?yàn)槿罩緮?shù)據(jù)是存在ES上的。

$ kubectl apply -f install/kubernetes/elk/elasticsearch.yaml
$ kubectl apply -f install/kubernetes/elk/logstash.yaml
$ kubectl apply -f install/kubernetes/elk/kibana.yaml
$ kubectl apply -f install/kubernetes/elk/ingress.yaml

八、安裝Harbor

鏡像倉(cāng)庫(kù)就別在跑kubernetes集群上了,似乎也跑不了,找一臺(tái)容量大的有安裝Docker的服務(wù)器進(jìn)行搭建。

安裝啟動(dòng)方式,請(qǐng)查看官方說(shuō)明:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

8.1 安裝

下載Harbor安裝文件,我這下的是離線處理,如果下載不了請(qǐng)加代理

$ https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.1.tgz

8.2 解壓

$ tar -zxvf harbor-offline-installer-v1.8.1.tgz

8.3 配置harbor文件 harbor.conf

## Configuration file of Harbor

# hostname設(shè)置訪問(wèn)地址,可以使用ip、域名,不可以設(shè)置為127.0.0.1或localhost
hostname = hub.kpaas.nsini.com

# 訪問(wèn)協(xié)議,默認(rèn)是http,也可以設(shè)置https,如果設(shè)置https,則nginx ssl需要設(shè)置on
ui_url_protocol = http

# mysql數(shù)據(jù)庫(kù)root用戶默認(rèn)密碼root123,實(shí)際使用時(shí)修改下
db_password = root123

max_job_workers = 3 
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
secretkey_path = /data
admiral_url = NA

# 郵件設(shè)置,發(fā)送重置密碼郵件時(shí)使用
email_identity = 
email_server = smtp.mydomain.com
email_server_port = 25
email_username = sample_admin@mydomain.com
email_password = abc
email_from = admin <sample_admin@mydomain.com>
email_ssl = false

# 啟動(dòng)Harbor后,管理員UI登錄的密碼,默認(rèn)是Harbor12345
harbor_admin_password = Harbor12345

# 認(rèn)證方式,這里支持多種認(rèn)證方式,如LADP、本次存儲(chǔ)、數(shù)據(jù)庫(kù)認(rèn)證。默認(rèn)是db_auth,mysql數(shù)據(jù)庫(kù)認(rèn)證
auth_mode = db_auth

# LDAP認(rèn)證時(shí)配置項(xiàng)
#ldap_url = ldaps://ldap.mydomain.com
#ldap_searchdn = uid=searchuser,ou=people,dc=mydomain,dc=com
#ldap_search_pwd = password
#ldap_basedn = ou=people,dc=mydomain,dc=com
#ldap_filter = (objectClass=person)
#ldap_uid = uid 
#ldap_scope = 3 
#ldap_timeout = 5

# 是否開(kāi)啟自注冊(cè)
self_registration = on

# Token有效時(shí)間,默認(rèn)30分鐘
token_expiration = 30

# 用戶創(chuàng)建項(xiàng)目權(quán)限控制,默認(rèn)是everyone(所有人),也可以設(shè)置為adminonly(只能管理員)
project_creation_restriction = everyone

verify_remote_cert = on

8.4 啟動(dòng)Harbor,直接執(zhí)行./install.sh 或 docker-composer都可以

$ ./install.sh
$ docker-compose start

九、Prometheus安裝

如果還沒(méi)有初始貨持久化存儲(chǔ),先初始化持久化存儲(chǔ)的,請(qǐng)?jiān)谶@里持久化存儲(chǔ)配置好存儲(chǔ)類再安裝相關(guān)服務(wù)服務(wù)。

Prometheus 需要將數(shù)據(jù)存在本地,所以需要掛載持久化存儲(chǔ)。

$ kubectl apply -f install/kubernetes/prometheus/deployment.yaml
$ kubectl apply -f install/kubernetes/prometheus/ingress.yaml
$ kubectl apply -f install/kubernetes/prometheus/configmap.yaml
$ kubectl apply -f install/kubernetes/prometheus/serviceaccount.yaml
$ kubectl apply -f install/kubernetes/prometheus/service.yaml
$ kubectl apply -f install/kubernetes/prometheus/persistentvolumeclaim.yaml

9.1 相關(guān)配置

configmap.yaml文件有五個(gè)文件:

  • etcd3.rules.yml
  • kube-state-metrics_rules.yml
  • kubelet_rule.yml
  • kubernetes_rule.yml
  • prometheus.yml

在prometheus里引用了上面4個(gè)文件。如果您有新的規(guī)則可以在這里增加。

在prometheus.yml 文件里有配置 alerting 目前默認(rèn)發(fā)身 alertmanager:9093 ,若您有自己的報(bào)警管理平臺(tái),修改該地址就行,若還想使用alertmanager的話請(qǐng)看安裝AlertManager。

十、安裝配置alertmanager

Alertmanager 主要是接收來(lái)自prometheus 的alert數(shù)據(jù)

10.1 安裝

可以獨(dú)立安裝不使用Docker,以下案例是部署在kubernetes集群上。

$ kubectl apply -f install/kubernetes/alertmanager/deployment.yaml
$ kubectl apply -f install/kubernetes/alertmanager/ingress.yaml
$ kubectl apply -f install/kubernetes/alertmanager/configmap.yaml
$ kubectl apply -f install/kubernetes/alertmanager/service.yaml

10.2 相關(guān)配置

這里采用webhook的方式將報(bào)警信息發(fā)送到kplcloud平臺(tái),kplcloud接收數(shù)據(jù)處理并入rabbitmq。

apiVersion: v1
data:
  config.yml: |-
    global:

    route:
      group_by: ['alertname', 'cluster', 'service']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 10m
      receiver: webhook

    receivers:
    - name: 'webhook'
      webhook_configs:
      - url: 'http://kplcloud:8080/public/prometheus/alerts'
kind: ConfigMap
metadata:
  name: alertmanager

kplcloud處理完的數(shù)據(jù)最終根據(jù)相應(yīng)的規(guī)則推送給相應(yīng)的用戶及平臺(tái)等。

開(kāi)普勒云平臺(tái):9個(gè)示例解析如何安裝依賴

十一、安裝kpaas

$ git clone github.com/kplcloud/kplcloud.git

11.1 Docker

$ docker pull kplcloud/kplcloud:latest

11.2 kubernetes

基礎(chǔ)服務(wù)安裝: install.md

若您的其他服務(wù)都已經(jīng)準(zhǔn)備好了,可以直接執(zhí)行以下命令在kubernetes上進(jìn)行部署開(kāi)普勒云平臺(tái)。

$ kubectl apply -f install/kubernetes/kpaas/configmap.yaml
$ kubectl apply -f install/kubernetes/kpaas/deployment.yaml
$ kubectl apply -f install/kubernetes/kpaas/service.yaml
$ kubectl apply -f install/kubernetes/kpaas/ingress.yaml

如果您有私有倉(cāng)庫(kù),記得在master節(jié)點(diǎn)上執(zhí)行一下:

$ kubectl create secret generic regcred --from-file=.dockerconfigjson=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson -n default

在每個(gè)namespace下都創(chuàng)建一下,這樣k8s就有權(quán)限拉取私有倉(cāng)庫(kù)的鏡像了

Deployment需要把imagePullSecrets加上:

imagePullSecrets:
- name: regcred

開(kāi)源地址:

  • Github: https://github.com/kplcloud/kplcloud
  • Document: https://docs.nsini.com
  • Demo: https://kplcloud.nsini.com

作者:宜人金科-財(cái)富技術(shù)部-創(chuàng)新團(tuán)隊(duì)
來(lái)源:宜信技術(shù)學(xué)院

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI