Sign inSign up

lhstack/eureka

By lhstack

•Updated almost 5 years ago

适配k8s的eureka注册中心,可普通docker,docker-compose,k8s部署,支持安全认证,k8s集群部署

Image
1

1.6K

lhstack/eureka repository overview

⁠spring-boot版本

spring-boot:2.3.12.RELEASE

⁠spring-cloud版本

spring-cloud:Hoxton.SR12

⁠gitee地址

https://gitee.com/myprofile/spring-cloud/⁠

⁠github地址

https://github.com/lhstack/spring-cloud/⁠

⁠普通docker部署

# 关闭安全认证
docker run --name eureka -p 8761:8761 -e SECURITY_ENABLE=false -e JAVA_OPTS="-Xmx128m -Xms128m -Dspring.application.name=eureka" -d lhstack/eureka
# 默认开启了安全认证,默认用户名admin 密码 123456
# 修改认证用户名和密码
docker run --name eureka -p 8761:8761 -e SECURITY_USERNAME=admin1 -e SECURITY_PASSWORD=654321 -e JAVA_OPTS="-Xmx128m -Xms128m" -d lhstack/eureka

⁠docker-compose带认证副本集群部署

version: '3'
services:
  eureka-1:
    container_name: eureka-1
    image: lhstack/eureka
    ports:
    - 8761:8761
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: '256M'
    logging:
      options:
        max-size: "1kb"
        max-file: "1"
    environment:
      JAVA_OPTS: "-Xmx128m -Xms128m"
      SECURITY_ENABLE: true
      SECURITY_USERNAME: admin
      SECURITY_PASSWORD: admin
      EUREKA_SERVER_URLS: "http://admin:[email protected]:8761/eureka,http://admin:[email protected]:8761/eureka,http://admin:[email protected]:8761/eureka"
    networks:
      eureka:
        ipv4_address: 182.168.100.100
  eureka-2:
    container_name: eureka-2
    image: lhstack/eureka
    ports:
    - 8762:8761
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: '256M'
    logging:
      options:
        max-size: "1kb"
        max-file: "1"
    environment:
      JAVA_OPTS: "-Xmx128m -Xms128m"
      SECURITY_ENABLE: true
      SECURITY_USERNAME: admin
      SECURITY_PASSWORD: admin
      EUREKA_SERVER_URLS: "http://admin:[email protected]:8761/eureka,http://admin:[email protected]:8761/eureka,http://admin:[email protected]:8761/eureka"
    networks:
      eureka:
        ipv4_address: 182.168.100.101
  eureka-3:
    container_name: eureka-3
    image: lhstack/eureka
    ports:
    - 8763:8761
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: '256M'
    logging:
      options:
        max-size: "1kb"
        max-file: "1"
    environment:
      JAVA_OPTS: "-Xmx128m -Xms128m"
      SECURITY_ENABLE: true
      SECURITY_USERNAME: admin
      SECURITY_PASSWORD: admin
      EUREKA_SERVER_URLS: "http://admin:[email protected]:8761/eureka,http://admin:[email protected]:8761/eureka,http://admin:[email protected]:8761/eureka"
    networks:
      eureka:
        ipv4_address: 182.168.100.102
networks:
  eureka:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 182.168.0.0/16

⁠docker-compose不带认证副本集群部署

version: '3'
services:
  eureka-1:
    container_name: eureka-1
    image: lhstack/eureka
    ports:
    - 8761:8761
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: '256M'
    logging:
      options:
        max-size: "1kb"
        max-file: "1"
    environment:
      JAVA_OPTS: "-Xmx128m -Xms128m"
      SECURITY_ENABLE: false
      EUREKA_SERVER_URLS: "http://182.168.100.100:8761/eureka,http://182.168.100.101:8761/eureka,http://182.168.100.102:8761/eureka"
    networks:
      eureka:
        ipv4_address: 182.168.100.100
  eureka-2:
    container_name: eureka-2
    image: lhstack/eureka
    ports:
    - 8762:8761
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: '256M'
    logging:
      options:
        max-size: "1kb"
        max-file: "1"
    environment:
      JAVA_OPTS: "-Xmx128m -Xms128m"
      SECURITY_ENABLE: false
      EUREKA_SERVER_URLS: "http://182.168.100.100:8761/eureka,http://182.168.100.101:8761/eureka,http://182.168.100.102:8761/eureka"
    networks:
      eureka:
        ipv4_address: 182.168.100.101
  eureka-3:
    container_name: eureka-3
    image: lhstack/eureka
    ports:
    - 8763:8761
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: '256M'
    logging:
      options:
        max-size: "1kb"
        max-file: "1"
    environment:
      JAVA_OPTS: "-Xmx128m -Xms128m"
      SECURITY_ENABLE: false
      EUREKA_SERVER_URLS: "http://182.168.100.100:8761/eureka,http://182.168.100.101:8761/eureka,http://182.168.100.102:8761/eureka"
    networks:
      eureka:
        ipv4_address: 182.168.100.102
