k8s微服務部署服務流程

一、在測試環境的和正式環境的master上,新建namespace,多個service屬於一個namespace

二、master新建docker-registry secret,拉去鏡像用的,注意namespace

kubectl create secret docker-registry docker-hub-secret \
    --docker-server=registry.cn-hangzhou.aliyuncs.com \
    --docker-username=original_dk@163.com \
    --docker-password=111111 \
    --docker-email=original_dk@163.com \
    --namespace=dk-shop
複製代碼

三、master新建各service的secret管理mysql,redis等帳號密碼

看如下項目的配置方式 mysql

咱們規定:

  • 項目中的config拆分紅通常config(通常mysql/redis host,port和其餘配置等)和.env(名字能夠隨便起),該.env主要保存好比mysql,redis帳號密碼
  • 每一個service有本身的secret,每一個secret的名字和service相同,該secret是維護項目中的.env
  • 你能夠把全部的敏感信息寫在一個.env上也能夠多個,好比,mysql.env,redis.env,主要看項目須要,可是最終都由一個secret維護
# 一個.env
# .env=.env中前邊的.env是k8s自動部署到項目對應目錄的文件名稱,後邊.env是項目中的.env文件
kubectl create secret generic user --from-file=.env=.env --namespace=dk-shop

# 多個.env
kubectl create secret generic user --from-file=mysql.env=mysql.env --from-file=redis.env=redis.env --namespace=dk-shop
複製代碼

而後對應的deployment.yamlredis

apiVersion: apps/v1
kind: Deployment
metadata:
  name: user
  labels:
    app: user
spec:
  replicas: 3
  selector:
    matchLabels:
      app: user
  template:
    metadata:
      labels:
        app: user
        version: v1
    spec:
      serviceAccountName: dk-shop
      containers:
        - name: user
          image: registry.cn-hangzhou.aliyuncs.com/dk-shop/user:dev-dc95299f
          ports:
            - containerPort: 5001
          volumeMounts:
            - name: config
              # mountPath:
              # 有subPath,則是個文件,會被覆蓋;沒有subPath,是個文件夾;裏邊的全部文件都會被隱藏,而後把配置放到裏邊,並命名爲config.ini
              mountPath: /var/www/config.ini
              # 若是配置文件在項目根目錄,若是沒有subPath,則會把項目根目錄裏(即mountPath對應的目錄)所有文件隱藏,會出現問題
              # 若是配置文件在單獨文件夾,則可能不須要subPath
              # subPath,對應的下邊的key
              subPath: config.ini
            - name: env
              mountPath: /var/www/.env
              subPath: .env
      volumes:
        - name: config
          configMap:
            name: user
            items:
              - key: config.ini # configMap中的key
                path: config.ini # 條目的值被存儲在項目的該文件中,有subPath,則subPath優先 
        - name: env
          secret:
            secretName: user

複製代碼

四、在任意一臺機器上經過kustomise,將多個yaml壓縮成一個yaml,傳到各環境的master

kubectl apply -f deml.yaml
複製代碼
kustomize build /home/user-deploy/overlays/develop/v1.1.123 -o user.yaml
複製代碼

五、外部服務接口設置

域名服務 好比:
order.service.demo.com/api/v2/order/getOrderList 服務名稱.service.域名/api/api版本號/模塊名/操做名sql

六、項目和服務是如何組織的?

服務通常爲共享服務,爲單獨的命名空間
相關文章
相關標籤/搜索