この記事では、依存ケプラーのクラウドプラットフォームをインストールする方法について説明します。
何Kplcloudこと?
kplcloudそれによりアプリケーションコンテナの時間のコストを削減、管理アプリケーション、アプリケーションコンテナの低減の程度に対する視覚インターフェースを介して、のPaaSの軽量Kubernetesに基づいています。
Kplcloud文字が2年近くに複数のチームで快適な富、などのためのサービス、安定した動作にされている必要があり、現在のプラットフォームは、本番環境でのアプリケーションの何百、約1,000のコンテナを走っています。
、名前空間
ケプラーはKubernetesに新しいスペースを作成するために、独自の名前空間の下に独立に関連するサービスをお勧めします。次のコマンドを実行した空間を作成することができます
$ kubectl create namespace kpaas
または、次のコマンドを実行します。
$ kubectl apply -f install/kubernetes/namespace.yaml
第二に、永続的なストレージ構成
コンフィギュレーションの2.1永続ストレージ
あなたがあなた自身の永続化方式は改革プログラムを使用することはできませんがあればここでは、持続性のためのNFSの方法を使用しています。
$ 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プロビジョニングを調整する必要があります
ご自身の環境にサービスアドレスとパスを転送します。
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"
第三に、シングルポイントの取り付けのRedis
証明するために皆を容易にするために、Redisのもkubernetesクラスタ上に展開ドッキングウィンドウのバージョンを使用し、実世界では、スタンドアロンサーバまたはクラスタのRedisを使います
あなたは、永続ストレージ・クラス・メモリはRedisのサービスをインストールするように設定永続ストアを初期化しない場合。
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
内部statefulset.yamlのconfigmapに書かれたRedisの構成情報
公式Redisのデフォルト/データディレクトリを存在するので、私たちは/ dataディレクトリに永続的なストレージ構成をターゲットにする必要があります。
第四に、インストール領事クラスタ
あなたが別のクラスタ領事領事を持っているか、それを使用したくない場合は、次のコマンドを実行する必要はありません。次のコマンドは、永続ストレージに先立って存在しなければならないことをごkubernetesクラスタ前提に領事クラスタのドッキングウィンドウのバージョンをインストールします。
あなたは、永続ストア、永続的なストレージ構成されたストレージクラスを初期化して、領事クラスタをインストールしない場合。
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
私たちは、あなたがすでにうまくストレージクラスパッケージに変更storageClassNameます、永続ストレージ・クラスを持っている場合は、クラスタを展開することであるStatefulSetの方法を使用していました。
外部アクセスのエントリを提供しingress.yaml
configmap.yaml領事クラスタサーバの設定ファイル
4.2ノート
これは、あなたが単一のポイントをkubernetes場合は、次のコードをコメントアウトされて使用し、見てする必要があるかもしれ親和性の問題をkubernetes。いいえサービスは、会議で開始することはできません。
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: consul
component: server
topologyKey: kubernetes.io/hostname
# # 单节点用这个
# preferredDuringSchedulingIgnoredDuringExecution:
# - wight: 100
# podAffinityTerm:
# topologyKey: kubernetes.io/hostname
第五に、RabbitMQのサービスをインストールします
証明するために皆を容易にするために、RabbitMQのもkubernetesクラスタ上に展開ドッキングウィンドウのバージョンを使用し、実世界では、スタンドアロンサーバーのRabbitMQを使用します
あなたは、永続ストレージ・クラス・メモリはRabbitMQのサービスをインストールするように設定永続ストアを初期化しない場合。
5.1インストール
$ kubectl apply -f install/kubernetes/rabbitmq/statefulset.yaml
$ kubectl apply -f install/kubernetes/rabbitmq/service.yaml
ステートフル・サービス:statefulset.yaml入り口:ingress.yaml
kpassは中のRabbitMQを作成する必要があります。
- バーチャルホスト:kplcloud
- 交流:kplcloud交換
- ユーザー:kplcloud
- RoutingKey:kplcloud
6、インストールMySQLサービス
6.1 MySQLの
証明するために皆を容易にするために、mysqlはまたkubernetesクラスタ上に展開ドッキングウィンドウのバージョンを使用し、実世界では、別のMySQLサーバーを使用します
あなたは、永続ストレージ・クラス・メモリはMySQLサービスをインストールするように設定永続ストアを初期化しない場合。
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のパスワード
このプロジェクトは、データベースを作成する必要があります。kplcloud
七、インストールELK
Logstash、ESは比較的高いと機械を尋ね、ログ解析を担当する分別収集ELKクラスタを使用することをお勧めします
あなたはヘラジカのドッカーバージョンを使用し、それが初期出荷永続ストレージがない場合は、Kubernetesクラスタにデプロイする必要がある場合は、永続的なストレージサービスをインストールするには、ストアクラス関連サービスに構成された永続ストアを初期化します。
ELK主Elasticsearch、Logstash、Kibanaいくつかのサービス、kibanaとlogstashは展開を行うことができます構成されたログデータは、ESに存在するため、フル-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
八、インストールハーバー
ミラー倉庫は、クラスタ内のkubernetes上で実行していない、ドッカー取り付け構造のため、大容量のサーバーを探して、実行することはできませんようです。
:インストールを開始し、公式の説明チェックしてみてくださいhttps://github.com/goharbor/harbor/blob/master/docs/installation_guide.mdを
8.1インストール
ハーバーは、プロキシのダウンロードを追加してくださいされていない場合、私はオフライン処理の下にあったインストールファイルを、ダウンロードしてください
$ 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.conf港
## Configuration file of Harbor
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
hostname = hub.kpaas.nsini.com
# 访问协议,默认是http,也可以设置https,如果设置https,则nginx ssl需要设置on
ui_url_protocol = http
# mysql数据库root用户默认密码root123,实际使用时修改下
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
# 邮件设置,发送重置密码邮件时使用
email_identity =
email_server = smtp.mydomain.com
email_server_port = 25
email_username = [email protected]
email_password = abc
email_from = admin <[email protected]>
email_ssl = false
# 启动Harbor后,管理员UI登录的密码,默认是Harbor12345
harbor_admin_password = Harbor12345
# 认证方式,这里支持多种认证方式,如LADP、本次存储、数据库认证。默认是db_auth,mysql数据库认证
auth_mode = db_auth
# LDAP认证时配置项
#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
# 是否开启自注册
self_registration = on
# Token有效时间,默认30分钟
token_expiration = 30
# 用户创建项目权限控制,默认是everyone(所有人),也可以设置为adminonly(只能管理员)
project_creation_restriction = everyone
verify_remote_cert = on
8.4スタート・ハーバー、直接./install.shを実行するか、ドッキングウィンドウ・作曲をすることができます
$ ./install.sh
$ docker-compose start
九、プロメテウスのインストール
あなたが最初の出荷永続ストレージを持っていない場合は、永続的なストレージサービスをインストールするために、クラス関連サービスを格納するように構成された永続ストアを初期化します。
プロメテウスは、永続ストアをマウントする必要があり、ローカルデータの存在が必要になります。
$ 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コンフィギュレーション
configmap.yamlファイルには、5つのファイルがあります。
- etcd3.rules.yml
- KUBE-状態metrics_rules.yml
- kubelet_rule.yml
- kubernetes_rule.yml
- prometheus.yml
プロメテウス年間で4つのファイルの上に引用しました。あなたは新しいルールを持っている場合は、ここで追加することができます。
使用したい場合は、その後のAlertManagerのAlertManagerのインストールを参照してください、あなたはあなた自身のアラーム管理プラットフォームを持っている場合、9093ライン上のアドレスを変更します。そこは、現在prometheus.ymlファイルのデフォルト思春期ののAlertManagerを警告するように構成されています。
テン、インストール構成のAlertManager
AlertManagerは、主にプロメテウスからアラートデータを受信し、
10.1インストール
ドッカーを使用せずに独立して設置することができ、次の場合は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設定
ここで使用するウェブフックがインターネットkplcloudにアラーム情報を送信することを意味し、kplcloudは、データ処理組み込ま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最終的なデータは、適切なルールに従って処理され、ユーザはそれぞれのプラットフォームを押します。
XIのインストールkpaas
$ git clone github.com/kplcloud/kplcloud.git
11.1ドッカー
$ docker pull kplcloud/kplcloud:latest
11.2 kubernetes
基本サービスのインストール:install.md
あなたは他のサービスが用意されている場合は、直接kubernetesにケプラーのクラウドプラットフォームをデプロイするには、次のコマンドを実行することができます。
$ 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
あなたは民間の倉庫を持っている場合は、マスターノード上でそれを実行することを忘れないでください:
$ kubectl create secret generic regcred --from-file=.dockerconfigjson=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson -n default
K8Sはミラー民間倉庫を引っ張っする権限を持っているように、各名前空間の下に、それを作成し、
展開imagePullSecretsは、追加する必要があります。
imagePullSecrets:
- name: regcred
オープンソースアドレス:
- Githubの: https://github.com/kplcloud/kplcloud
- 資料: https://docs.nsini.com
- デモ: https://kplcloud.nsini.com
著者:楽しいJinke -富テクノロジー-イノベーションチーム
出典:テクノロジーのCreditEase研究所