• 技术文章 >后端开发 >Golang

    详解go-admin部署到istio平台方法

    藏色散人藏色散人2021-02-01 10:56:13转载505

    下面由golang教程栏目给大家介绍go-admin部署到istio平台,希望对需要的朋友有所帮助!

    部署istio环境参考istio官网

    创建独立命名空间go-admin,自动注入 sidecar

    kubectl create namespace go-admin
    kubectl label namespace go-admin istio-injection=enabled

    创建配置configmap

    kubectl create configmap settings-admin --from-file=config/settings.yml -n go-admin

    pv及pvc根据自己到需求调整

    kubectl apply -f storage.yml -n go-admin#storage.yml---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: go-admin
      namespace: go-admin
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: "1Mi"
      volumeName:
      storageClassName: nfs-csi

    部署后端服务v1版本dev分支

    配置

    kubectl apply -f deploy.yml -n go-admin# deploy.yml---
    apiVersion: v1
    kind: Service
    metadata:
      name: go-admin
      namespace: go-admin
      labels:
        app: go-admin
        service: go-admin
    spec:
      ports:
      - port: 8000
        name: http
        protocol: TCP
      selector:
        app: go-admin
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: go-admin-v1
      namespace: go-admin
      labels:
        app: go-admin
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: go-admin
          version: v1
      template:
        metadata:
          labels:
            app: go-admin
            version: v1
        spec:
          containers:
          - name: go-admin
            image: registry.cn-shanghai.aliyuncs.com/go-admin-team/go-admin:v1.2.2
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 8000
            volumeMounts:
            - name: go-admin
              mountPath: /temp
            - name: go-admin
              mountPath: /static
            - name: go-admin-config
              mountPath: /config/
              readOnly: true
          volumes:
          - name: go-admin
            persistentVolumeClaim:
              claimName: go-admin
          - name: go-admin-config
            configMap:
              name: settings-admin
    ---

    创建前端nginx配置configmap

    kubectl create configmap nginx-frontend --from-file=default.conf -n go-admin#default.confserver {
      listen       80;
      listen  [::]:80;
      server_name  localhost;
    
      #charset koi8-r;
      #access_log  /var/log/nginx/host.access.log  main;
    
      location / {
          root   /usr/share/nginx/html;
          index  index.html index.htm;
      }}

    部署前端服务v1版本dev分支

    kubectl apply -f deploy.yml# deploy.yml---
    apiVersion: v1
    kind: Service
    metadata:
      name: go-admin-ui
      namespace: go-admin
      labels:
        app: go-admin-ui
        service: go-admim-ui
    spec:
      ports:
        - port: 80
          name: http
          protocol: TCP
      selector:
        app: go-admin-ui
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: go-admin-ui-v1
      namespace: go-admin
      labels:
        app: go-admin-ui
        version: v1
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: go-admin-ui
          version: v1
      template:
        metadata:
          labels:
            app: go-admin-ui
            version: v1
        spec:
          containers:
            - name: go-admin-ui
              image: registry.cn-shanghai.aliyuncs.com/go-admin-team/go-admin-ui:v1.2.2
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 80
              volumeMounts:
                - name: frontendconf
                  mountPath: /etc/nginx/conf.d/default.conf
                  subPath: default.conf
                  readOnly: true
          volumes:
            - name: frontendconf
              configMap:
                name: nginx-frontend
    ---

    创建dr

    kubectl apply -f destination-go-admin.yaml -n go-admin#destination-go-admin.yamlapiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: go-admin-ui
      namespace: go-admin
    spec:
      host: go-admin-ui
      subsets:
      - name: v1
        labels:
          version: v1
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: go-admin
      namespace: go-admin
    spec:
      host: go-admin
      subsets:
      - name: v1
        labels:
          version: v1

    创建gateway和vs(域名改成实际域名)

    kubectl apply -f go-admin-gateway.yml -n go-admin#go-admin-gateway.yml---
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: go-admin-gateway
      namespace: go-admin
    spec:
      selector:
        istio: ingressgateway # use istio default controller
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "go-admin.xxxxxx.com"---
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: go-admin-ui
      namespace: go-admin
    spec:
      hosts:
      - "*"
      gateways:
      - go-admin-gateway
      http:
      - match:
        - uri:
            prefix: /api
        - uri:
            prefix: /login
        route:
        - destination:
            host: go-admin
            subset: v1
            port:
              number: 8000
      - match:
        - uri:
            prefix: /
        route:
        - destination:
            host: go-admin-ui
            subset: v1
            port:
              number: 80

    以上就是详解go-admin部署到istio平台方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    上一篇:深析golang中interface接口 下一篇:Golang在各平台下交叉编译
    大前端线上培训班

    相关文章推荐

    • embed是啥?Go怎么用它加载静态文件?• Golang和Lua相遇会擦出什么火花?• GoLand是啥?怎么使用注释 Goanno?• 如何在Mac环境下配置 Golang 环境• 详解xorm怎么自动生成model

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网