我們這里的dubbo-consumer是dubbo-demo-service的消費者:
我們之前已經在jenkins配置好了流水線,只需要填寫參數就行了。
由於dubbo-consumer用的gitee的私有倉庫,需要添加公鑰,這里大家可以自己找個client服務來做實驗。
下面是我們通過jenkins構建的鏡像,已經上傳到我們的harbor私有倉庫當中了:
這里我們構建了兩次,構建了兩個鏡像,11bb9cd這個用來做模擬生產發版更新實驗。
准備資源配置清單:
1、dp.yaml 紅色部分根據實際鏡像tag修改
# mkdir /data/k8s-yaml/dubbo-consumer
# cd /data/k8s-yaml/dubbo-consumer
# vi dp.yaml
kind: Deployment apiVersion: extensions/v1beta1 metadata: name: dubbo-demo-consumer namespace: app labels: name: dubbo-demo-consumer spec: replicas: 1 selector: matchLabels: name: dubbo-demo-consumer template: metadata: labels: app: dubbo-demo-consumer name: dubbo-demo-consumer spec: containers: - name: dubbo-demo-consumer image: harbor.od.com/app/dubbo-demo-consumer:master_191201_1600 ports: - containerPort: 8080 protocol: TCP - containerPort: 20880 protocol: TCP env: - name: JAR_BALL value: dubbo-client.jar imagePullPolicy: IfNotPresent imagePullSecrets: - name: harbor restartPolicy: Always terminationGracePeriodSeconds: 30 securityContext: runAsUser: 0 schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 maxSurge: 1 revisionHistoryLimit: 7 progressDeadlineSeconds: 600
2、svc.yaml
# vi svc.yaml
kind: Service apiVersion: v1 metadata: name: dubbo-demo-consumer namespace: app spec: ports: - protocol: TCP port: 8080 targetPort: 8080 selector: app: dubbo-demo-consumer
3、ingress.yaml
# vi ingress.yaml
kind: Ingress apiVersion: extensions/v1beta1 metadata: name: dubbo-demo-consumer namespace: app spec: rules: - host: demo.od.com http: paths: - path: / backend: serviceName: dubbo-demo-consumer servicePort: 8080
應用資源配置清單:
# kubectl apply -f http://k8s-yaml.od.com/dubbo-consumer/dp.yaml # kubectl apply -f http://k8s-yaml.od.com/dubbo-consumer/svc.yaml # kubectl apply -f http://k8s-yaml.od.com/dubbo-consumer/ingress.yaml
# kubectl get pod -n app
查看log,是否啟動成功:
# kubectl logs dubbo-demo-consumer-f8d5f5f74-dgmqd -n app
檢查dubbo-monitor是否已經注冊成功:
添加個dns解析,來驗證:
# vi /var/named/od.com.zone
# systemctl restart named
瀏覽器訪問http://demo.od.com/hello?name=slim
接下來我們模擬升級發版,我們提前修改了代碼,並提交到了git倉庫,發版的前提是使用jenkins提前構建了鏡像並且上傳到了我們的私有harbor倉庫中,具體的構建流程不在贅述,只需要將遠程git倉庫的版本修改后構建就行了。
修改dp.yaml資源配置清單,修改harbor鏡像倉庫中對應的tag版本:
# vi dp.yaml
應用修改后的資源配置清單,當然也可以在dashboard中進行在線修改:
# kubectl apply -f http://k8s-yaml.od.com/dubbo-consumer/dp.yaml
已經啟動起來了,使用瀏覽器驗證:http://demo.od.com/hello?name=slim
至此,我們一套完成的dubbo服務就已經交付到k8s集群當中了,並且也演示了如何發版。