k8s安装部署apollo配置中心

news2024/9/27 5:55:48

一、文章大纲

二、安装MySQL5.7
三、创建apollo-config
四、创建apollo-admin
五、创建apollo-portal
六、查看apollo各个组件服务状态
七、访问apollo
八、nginx代理配置转发

#注意
一定要先启动apollo-config,再启动apollo-admin,最后启动apollo-portal

二、安装MySQL5.7

1、安装过程参考:离线安装mysql5.7_韩帅平的博客-CSDN博客

2、sql文件下载

apolloportaldb.sql​下载地址:https://github.com/nobodyiam/apollo-build-scripts/blob/master/sql/apolloportaldb.sql
apolloconfigdb.sql​下载地址:https://github.com/nobodyiam/apollo-build-scripts/blob/master/sql/apolloconfigdb.sql
#修改apolloconfigdb.sql文件
VALUES
    ('eureka.service.url', 'default', 'http://10.96.69.115:32109/eureka/', 'Eureka服务Url,多个service以英文逗号分隔'),   #修改localhost:8080为apollo-config的Service Ip+NodePort端口,可在apollo-config服务创建好之后再修改导入库表
    ('namespace.lock.switch', 'default', 'false', '一次发布只能有一个人修改开关'),
    ('item.key.length.limit', 'default', '128', 'item key 最大长度限制'),
    ('item.value.length.limit', 'default', '20000', 'item value最大长度限制'),
    ('config-service.cache.enabled', 'default', 'false', 'ConfigService是否开启缓存,开启后能提高性能,但是会增大内存消耗!');

3、数据库内导入config、admin数据库表

mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5048
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> source /usr/local/apolloconfigdb.sql;
mysql> source /usr/local/apolloportaldb.sql;

三、创建apollo-config(以下是我在环境中已生成的服务yaml文件,可按需修改)

1、apollo-config-deployment.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "2"
  creationTimestamp: "2023-04-19T08:38:44Z"
  generation: 2
  labels:
    appName: apollo
  name: apollo-config
  namespace: apollo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      name: apollo-config
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: apollo
        ccse_app_name: apollo
        name: apollo-config
        source: CCSE
    spec:
      containers:
      - env:
        - name: SPRING_DATASOURCE_URL
          value: jdbc:mysql://IP:3306/ApolloConfigDB?characterEncoding=utf8  #IP为已创建好的数据库IP
        - name: SPRING_DATASOURCE_USERNAME
          value: root
        - name: SPRING_DATASOURCE_PASSWORD
          value: ******  #数据库密码
        image: apolloconfig/apollo-configservice:latest
        imagePullPolicy: Always
        name: apollo-config
        resources:
          limits:
            cpu: "4"
            memory: 4Gi
          requests:
            cpu: 100m
            memory: 128Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: apollo
      nodeSelector:
        apollo: "151"
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - hostPath:
          path: /etc/localtime
          type: ""
        name: localtime

2、apollo-config-service.yaml文件

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2023-04-19T08:41:39Z"
  labels:
    appName: apollo
    workloadKind: Deployment
    workloadName: apollo-config
  name: apollo-config
  namespace: apollo
spec:
  clusterIP: 10.96.69.115
  externalTrafficPolicy: Cluster
  ports:
  - name: "8080"
    nodePort: 32109
    port: 32109
    protocol: TCP
    targetPort: 8080
  selector:
    name: apollo-config
  sessionAffinity: None
  type: NodePort

四、创建apollo-admin

1、apollo-admin-deployment.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  creationTimestamp: "2023-04-19T08:53:03Z"
  generation: 1
  labels:
    appName: apollo
  name: apollo-admin
  namespace: apollo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      name: apollo-admin
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: apollo
        ccse_app_name: apollo
        name: apollo-admin
        source: CCSE
    spec:
      containers:
      - env:
        - name: SPRING_DATASOURCE_URL
          value: jdbc:mysql://IP:3306/ApolloConfigDB?characterEncoding=utf8   #修改数据库地址
        - name: SPRING_DATASOURCE_USERNAME
          value: root
        - name: SPRING_DATASOURCE_PASSWORD
          value: ******    #数据库密码
        image: apolloconfig/apollo-adminservice:latest
        imagePullPolicy: Always
        name: apollo-admin
        resources:
          limits:
            cpu: "4"
            memory: 4Gi
          requests:
            cpu: 100m
            memory: 128Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: apollo
      nodeSelector:
        apollo: "151"
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - hostPath:
          path: /etc/localtime
          type: ""
        name: localtime