networks:
  eureka:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 182.168.0.0/16

⁠k8s集群部署

eureka.yml

apiVersion: v1
kind: Namespace
metadata:
  name: eureka
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: eureka
  namespace: eureka
data:
  SECURITY_USERNAME: "admin"
  SECURITY_PASSWORD: "123456"
  EUREKA_SERVER_URLS: "http://admin:[email protected]:8761/eureka"
---
apiVersion: v1
kind: Service
metadata:
  name: eureka-headless
  namespace: eureka
spec:
  type: ClusterIP
  clusterIP: None
  selector:
    app: eureka-replica
  ports:
  - name: http
    port: 8761
---
apiVersion: v1
kind: Service
metadata:
  name: eureka
  namespace: eureka
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 8761
  selector:
    app: eureka
  clusterIP: 10.43.87.61
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: eureka-cluster
  namespace: eureka
spec:
  replicas: 2 #必须和REPLICAS一致
  serviceName: eureka-headless
  selector:
    matchLabels:
      app: eureka-replica
  template:
    metadata:
      labels:
        app: eureka-replica
    spec:
      containers:
      - name: eureka
        image: lhstack/eureka
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 8761
        env:
        - name: IS_STATEFUL_SET
          value: "true"
        - name: NAMESPACE
          value: "eureka"
        - name: SECURITY_ENABLE
          value: "true"
        - name: SECURITY_USERNAME
          valueFrom:
            configMapKeyRef:
              key: SECURITY_USERNAME
              name: eureka
        - name: SECURITY_PASSWORD
          valueFrom:
            configMapKeyRef:
              key: SECURITY_PASSWORD
              name: eureka
        - name: SERVICE_NAME
          value: "eureka-headless"
        - name: REPLICAS
          value: "2"
        - name: JAVA_OPTS
          value: "-Xmx512m -Xms512m"
        resources:
          requests:
            cpu: 50m
            memory: 128Mi
          limits:
            cpu: 100m
            memory: 512Mi
        readinessProbe:
          httpGet:
            path: /actuator/health
            port: 8761
          initialDelaySeconds: 5
          failureThreshold: 5
          periodSeconds: 5
          successThreshold: 1
          timeoutSeconds: 2
        livenessProbe:
          httpGet:
            path: /actuator/health
            port: 8761
          initialDelaySeconds: 60
          failureThreshold: 5
          periodSeconds: 120
          successThreshold: 1
          timeoutSeconds: 2
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eureka-deploy
  namespace: eureka
spec:
  replicas: 1
  selector:
    matchLabels:
      app: eureka
  template:
    metadata:
      labels:
        app: eureka
    spec:
      containers:
      - name: eureka
        image: lhstack/eureka
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 8761
        readinessProbe:
          httpGet:
            path: /actuator/health
            port: 8761
          initialDelaySeconds: 5
          failureThreshold: 5
          periodSeconds: 5
          successThreshold: 1
          timeoutSeconds: 2
        livenessProbe:
          httpGet:
            path: /actuator/health
            port: 8761
          initialDelaySeconds: 60
          failureThreshold: 5
          periodSeconds: 120
          successThreshold: 1
          timeoutSeconds: 2
        resources:
          requests:
            cpu: 50m
            memory: 128Mi
          limits:
            cpu: 100m
            memory: 512Mi
        env:
        - name: SECURITY_ENABLE
          value: "true"
        - name: SECURITY_USERNAME
          valueFrom:
            configMapKeyRef:
              key: SECURITY_USERNAME
              name: eureka
        - name: SECURITY_PASSWORD
          valueFrom:
            configMapKeyRef:
              key: SECURITY_PASSWORD
              name: eureka
        - name: EUREKA_SERVER_URLS
          valueFrom:
            configMapKeyRef:
              key: EUREKA_SERVER_URLS
              name: eureka
        - name: JAVA_OPTS
          value: "-Xmx512m -Xms512m -Deureka.client.fetch-registry=true -Deureka.client.register-with-eureka=true"

kubectl apply -f eureka.yml

⁠helm安装

helm下载地址: https://github.com/helm/helm/releases helm相关模板代码地址: https://gitee.com/myprofile/spring-cloud/tree/master/eureka-server/k8s/helm

# 在服务器上进入eureka-server/k8s/helm目录
# 安装集群
helm install eureka-cluster .
# 查看集群
helm list
# 修改集群数量
helm upgrade --set replicas=5 eureka-cluster .

Tag summary

Content type

Image

Digest

Size

109.5 MB

Last updated

almost 5 years ago

docker pull lhstack/eureka