微信二维码

二维码 扫二维码马上关注
扫码咨询
使用MicroProfile和Kubernetes配置微服务

正如Twelve-Factor-App中定义的,云本地应用程序在外部存储配置而不是在代码中存储配置非常重要,因为这使得将应用程序部署到不同的环境成为可能。
应用程序的配置是在部署(登台、生产、开发环境等)之间可能发生变化的所有内容。这包括:资源句柄到…支持服务。外部服务的凭据…

使用Java EE实现的微服务可以利用微概要配置。例如,可以在Kubernetes YAML文件中进行配置,并通过注释和api从Java代码中访问配置。

下面是一个来自cloud-native-starter repo的简单示例。“articles”服务使用配置来定义是否在第一次调用时创建十个article。在YAML文件中,定义了指向ConfigMap的环境变量。

kind: Deployment
 
apiVersion: apps/v1beta1
 
metadata:
 
  name: articles
 
spec:
 
  replicas: 1
 
  template:
 
    metadata:
 
      labels:
 
        app: articles
 
        version: v1
 
    spec:
 
      containers:
 
      - name: articles
 
        image: articles:1
 
        ports:
 
        - containerPort: 8080
 
        env:
 
        - name: samplescreation
 
          valueFrom:
 
            configMapKeyRef:
 
              name: articles-config
 
              key: samplescreation
 
      restartPolicy: Always
 
---
 
kind: ConfigMap
 
apiVersion: v1
 
metadata:
 
  name: articles-config
 
data:
 
  samplescreation: CREATE
在Java代码中,可以通过@Inject和@ConfigProperty访问配置。
public class CoreService {
 
  private static final String CREATE_SAMPLES = "CREATE";
 
  @Inject
 
  @ConfigProperty(name = "samplescreation", defaultValue = "dontcreate")
 
  private String samplescreation;
 
  @PostConstruct
 
  private void addArticles() {
 
    if (samplescreation.equalsIgnoreCase(CREATE_SAMPLES))
 
      addSampleArticles();
 
    }

注意,您不能访问构造函数中注入的变量。而是使用@PostConstruct注释。感谢Emily Jiang的解答。

如果您想尝试这个特性以及其他许多微文件和Istio特性,请从cloud-native-starter repo获得代码并运行这些命令。

$ git clone https://github.com/nheidloff/cloud-native-starter.git
 
$ scripts/check-prerequisites.sh
 
$ scripts/deploy-articles-java-jee.sh
 
$ scripts/show-urls.sh
更多精彩内容,请关注吉优惠券网:专注阿里云代金券阿里云服务器报价腾讯云代金券的免费更新领取!
更多精彩内容推荐

开源仪表盘框架的终极指南
使用SQL提示符重构数据库
带你了解51个数据库的术语
如何使用Redis和Java进行数据库缓存
使用云虚拟主机上的网页图片显示不出来怎么办
阿里云第四代云服务器全新上市


在线客服
热线电话

扫一扫 微信加好友