2、apollo-admin-service.yaml文件

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2023-04-19T08:56:52Z"
  labels:
    appName: apollo
    workloadKind: Deployment
    workloadName: apollo-admin
  name: apollo-admin
  namespace: apollo
spec:
  clusterIP: 10.96.178.0
  externalTrafficPolicy: Cluster
  ports:
  - name: "8090"
    nodePort: 32108
    port: 32108
    protocol: TCP
    targetPort: 8090
  selector:
    name: apollo-admin
  sessionAffinity: None
  type: NodePort

五、创建apollo-portal

1、apollo-portal-deployment.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  creationTimestamp: "2023-04-19T08:43:15Z"
  generation: 1
  labels:
    appName: apollo
  name: apollo-portal
  namespace: apollo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      name: apollo-portal
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: apollo
        ccse_app_name: apollo
        name: apollo-portal
        source: CCSE
    spec:
      containers:
      - env:
        - name: SPRING_DATASOURCE_URL
          value: jdbc:mysql://IP:3306/ApolloPortalDB?characterEncoding=utf8   #数据库地址
        - name: SPRING_DATASOURCE_USERNAME
          value: root
        - name: SPRING_DATASOURCE_PASSWORD
          value: ******   #数据库密码
        - name: APOLLO_PORTAL_ENVS
          value: dev
        - name: DEV_META
          value: http://10.96.69.115:32109   #apollo-config的Service Ip+NodePort端口
        image: apolloconfig/apollo-portal:latest
        imagePullPolicy: Always
        name: apollo-portal
        resources:
          limits:
            cpu: "4"
            memory: 4Gi
          requests:
            cpu: 100m
            memory: 128Mi
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: apollo
      nodeSelector:
        apollo: "151"
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - hostPath:
          path: /etc/localtime
          type: ""
        name: localtime

2、apollo-portal-service.yaml文件

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2023-04-19T08:55:49Z"
  labels:
    appName: apollo
    workloadKind: Deployment
    workloadName: apollo-portal
  name: apollo-portal
  namespace: apollo
spec:
  clusterIP: 10.96.210.42
  externalTrafficPolicy: Cluster
  ports:
  - name: "8070"
    nodePort: 32110
    port: 32115
    protocol: TCP
    targetPort: 8070
  selector:
    name: apollo-portal
  sessionAffinity: None
  type: NodePort

六、查看Apollo各个服务组件状态

kubectl get pods,svc,deployment -n apollo -o wide | grep apollo

pod/apollo-admin-946b849fc-t77jj                      1/1     Running            0          21h     172.26.20.166    IP   <none>           <none>
pod/apollo-config-547c79c5d6-nrdns                    1/1     Running            0          21h     172.26.20.190    IP   <none>           <none>
pod/apollo-portal-9694d748c-4mzpq                     1/1     Running            0          21h     172.26.20.182    IP   <none>           <none>
service/apollo-admin                     NodePort    10.96.178.0     <none>        32108:32108/TCP              22h     name=apollo-admin
service/apollo-config                    NodePort    10.96.69.115    <none>        32109:32109/TCP              22h     name=apollo-config
service/apollo-portal                    NodePort    10.96.210.42    <none>        32115:32110/TCP              22h     name=apollo-portal
deployment.apps/apollo-admin                        1/1     1            1           22h     apollo-admin                     apolloconfig/apollo-adminservice:latest                          name=apollo-admin
deployment.apps/apollo-config                       1/1     1            1           22h     apollo-config                    apolloconfig/apollo-configservice:latest                         name=apollo-config
deployment.apps/apollo-portal                       1/1     1            1           22h     apollo-portal                    apolloconfig/apollo-portal:latest                                name=apollo-portal

七、访问apollo,网址:http://IP:32110/

1、apollo前端页面,默认账号密码:apollo/admin

八、nginx代理配置转发

1、内网可通过nginx代理暴露服务,conf文件配置如下:

upstream nodes2.apollo-portal {
    server IP:32110;
    server IP:32110;
    server IP:32110;
    server IP:32110;
    server IP:32110;
    server IP:32110;
    server IP:32110;
    server IP:32110;
    server IP:32110;
    server IP:32110;
}   
   location / {
        proxy_pass http://nodes2.apollo-portal/;
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Port 80;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    limit_conn one 10000;
    limit_rate 40960k;

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么才是好CDN

选择一种领先于网络和移动技术不断进步以及不断演变的威胁格局的CDN&#xff0c;将使您能够始终如一地为客户提供尽可能好的在线体验&#xff0c;同时最大限度地降低运营复杂性和管理成本。 但问题来了&#xff1a;什么才是最好的CDN&#xff1f; 这个问题的唯一答案是&#x…

HBase高手之路7—HBase之全文检索Phoneix

文章目录 HBase之全文检索Phoenix一、全文检索二、全文检索工具phoenix简介1. 简介2. 使用Phoenix是否会影响HBase性能3. 哪些公司在使用Phoenix4. 官方性能测试4.1 Phoenix对标Hive&#xff08;基于HDFS和HBase&#xff09;4.2 Phoenix对标Impala4.3 关于上述官网两张性能测试…

python基础案例题:进制转换、字符串加密的实现、猜拳游戏、多种方法计算π

目录 前言1.进制转换2.字符串加密的实现3.猜拳游戏4.多种方法计算π尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 1.进制转换 功能&#xff1a; 获取十进制整数的二进制串&#xff0c;相当于内置函数bin。 算法分析&#xff1a; 对2辗转相除&…

pyecharts从入门到精通-地图专题Map-世界地图和中国城市地图

文章目录 参考安装与查看pyecharts地图实现-Geo数据集查看读取数据生成中文国家名称国家中文和英文名称字典:根据字典&#xff0c;生成国家中文名查看没有转换成功的国家中文有哪些过滤包含中文国家名的数据 可视化人口数据显示中国城市地图数据 拓展-pyecharts中Map源码拓展-p…

开放耳机有什么优缺点,推荐几款不错的开放式耳机

​由于骨传导耳机可以保持耳朵的开放&#xff0c;长时间佩戴不会有闷热感&#xff0c;同时可以在运动中保持安全&#xff0c;因此被越来越多的人接受。在目前市面上骨传导耳机品牌众多&#xff0c;价格从几十元到上千元不等&#xff0c;为了让大家更好地挑选适合自己的骨传导耳…

java获取两个日期之间的所有日期

1、获取日期的过程&#xff1a; 首先创建一个数组&#xff0c;然后在数组的末尾加上一个日期。当我们有两个日期时&#xff0c;可以把这两个日期当做是不同的数组&#xff0c;然后使用 next函数把这两个日期之间的所有时间都获取出来。 2、代码演示&#xff1a; 3、实现效果&am…

bat批处理文件无法执行

执行后弹出cmd窗口&#xff0c;但里面命令未执行 方案一&#xff1a; 1、打开开始菜单——控制面板 2、点击系统和安全——系统 3、点击左上角的“高级系统设置” 4、切换到“高级”选项卡&#xff0c;点击下方的“环境变量” 5、在用户变量下方点击“新建”&#xff0c;…

3.2.3队列的链式实现

队列的链式实现 注意声明队头指针和队尾指针作用 (1)插入节点的时候只要rear指针指向结点的next指针指向的位置&#xff1b; (2)删除只要front指指针指向的头节点next指针指向的位置删除&#xff1b; &#xff08;1&#xff09;初始化&#xff08;带头结点&#xff09; 初试化…

C++:多态的底层实现原理 -- 虚函数表

目录 一. 多态的原理 1.1 虚函数表 1.2 多态的实现原理 1.3 动态绑定与静态绑定 二. 多继承中的虚函数表 2.1 虚函数表的打印 2.2 多继承中虚函数表中的内容存储情况 一. 多态的原理 1.1 虚函数表 对于一个含有虚函数的的类&#xff0c;在实例化出来对象以后&#xff0…

Docker部署SpringBoot+Vue项目

1.项目部署规划 1.后端多模块项目blog以及各模块运行端口&#xff1a; 前台服务模块sangeng-blog->7777&#xff0c;后台服务模块sangeng-admin->8989&#xff0c;公共模块sangeng-framework 2.前端前台Vue项目&#xff1a;sg-blog-vue->80 3.前端后台Vue项目&#x…

如何在AWS EKS上部署安装nginx ingress controller

Ingress Controller Ingress Controller 通常是一个负载均衡器&#xff0c;用于将外部流量路由到您的 Kubernetes 集群&#xff0c;并负责 L4-L7 网络服务 Ingress controller 仅覆盖 L7 流量&#xff0c;而入口重新路由 HTTP 和 HTTPS 流量 Type of Ingress Controllers C…

QT编程集成环境在Ubuntu中如何使用ROS工程?

文章目录 0.引言1.安装Qt Creator&#xff08;带ROS插件&#xff09;2.创建ROS工程3.创建功能包4.创建节点5.添加编译规则6.编译运行 0.引言 在进行ROS开发过程中&#xff0c;会创建许多功能包和源代码文件&#xff0c;这些文件少量时&#xff0c;手动管理还能接受&#xff0c;…

微搭低代码学习之数据收集

低代码和开发之间的关系 低代码平台是一种快速构建应用程序的工具&#xff0c;旨在提高开发效率。它们提供了一种基于图形用户界面的方式来创建应用程序&#xff0c;而无需编写大量的代码。使用低代码平台&#xff0c;开发人员可以更快速地构建和交付应用程序&#xff0c;从而缩…

nginx--HTTPS服务

目录 1.为什么要使用https 2.https协议的实现 1.对称加密 2.非对称加密 3.https加密 3.生成密钥和CA证书需要的依赖 1.查看是否有装openssl 2.查看nginx是否有 --with-http_ssl_module 4.生成密钥和CA证书步骤 步骤一、生成key密钥 步骤二、通过密钥去生成证书签名请求文件…

Java多例Bean的应用场景-easyExcel导入

目录 1. bean注入方式&#xff08;IOC&#xff09;2. 有状态会话bean和无状态会话bean3. 单例模式和多例模式4. 深挖多例模式应用场景&#xff1f; 1. bean注入方式&#xff08;IOC&#xff09; 2. 有状态会话bean和无状态会话bean 有状态会话bean&#xff1a;每个用户有自己特…

2023什么电脑配置适合机器学习和人工智能

机器学习和人工智能应用有多种类型——从传统的回归模型、非神经网络分类器和以 Python SciKitLearn 和 R 语言的功能为代表的统计模型&#xff0c;到使用 PyTorch 和 TensorFlow 等框架的深度学习模型. 在这些不同类型的 ML/AI 模型中&#xff0c;也可能存在显着差异。“最佳”…

不用ChatGPT,只用CodeGeeX with Chat!一样实现智能问答

在ChatGPT推出后&#xff0c;许多人发现&#xff0c;它在编程方面也具有强大的能力——在编写代码过程中&#xff0c;如果遇到问题&#xff0c;可以不必去搜索引擎寻找答案&#xff0c;而是直接向ChatGPT提问。不过&#xff0c;在申请使用一些功能时&#xff0c;需要先等待各种…

机器人感知与控制关键技术及其智能制造应用

源自&#xff1a;自动化学报 作者&#xff1a;王耀南 江一鸣 姜娇 张辉 谭浩然 彭伟星 吴昊天 曾凯 摘 要 智能机器人在服务国家重大需求, 引领国民经济发展和保障国防安全中起到重要作用, 被誉为“制造业皇冠顶端的明珠”. 随着新一轮工业革命的到来, 世界主要工业国…

【Linux】System V IPC-进程信号

进程信号 信号的概念信号的产生信号的种类信号的处理方式信号的注册信号的注销信号的自定义处理方式信号的捕捉流程信号的阻塞常见的程序崩溃父子进程进程等待自定义信号处理方式volatile关键字 信号的概念 信号是一个软件中断&#xff0c;实际上是操作系统告诉进程需要进程执行…

08 - 文章详情页面

文章详情页面 8-1&#xff1a;开篇 从本章开始我们要进入文章详情的页面开发。 在文章详情页面可以展示&#xff1a; 文章标题作者信息发布时间文章内容文章评论 同时你可以在这里进行&#xff1a; 作者关注文章评论文章点赞文章收藏 等操作。 基本功能大家可以进入到我…