国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐

這篇具有很好參考價(jià)值的文章主要介紹了37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

云原生專欄大綱

準(zhǔn)備工作

  1. 安裝gitlab,將https://gitee.com/zhouwei1996/spring-cloud-bookinfo.git遷移至gitlab
  2. gitlab中創(chuàng)建全局變量,如鏡像倉(cāng)庫(kù)賬號(hào)密碼,保證gitlab-ci.yaml中內(nèi)容安全
  3. 共享runner創(chuàng)建,獲取token如下:glrt-wfzAecJmszsZb3GorS8J

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 安裝gitlab-runner,參考:22.云原生之GitLab CICD實(shí)戰(zhàn)及解析
#以下兩個(gè)在gitlab頁(yè)面獲取
gitlabUrl: http://192.168.31.3:83/
runnerRegistrationToken: "glrt-wfzAecJmszsZb3GorS8J" #gitlab-runner注冊(cè)用到的tocken

concurrent: 10 #最大作業(yè)并發(fā)數(shù)
checkInterval: 30 #新作業(yè)檢查間隔
tags: "shared" #runner的標(biāo)簽
#rbac權(quán)限打開(kāi)
rbac:
  create: true
  resources: ["pods", "pods/exec", "secrets","configmaps"]
  verbs: ["get", "list", "watch", "create", "patch", "delete","update"]

修改ConfigMap下config.template.toml配置:

[[runners]]
  builds_dir = "/builds"
  [runners.kubernetes]
    namespace = "base"
    image = "alpine"
    pull_policy = "if-not-present"      # 拉取鏡像策略,本地有是有本地?zé)o需拉取
    [[runners.kubernetes.volumes.pvc]]  # 掛載數(shù)據(jù)卷持久化
      name = "k8s-running-pod-data"
      mount_path = "/builds"
    [[runners.kubernetes.volumes.host_path]]  # 使用docker命令需要配置引擎
      name = "docker"
      mount_path = "/var/run/docker.sock"
      host_path = "/var/run/docker.sock"
    [[runners.kubernetes.host_aliases]]  # 用于解析內(nèi)網(wǎng)中的harbor域名
      ip = "192.168.31.11"
      hostnames = ["harbor域名"]
    [[runners.kubernetes.host_aliases]]  # 用于解析k8s集群中Kubernetes API Server 的地址
      ip = "192.168.31.21"               # k8s集群master ip
      hostnames = ["lb.kubesphere.local"]

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 安裝harbor,此處小編使用阿里云鏡像倉(cāng)庫(kù)
  2. 安裝sealed-secrets,參考24.云原生ArgoCD高級(jí)之?dāng)?shù)據(jù)加密seale sealed | 使用 Sealed Secrets 在 Kubernetes 中管理密鑰安全
  3. 開(kāi)啟istio自動(dòng)注入,參考:29.云原生KubeSphere服務(wù)網(wǎng)格實(shí)戰(zhàn)之Istio安裝配置

項(xiàng)目結(jié)構(gòu)介紹

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
整個(gè)微服務(wù)應(yīng)用中包含了5個(gè)組件

productpage 是一個(gè)由 react 開(kāi)發(fā)的前端組件
gateway 是一個(gè)由 spring-cloud-gateway 提供的 API 網(wǎng)關(guān)服務(wù)
details 是一個(gè) spring-cloud 微服務(wù),提供了書(shū)籍詳情 API
reviews提供了基礎(chǔ)的書(shū)籍評(píng)論信息, review-v2 在 review-v1 的基礎(chǔ)之上額外的提供了評(píng)分?jǐn)?shù)據(jù),依賴 ratings 服務(wù)
ratings 是一個(gè) golang 開(kāi)發(fā)的微服務(wù)組件

配置安全測(cè)試

改造Springcloud-bookinfo中Gateway網(wǎng)關(guān),將reviews權(quán)重加密,從Secret中獲取權(quán)重值進(jìn)行測(cè)試

ConfigMap

ConfigMap 主要用于存儲(chǔ)非敏感的配置數(shù)據(jù)
application.yml中經(jīng)常會(huì)配置賬號(hào)密碼這些,此時(shí)資源清單中這些內(nèi)容就不能以明文暴露到gitlab中

server:
  port: ${SERVER_PORT:8080}
spring:
  application:
    name: gateway
  cloud:
    gateway:
      routes:
        - id: ratings
          uri: lb://ratings
          predicates:
            - Path=/api/v1/reviews/*/ratings
        - id: details
          uri: lb://details
          predicates:
            - Path=/api/v1/products/*
        - id: reviews-v1
          uri: lb://reviews-v1
          predicates:
            - Path=/api/v1/products/*/reviews
            - Weight=reviews, ${reviews-v1:0}
        - id: reviews-v2
          uri: lb://reviews-v2
          predicates:
            - Path=/api/v1/products/*/reviews
            - Weight=reviews, ${reviews-v2:100}

management:
  endpoints:
    web:
      exposure:
        include: "*"

此時(shí)訪問(wèn)頁(yè)面一直是紅星
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

Secret

Secret 用于存儲(chǔ)敏感數(shù)據(jù),例如密碼、API 密鑰等。

kind: Secret
apiVersion: v1
metadata:
  name: gateway
  namespace: spring-cloud
  annotations:
    kubesphere.io/creator: admin
data:
  reviews-v1: NTA=
  reviews-v2: NTA=
type: Opaque

明文數(shù)據(jù)如下
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

使用Secret中數(shù)據(jù)的方式

  1. 通過(guò)環(huán)境變量傳遞Secret中的數(shù)據(jù)
    • 在 Pod 的配置文件中,將 Secret 中的數(shù)據(jù)通過(guò)環(huán)境變量傳遞給容器。你可以在 Pod 的 spec.containers.env 部分中設(shè)置環(huán)境變量,將 Secret 中的數(shù)據(jù)作為值傳遞給容器。示例:
env:
  - name: server.port
    valueFrom:
      secretKeyRef:
        name: details
        key: server-port
  1. 通過(guò)卷掛載Secret中的數(shù)據(jù)
    • 你還可以將 Secret 中的數(shù)據(jù)作為文件掛載到 Pod 中。在 Pod 的配置文件中,可以通過(guò) volumes 和 volumeMounts 將 Secret 中的數(shù)據(jù)掛載到容器中。示例:
volumes:
  - name: secret-volume
    secret:
      secretName: my-secret
containers:
  volumeMounts:
    - name: secret-volume
      mountPath: /etc/my-app

這樣,你可以在 ConfigMap 中引用這些環(huán)境變量或掛載的文件,間接地使用 Secret 中的數(shù)據(jù)。記住,Secret 中的數(shù)據(jù)是加密存儲(chǔ)的,應(yīng)該小心處理以確保安全性。

Deployment使用Secret配置

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

          env:
            - name: reviews-v1
              valueFrom:
                secretKeyRef:
                  name: gateway
                  key: reviews-v1
            - name: reviews-v2
              valueFrom:
                secretKeyRef:
                  name: gateway
                  key: reviews-v2

訪問(wèn)頁(yè)面測(cè)試,多次訪問(wèn)出現(xiàn)v1和v2版本頁(yè)面
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

Secret加密

  1. 創(chuàng)建bookinfo-gateway-secret.yaml
kind: Secret
apiVersion: v1
metadata:
  name: gateway
  namespace: spring-cloud
  annotations:
    kubesphere.io/creator: admin
data:
  reviews-v1: MA==
  reviews-v2: MTAw
type: Opaque

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 加密bookinfo-gateway-secret.yaml
# 備份公鑰
kubeseal --fetch-cert > public-cert.pem

kubeseal --format=yaml --cert ./public-cert-0.26.0.pem < bookinfo-gateway-secret.yaml > bookinfo-gateway-secret-sealed.yaml
  1. 查看bookinfo-gateway-secret-sealed.yaml
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
  creationTimestamp: null
  name: gateway
  namespace: spring-cloud
spec:
  encryptedData:
    reviews-v1: AgCQ1PwFXeAitYGhDd5Pz+VFZYzsKsGUEqhK/mSQk/3Fhxut+z7lX8+fZReEAt+CPGpOObdHvTwPMeT9eCD3KrKulUgRfLU0ViJw5oU8ESXfoHOIcmAFi58ChtW3vA6Ww6bKoPmdtbKH8OVkLou+8Rw/BG3N+H3+NqSeBvLE7ITv2ZCX2eaH0pOARWG8vQfw65eAnwuYb7LyRoizlAO7eXdJ1V4r7mhqvYGIPMISFw7h3P229ZRYoXwZpOdPyfA3fb6eKQU2JBXUNWp+IT9iNImEt8j6ZGbH/Q49C+tvDRb27Yw13OzAf0QCy88ZbQr4ZixhWi7qUHv3Lhfso++/Ps8/V6svz+p2Ecfsb/+2B7cpBvTLeIH3s6IE+hm7OomnnyQT5wEenBchflsf4/PWd6AuJBm94rtquy5QmPplpy4mig3C68anSYe2fARgK4CPBgczqeVjUJVmOd0HuNjsGXnssC5j8C10y92pXNvu9f7txIANEj5UCul+ovIUZslqof3wMs7OCGsDpJTXVHCL6fF4N0EAHTgjHJgaZQIvjPm1CGmG1igK6wM4QyGmfSGtfc9mn68v1xVKFqAE3eWJsoWuMOaZ09HGwNfS8oMN1DUUjTZfZbR7iJgtAkUcrwoSKfxe4kKrXAa3RDff/9WK/WzQl5/beLNOT5XwcC8lXK43xcILH1MNqrP5zYdv+erIH3DO
    reviews-v2: AgBtPBz/ANesC/HP7UVhtJbZ2g5oyI08RWck3tQ78pCJzF1w7r9s4p1YWB3zbZ+xgL+rjCnl6IVlaB5UBwsYG1EgkT/g5e0Nfxy0aUigcKu87Qvaj1zmtn3rzP/xZ1RNmcKfK8MRiU4NTj8OwhyjKYe/Qy/pPX7D53880wTdZsuhLFTyF5egZCnRdJekq297hwGH+B7cp4pCbfxoZmTjO5b8jim2YGmc1hEMFKhqObb1AyqMMTJ1G3kF2dmVenlU+jTDRGAlndZLRO9HbeGjBPtjhZuLO4sOLPp6Nd0Cjzzkxe9CylzsTT4SynKN6cgpWcYRweYnelMnVDBoa58X47quMc6LTvo7UmYobfIk//NT34r6qDZ4MR160onHxYUxtGyI3k6ZQJn2wqdDIJEWdMaY+r/DYqG7pgM4XGickNtgKS8o1UFh7fip71a5HGy0q/dPb9URtbKzzABcd91SsVnxK9QYFDFqsUblmpDkCcWm7hMSClAvE8+wvC5+s1bq6+V6QO21coXMqoulU3DVujh0zJE8VSuxIbKvzeVOs0peCNSRpxfF53DCf5JSawseKFkwNn2E47zPHSsHZ2sxQy9Wm7lrfIIsc26oyFhwBhDR416bZ7mRNyJbvjSKWN2iUtF7cLr+WMU2LFszroQMbwkBlciWA9W9pgTrV3Tv+Zi+10yTq199KxShuZ09rcEGsoXWtqQ=
  template:
    metadata:
      annotations:
        kubesphere.io/creator: admin
      creationTimestamp: null
      name: gateway
      namespace: spring-cloud
    type: Opaque
  1. 刪除bookinfo-gateway-secret.yaml部署

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 部署bookinfo-gateway-secret-sealed.yaml
kubectl apply -f bookinfo-gateway-secret-sealed.yaml

執(zhí)行上述命令會(huì)創(chuàng)建原始的secret,生成如下:
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 重新部署Gateway

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 訪問(wèn)頁(yè)面測(cè)試

此時(shí)無(wú)論怎么訪問(wèn)都是顯示紅色星
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

kustomize部署清單

https://gitee.com/zhouwei1996/kustomize
kustomize-bookinfo-reviews通過(guò)Istio實(shí)現(xiàn)金絲雀部署,結(jié)構(gòu)中資源與其他項(xiàng)目有區(qū)別
下述以reviews項(xiàng)目為例,其他項(xiàng)目類似,可編寫為kustomize資源清單,通過(guò)app of apps模式一鍵部署。

├─kustomize(父kustomize)
│  ├─kustomize-bookinfo-reviews(bookinfo-reviews部署清單)
│  ├─├─base(公用資源)
│  ├─├─├─kustomization.yaml(組織資源)
│  ├─├─├─svc.yaml
│  ├─├─├─dr.yaml
│  ├─├─├─sa.yaml
│  ├─├─├─vs.yaml
│  ├─├─build(cicd過(guò)程生成匯總資源)
│  ├─├─├─build.yaml
│  ├─├─├─kustomization.yaml
│  ├─├─overlay(補(bǔ)丁路徑)
│  ├─├─├─v1
│  ├─├─├─configmap.yaml(存放springboot的application.yml配置)
│  ├─├─├─deployment.yaml
│  ├─├─├─kustomization.yaml
│  ├─├─├─v2
│  ├─├─├─configmap.yaml(存放springboot的application.yml配置)
│  ├─├─├─deployment.yaml
│  ├─├─├─kustomization.yaml
------------------------------------
│  ├─kustomize-bookinfo-productpage(bookinfo-productpage部署清單)
│  ├─├─base(公用資源)
│  ├─├─├─kustomization.yaml(組織資源)
│  ├─├─├─istio-gateway.yaml
│  ├─├─├─svc.yaml
│  ├─├─├─dr.yaml
│  ├─├─├─sa.yaml
│  ├─├─├─vs.yaml
│  ├─├─├─deployment.yaml
│  ├─├─build(cicd過(guò)程生成匯總資源)
│  ├─├─├─build.yaml
│  ├─├─├─kustomization.yaml
│  ├─├─overlay(補(bǔ)丁路徑)
│  ├─├─├─dev
│  ├─├─├─kustomization.yaml
----------------------------------------
│  ├─kustomize-bookinfo-gateway(bookinfo-productpage部署清單)
│  ├─├─base(公用資源)
│  ├─├─├─kustomization.yaml(組織資源)
│  ├─├─├─configmap.yaml
│  ├─├─├─svc.yaml
│  ├─├─├─dr.yaml
│  ├─├─├─sa.yaml
│  ├─├─├─vs.yaml
│  ├─├─├─deployment.yaml
│  ├─├─build(cicd過(guò)程生成匯總資源)
│  ├─├─├─build.yaml
│  ├─├─├─kustomization.yaml
│  ├─├─overlay(補(bǔ)丁路徑)
│  ├─├─├─dev
│  ├─├─├─kustomization.yaml
--------------下述結(jié)構(gòu)類似查看gitee---------------------
|--kustomize-bookinfo-admin
|--kustomize-bookinfo-ratings
|--kustomize-bookinfo-details

ConfigMap改造

假設(shè)配置中ratings下所有內(nèi)容為需加密數(shù)據(jù),改造如下:

kind: ConfigMap
apiVersion: v1
metadata:
  name: reviews
  namespace: spring-cloud
  annotations:
    kubesphere.io/creator: admin
data:
  application.yml: |-
    server:
      port: ${SERVER_PORT:8080}
    spring:
      application:
        name: reviews

    ratings:
      enabled: ${ratings_enabled:false}
      server-addr: ${ratings_server_addr:http://ratings}
      color: ${ratings_color:red}

    management:
      endpoints:
        web:
          exposure:
            include: "*"

Secret

bookinfo-reviews-secret.yaml

kind: Secret
apiVersion: v1
metadata:
  name: reviews
  namespace: spring-cloud
  annotations:
    kubesphere.io/creator: admin
data:
  ratings_color: cmVk
  ratings_enabled: dHJ1ZQ==
  ratings_server_addr: aHR0cDovL3JhdGluZ3M=
type: Opaque

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

SealedSecret

  1. 加密Secret
kubeseal --format=yaml --cert ./public-cert-0.26.0.pem < bookinfo-reviews-secret.yaml > bookinfo-reviews-secret-sealed.yaml
  1. 加密后SealedSecret,替換部署清單中Secret
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
  creationTimestamp: null
  name: reviews
  namespace: spring-cloud
spec:
  encryptedData:
    ratings_color: AgCfoIXX43E/KCSqtmC2HPXqUky2tOMs5ZrOesM7c19eeGSLSZUJiZ58mv407couvVTAKy0f5HazHeGOvQzW5QmMQtFM38yrKrNrwInuWal8XGMRUo/pwbxlPQ2K5X8L9g/jJg7eykaXHoYA/n0r1XRq0ZgN3M8I+uhZqrABhtT7oxb+yQB2w2BCOdfCpnogblgfZQkgEiYoBqfmMH4SZ+Uz//fi3EKekIItBq94ZvjpaS/w+G1+DE7suhsYp4gKRUwcJBY9D6qWJc4LBXwOGKfKI6Lg5cKOs6UYi0qAUPeU0fU+zpp3uyFia2ghWuXHUhe2E4zwEFbMJ/CFiQO76bHHblo4+aLWi0SQHLVDR6h0jtNTjRk+IkxMwFlxji2UqHa5J6giCJwMpTx44UHicQ5RPbwbVCtpog/U+vjTejszxRZDU0SWeIlH2gHRtFdIIl8uKy2/SFhjE6i/0NN2F1hXGHfCGE7rLZXGXUxNRvvMa/IPHKahn/HfunURXODo/kwdqoEuaoRnEjk4LD1oWdhUZxume/jC2riTMTTcQBEEyNWJIwdJzooACj7Z0Qn5AG0Gs/A23yea6WCL5ZCn0b0k8KzHQHZRcIPWddZStYaqO5l2B4F8rblL7XwpDk9lXXbPgktKlou19HMcUmZu3Vuu7DNuehrAr0K5bUR8qiillfOLbO5RFmZsr7rOSAe4bhGCE2U=
    ratings_enabled: AgBsOa0HGRi+m/KArc1WZcHOB6pouyq4inkfDXUpKkOkZXhhJsk97qr/dTBQCae7ey+myUPPWpQhJLjcXFzE/f0lk0jRklZvUV8tdYUE6nj+MKmDHFf/tpe4+buB4nhcKOXsjzgBheuElXqObNmXaDxnHOdyDJJarG1eL3v+/cbcZ+mYPEmZQ4fzCSvLGQuN37ZKljjM5Mq5S6UhL8VK/2Niy+7weQZkVg5B/4P5L8I5n77//fUR5SNP79PxaeiY5dFgHU1+CiITTuC5igBTyqTFUrStZlo/pfbTtBDuAa//I1hgQhFF3l0Rb+HdySv1nrgbL6aWcJojpxIw3JJe4aEv/DGoF7jGRMsFPrSHk18DtO0+g0pLJ9SRxLCX8nNHDCynVFZfF6PIQx56kEFzv4I6zQEichstkTZq7rFPqjK7ROy8ctmJQHyVx3jbW4kBqAzwT5UhbVk0Kk/uwXjthgb+SA6EQoN5PNhcgtcU4YRxXgsmiy7r73qa5monqEBITD9icAVE2Ni8qtKDwU+q6j8L1qsSe2BM74JEeKmRQUTJYj2uzZjUCtS077BYAEQ6mts2eNOEIskHaDK09YwnZHThQ78Sslqv52scrHM65AT7UV1GVG/v010z9AWX8c0bRfObbFtYkxwy3l9GTWsyUw3ShJrGGY35jROsKBtlNdIg4Y6AOqSRyQ+7Hksz9CbkWA2Qaejq
    ratings_server_addr: AgBpinPNNUcEwEQqAKnMZKrGLDr7f3RFJZTtDxJcjPX5/nWJ2W4Wo2OKu/7Cj9qp7L+KddEELPpuXZP5BfFfjHJrq/QOUAIQYxQnwof/rem6lWMs+bxN3GTzsVakBwW1zi9oLAbpWjB8mblFnskbtRFF7r7jAFX7UFi5Ad6WyF0Bxitys9Jb64trjhhDeb4+yzV61raL+jqs3dhU/ObFPHmu6XIb0I4EUEy2IHPfWkL3gIn2rEpLzX71Tp1WfOjHLPFuOK81jaqgVQOtempQ8USsZQMJ2K4Lft9Sm2XoUfYjDCl56RnGYqtUKYQfDRr/YV5wFhOt15VBO/M0xsaYTYFKoyUw8SS85slkPe5nIyoRe5MdCjsWlQsVWS/nCo3ZCwPzEzsPMDGf0k8mNg2POgRFARr8iFy4Zp1uTxhy2h1ohw9TRDkD6U/gyj+ETCXdlRGRC8UFuVOHXz4+H8aXMMmPeIlCZ3t/6HU4xFc9TOghZQQqxgEt+lQU8aBNJKmHFUqIdtG01OdZ39aYSK0kGUqdp+Gh8UdE/JXa4aXV0u5EWUt5gcPg+8sAjstyWeozr1cg/26KvKj3JfcGflmMIg0CWZxc/Rm1acuM4LuCFKgkGPg5dWuTo3ZbXVz4d8WZxRpXgBsd6VGCCDDOfFPvuwpsOmC7yMVsQo+4mbiP3gBqf+pl8zP7PbA+RT/5puvBODGBMGUYNXvTyTVst1zQlQ==
  template:
    metadata:
      annotations:
        kubesphere.io/creator: admin
      creationTimestamp: null
      name: reviews
      namespace: spring-cloud
    type: Opaque

Deployment改造

apiVersion: apps/v1
kind: Deployment
metadata:
  name: reviews
  labels:
    app: reviews
    version: v1
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: reviews
      version: v1
  template:
    metadata:
      labels:
        app: reviews
        version: v1
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/yxymzw/reviews:latest
        name: reviews
        ports:
        - containerPort: 8080
        env:
        # 將secret加密配置引入
        - name: ratings_enabled
          valueFrom:
            secretKeyRef:
              name: reviews
              key: ratings_enabled     
        - name: ratings_server_addr
          valueFrom:
            secretKeyRef:
              name: reviews
              key: ratings_server_addr
        - name: ratings_color
          valueFrom:
            secretKeyRef:
              name: reviews
              key: ratings_color

Service

svc.yaml

apiVersion: v1  
kind: Service  
metadata:  
  name: reviews
  labels:
    app: reviews
    service: reviews
spec:  
  ports:   
  - port: 80   
    targetPort: 8080
  selector:    
    app: reviews

istio相關(guān)資源

DestinationRule

dr.yaml

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
    - name: v1
      labels:
        version: v1

Gateway

istio-gateway.yaml,流量入口建議放在bookinfo-productpage項(xiàng)目中,或者通過(guò)ArgoCD的app of apps放在頂級(jí)app中

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  # 指定了這個(gè) Gateway 的名稱
  name: kustomize-bookinfo-gateway
spec:
  # 指定了這個(gè) Gateway 的目標(biāo)選擇器為 istio: ingressgateway,表示這個(gè)網(wǎng)關(guān)將指向 Istio 中的 Ingress Gateway
  selector:
    istio: ingressgateway
  servers: # 定義了網(wǎng)關(guān)監(jiān)聽(tīng)的端口信息
    - port:
        number: 99
        name: http
        protocol: HTTP
      hosts:
        - "*"

該資源會(huì)與istio-ingressgateway綁定
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

VirtualService

vs.yaml

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http: # 定義了虛擬服務(wù)的 HTTP 路由規(guī)則
    - route: # 定義了路由規(guī)則,指定了流量的目的地
        - destination: # 指定了路由的目的地,即將流量發(fā)送到的服務(wù)
            host: reviews  # 指定了目標(biāo)服務(wù)的主機(jī)為 reviews
            subset: v1  # 指定了要發(fā)送流量到的服務(wù)的子集為 v1,這表示將流量路由到 reviews 服務(wù)的 v1 版本

ServiceAccount

sa.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: bookinfo-reviews
  labels:
    account: reviews

在 Istio 中,ServiceAccount 用于定義服務(wù)在 Istio 網(wǎng)格中的身份。Istio 構(gòu)建在 Kubernetes 上,并擴(kuò)展了 Kubernetes 的功能,包括對(duì)服務(wù)身份和訪問(wèn)控制的增強(qiáng)支持。使用 ServiceAccount 可以為服務(wù)提供以下幾個(gè)重要用途:

  1. 身份驗(yàn)證:ServiceAccount 可以用于驗(yàn)證服務(wù)的身份。在 Istio 中,每個(gè)服務(wù)都有一個(gè)關(guān)聯(lián)的 ServiceAccount,可以使用該 ServiceAccount 來(lái)驗(yàn)證服務(wù)的身份,確保只有經(jīng)過(guò)身份驗(yàn)證的服務(wù)才能相互通信。
  2. 授權(quán)和訪問(wèn)控制:通過(guò) ServiceAccount,可以為服務(wù)定義訪問(wèn)控制策略。在 Istio 中,可以使用 ServiceAccount 來(lái)定義哪些服務(wù)可以與其他服務(wù)通信,以及允許的通信方式和權(quán)限級(jí)別。
  3. 安全策略:ServiceAccount 可以與 Istio 的安全功能結(jié)合使用,如基于角色的訪問(wèn)控制(RBAC)和網(wǎng)絡(luò)策略,以實(shí)現(xiàn)微服務(wù)之間的安全通信。通過(guò)為每個(gè)服務(wù)分配特定的 ServiceAccount,并為這些 ServiceAccount 配置適當(dāng)?shù)臋?quán)限,可以確保服務(wù)之間的通信是安全的。
  4. 跟蹤和監(jiān)控:使用 ServiceAccount 可以幫助跟蹤和監(jiān)控服務(wù)在 Istio 網(wǎng)格中的活動(dòng)。通過(guò)為每個(gè)服務(wù)分配獨(dú)特的 ServiceAccount,可以更容易地跟蹤服務(wù)的活動(dòng)、生成日志和監(jiān)控指標(biāo)。

總的來(lái)說(shuō),ServiceAccount 在 Istio 中扮演著關(guān)鍵的角色,用于定義和管理服務(wù)在 Istio 網(wǎng)格中的身份和訪問(wèn)權(quán)限,從而確保服務(wù)之間的通信是安全、可控和可管理的。

kustomize-bookinfo-apps

通過(guò)該項(xiàng)目可以一鍵部署bookinfo
https://gitee.com/zhouwei1996/kustomize

kustomize-bookinfo-apps
|--root-app
   |--rootapp.yaml  # 指定apps位置
|--apps # 指定各個(gè)項(xiàng)目位置
   |--bookinfo-productpage.yaml
   |--bookinfo-gateway.yaml
   |--bookinfo-details.yaml
   |--bookinfo-reviews.yaml
   |--bookinfo-ratings.yaml

如何編寫Application?部署一個(gè)測(cè)試Application,查看部署后生成的Application資源yaml

kubectl get app -n argocd
kubectl get app <application> -n argocd -o yaml

rootapp.yaml

apiVersion: argoproj.io/v1alpha1
# Application 資源,用于定義應(yīng)用程序的部署配置
kind: Application
metadata:
  name: root-application
  namespace: argocd
spec:
  # 指定了應(yīng)用程序所屬的項(xiàng)目為 default
  project: default
  # 指定了應(yīng)用程序的源碼信息
  source:
    repoURL: https://gitee.com/zhouwei1996/kustomize.git
    # 指定了要部署的代碼版本為 HEAD
    targetRevision: HEAD
    # 指定了部署時(shí)的目錄配置
    path: ./kustomize-bookinfo-apps/apps
    directory:
      # 指定了不遞歸處理目錄
      recurse: false
  # 指定了應(yīng)用程序的部署目的地
  destination:
    server: https://kubernetes.default.svc
    # 指定了部署到的命名空間為 default
    namespace: default

targetRevision: HEAD

在軟件開(kāi)發(fā)中,targetRevision: HEAD 表示在版本控制系統(tǒng)(如 Git)中使用最新的提交作為部署的目標(biāo)版本。在 Git 中,HEAD 是指向當(dāng)前所在分支最新提交的指針。
具體來(lái)說(shuō),當(dāng)在部署流程中指定 targetRevision: HEAD 時(shí),系統(tǒng)會(huì)將部署目標(biāo)設(shè)置為當(dāng)前所在分支的最新提交。這意味著每次部署時(shí)都會(huì)使用當(dāng)前分支的最新代碼版本,確保部署的是最新的代碼更改。
使用 targetRevision: HEAD 可以確保部署的應(yīng)用程序始終是基于最新的代碼提交構(gòu)建的,有助于保持部署的應(yīng)用程序與代碼倉(cāng)庫(kù)的同步,并確保部署的應(yīng)用程序包含了最新的功能和修復(fù)。

bookinfo-productpage.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  # 指定了 Application 資源的名稱
  name: bookinfo-ratings
  # 指定了資源所在的命名空間為 argocd
  namespace: argocd
spec:
  # 指定了應(yīng)用程序的部署目的地
  destination:
    # 指定了部署到的命名空間
    namespace: spring-cloud
    # 指定了部署到的 Kubernetes 集群的 API 服務(wù)器地址
    server: https://kubernetes.default.svc
  # 指定了應(yīng)用程序所屬的項(xiàng)目為 default
  project: default
  source:
    # 指定了應(yīng)用程序的路徑
    path: kustomize-bookinfo-ratings
    # 指定了應(yīng)用程序的源代碼存儲(chǔ)庫(kù)的 URL
    repoURL: https://gitee.com/zhouwei1996/kustomize.git
    # 指定了要部署的代碼版本為 main (分支名稱)
    targetRevision: HEAD
  # 指定了同步策略
  syncPolicy:
    # 指定了應(yīng)用程序的同步策略為自動(dòng)化,以便 Argo CD 可以自動(dòng)監(jiān)視并同步應(yīng)用程序的狀態(tài)。
    automated: {} 
    syncOptions: # 指定了同步選項(xiàng)
      # 啟用了創(chuàng)建命名空間的選項(xiàng),即在部署應(yīng)用程序時(shí)會(huì)創(chuàng)建指定的命名空間
      - CreateNamespace=true

bookinfo-gateway.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: bookinfo-gateway
  namespace: argocd
spec:
  destination:
    namespace: spring-cloud
    server: https://kubernetes.default.svc
  project: default
  source:
    path: kustomize-bookinfo-gateway/base
    repoURL: https://gitee.com/zhouwei1996/kustomize.git
    targetRevision: HEAD
  syncPolicy:
    automated: {}
    syncOptions:
      - CreateNamespace=true

bookinfo-details.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: bookinfo-details
  namespace: argocd
spec:
  destination:
    namespace: spring-cloud
    server: https://kubernetes.default.svc
  project: default
  source:
    path: kustomize-bookinfo-details/base
    repoURL: https://gitee.com/zhouwei1996/kustomize.git
    targetRevision: HEAD
  syncPolicy:
    automated: {}
    syncOptions:
      - CreateNamespace=true

bookinfo-reviews-v1.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: bookinfo-reviews
  namespace: argocd
spec:
  destination:
    namespace: spring-cloud
    server: https://kubernetes.default.svc
  project: default
  source:
    path: kustomize-bookinfo-reviews/overlay/v1
    repoURL: https://gitee.com/zhouwei1996/kustomize.git
    targetRevision: HEAD
  syncPolicy:
    automated: {}
    syncOptions:
      - CreateNamespace=true

bookinfo-reviews-v2.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: bookinfo-reviews
  namespace: argocd
spec:
  destination:
    namespace: spring-cloud
    server: https://kubernetes.default.svc
  project: default
  source:
    path: kustomize-bookinfo-reviews/overlay/v2
    repoURL: https://gitee.com/zhouwei1996/kustomize.git
    targetRevision: HEAD
  syncPolicy:
    automated: {}
    syncOptions:
      - CreateNamespace=true

bookinfo-ratings.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: bookinfo-ratings
  namespace: argocd
spec:
  destination:
    namespace: spring-cloud
    server: https://kubernetes.default.svc
  project: default
  source:
    path: kustomize-bookinfo-ratings/base
    repoURL: https://gitee.com/zhouwei1996/kustomize.git
    targetRevision: HEAD
  syncPolicy:
    automated: {}
    syncOptions:
      - CreateNamespace=true

通過(guò)argocd一鍵部署bookinfo

在argocd中創(chuàng)建app

  1. kubesphere中安裝devops組件,參考16.云原生之kubesphere組件安裝卸載
  2. 暴露argocd,參考19.云原生CICD之ArgoCD入門CD過(guò)程實(shí)戰(zhàn)
  3. 登錄argocd,配置倉(cāng)庫(kù)地址

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 創(chuàng)建應(yīng)用,參考23.云原生之ArgoCD CICD實(shí)戰(zhàn)

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

查看部署情況

  1. 查看ArgoCD部署情況

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 查看kubesphere部署情況

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

注意:通過(guò)上述觀察發(fā)現(xiàn)我們部署的svc資源帶上了前綴,跟我們VirtualService中使用的hosts不一致,這兒需要修改

查看istio資源是否也添加了前綴:

# kubectl get gw -A
NAMESPACE      NAME                           AGE
bookinfo       bookinfo-gateway               7d2h
spring-cloud   devops-web-gateway             6m10s
spring-cloud   gateway                        6m10s
spring-cloud   kustomize-devops-web-gateway   27m
spring-cloud   kustomize-gateway              27m
spring-cloud   reviews-gateway                6m10s
spring-cloud   v2-kustomize-reviews-gateway   27m
  1. 刪除所有資源
kubectl delete all --all -n <namespace>
kubectl delete all --all -n spring-cloud

查看istio資源

Istio 是一個(gè)服務(wù)網(wǎng)格解決方案,它引入了許多自定義資源(Custom Resource Definitions,CRDs)來(lái)管理服務(wù)間的通信、流量控制和安全策略等。以下是 Istio 中常見(jiàn)的一些資源類型:

  1. VirtualService:定義了服務(wù)之間的路由規(guī)則,允許你控制流量的路由和轉(zhuǎn)發(fā)。
  2. DestinationRule:定義了服務(wù)的目標(biāo)規(guī)則,用于指定服務(wù)的負(fù)載均衡策略、連接池設(shè)置等。
  3. Gateway:定義了入口網(wǎng)關(guān),允許外部流量訪問(wèn) Istio 網(wǎng)格中的服務(wù)。
  4. ServiceEntry:允許你將外部服務(wù)引入 Istio 網(wǎng)格,或者定義對(duì)外部服務(wù)的訪問(wèn)規(guī)則。
  5. VirtualServiceSubset:用于定義虛擬服務(wù)的子集,可以用于進(jìn)一步細(xì)化路由規(guī)則。
  6. IstioOperator:用于配置和管理 Istio 控制平面的自定義資源。
  7. AuthorizationPolicy:定義了服務(wù)間的訪問(wèn)控制策略,用于實(shí)現(xiàn)服務(wù)級(jí)別的安全控制。
  8. Sidecar:用于配置 Envoy sidecar 代理的自定義資源。

所有命名空間中的 Istio 資源

kubectl get virtualservices --all-namespaces
kubectl get destinationrules --all-namespaces
kubectl get gw --all-namespaces
kubectl get ServiceAccount --all-namespaces

kubectl get serviceentries --all-namespaces
kubectl get istiooperators --all-namespaces
kubectl get authorizationpolicies --all-namespaces
kubectl get sidecars --all-namespaces

查看項(xiàng)目日志

gateway:
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
該錯(cuò)誤是服務(wù)賬戶沒(méi)有訪問(wèn)權(quán)限,配置如下:
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

刪除Argocd部署

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
在 Argo CD 中刪除應(yīng)用程序(app)時(shí),可以選擇不同的刪除策略,包括 Foreground、Background 和 Non-cascading。這些策略決定了刪除操作的行為方式。下面是它們的區(qū)別:

  1. Foreground(前臺(tái))
    • 在 Foreground 刪除策略下,Argo CD 將首先刪除應(yīng)用程序的資源對(duì)象,然后再刪除應(yīng)用程序本身。
    • 這意味著刪除應(yīng)用程序的操作會(huì)等待所有資源對(duì)象被刪除后才會(huì)完成,這可能會(huì)導(dǎo)致刪除操作需要一些時(shí)間才能完成。
    • Foreground 刪除策略通常用于確保資源對(duì)象被正確清理,以避免可能的沖突或問(wèn)題。
  2. Background(后臺(tái))
    • 在 Background 刪除策略下,Argo CD 將直接刪除應(yīng)用程序本身,而不等待資源對(duì)象被刪除。
    • 這意味著刪除應(yīng)用程序的操作會(huì)立即返回,而資源對(duì)象的刪除將在后臺(tái)進(jìn)行,不會(huì)阻塞刪除操作的完成。
    • Background 刪除策略通常用于快速刪除應(yīng)用程序,而不需要等待資源對(duì)象的清理。
  3. Non-cascading(非級(jí)聯(lián))
    • Non-cascading 刪除策略指示 Argo CD 僅刪除應(yīng)用程序本身,而不會(huì)刪除應(yīng)用程序創(chuàng)建的任何資源對(duì)象。
    • 這意味著應(yīng)用程序關(guān)聯(lián)的資源對(duì)象將保留在集群中,不會(huì)被刪除。
    • Non-cascading 刪除策略通常用于保留應(yīng)用程序創(chuàng)建的資源對(duì)象,以便稍后重新使用或進(jìn)行其他操作。

在使用 Argo CD 刪除應(yīng)用程序時(shí),根據(jù)具體需求選擇適合的刪除策略是很重要的。根據(jù)是否需要等待資源對(duì)象的刪除以及是否需要級(jí)聯(lián)刪除資源對(duì)象,選擇合適的刪除策略可以更好地管理應(yīng)用程序的生命周期。

刪除k8s中部署資源

刪除指定空間所有資源

 kubectl delete all --all -n spring-cloud

刪除 Istio 資源:

kubectl delete virtualservice <virtualservice-name> -n <namespace>
kubectl delete destinationrule <destinationrule-name> -n <namespace>
kubectl delete gw <gateway-name> -n <namespace>
kubectl delete serviceentry <serviceentry-name> -n <namespace>
kubectl delete istiooperator <istiooperator-name> -n <namespace>
kubectl delete authorizationpolicy <authorizationpolicy-name> -n <namespace>
kubectl delete sidecar <sidecar-name> -n <namespace>

刪除查詢到的資源

kubectl get gw -n spring-cloud | awk '{print $1}' | xargs kubectl delete gw -n spring-cloud

kubectl get virtualservice -n spring-cloud | awk '{print $1}' | xargs kubectl delete virtualservice -n spring-cloud

kubectl get ServiceAccount -n spring-cloud | awk '{print $1}' | xargs kubectl delete ServiceAccount -n spring-cloud

kubectl get destinationrule -n spring-cloud | awk '{print $1}' | xargs kubectl delete destinationrule -n spring-cloud

訪問(wèn)測(cè)試

通過(guò)nodeport方式暴露istio-ingressgateway流量入口
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
訪問(wèn)頁(yè)面,若是訪問(wèn)出錯(cuò)檢查bookinfo-productpage部署時(shí)環(huán)境變量API_SERVER是否配置
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

Istio流量加密

回顧ingress入口流量加密

參考下述文章進(jìn)行配置:
4. 服務(wù)暴露方式
5.云原生安全之kubesphere應(yīng)用網(wǎng)關(guān)配置域名TLS證書(shū)
驗(yàn)證結(jié)果如下:
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
bookinfo安全暴露服務(wù):
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
修改愛(ài)快軟路由暴露192.168.31.12內(nèi)網(wǎng)ip
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
訪問(wèn)測(cè)試

istio-gateway暴露服務(wù)

  1. 配置LoadBalancer暴露

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. ip訪問(wèn)測(cè)試

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 配置愛(ài)快映射內(nèi)網(wǎng)ip

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes
這個(gè)內(nèi)網(wǎng)和外網(wǎng)端口保持一致,端口為istio-ingressgateway服務(wù)端口如下:
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

  1. 域名訪問(wèn)

37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

istio-gateway配置https

官網(wǎng):理解 TLS 配置

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: kustomize-bookinfo-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 99
      name: http
      protocol: HTTP
    hosts:
    - "*"
    # 重定向到https上
    tls:
      httpsRedirect: true
  - port:
      number: 77
      name: https
      protocol: HTTPS
    tls:
      mode: SIMPLE
      # 配置證書(shū)secret
      credentialName: your-cert-secret-name
    hosts:
    - "*"

mode選項(xiàng)介紹:
在 Istio 中,當(dāng)配置 Gateway 的 TLS 設(shè)置時(shí),tls.mode 選項(xiàng)用于指定 TLS 連接的模式。tls.mode 可以設(shè)置為以下幾種模式之一:

  1. SIMPLE: 這是最基本的 TLS 模式,用于啟用基本的 TLS 加密和解密。在 SIMPLE 模式下,必須提供證書(shū)和私鑰,以便進(jìn)行 TLS 握手和加密通信。
  2. MUTUAL: 在 MUTUAL 模式下,除了要求客戶端驗(yàn)證服務(wù)器的證書(shū)外,還要求服務(wù)器驗(yàn)證客戶端的證書(shū)。這種模式也稱為雙向 TLS 或 mTLS(mutual TLS)。在這種模式下,客戶端和服務(wù)器之間的通信將進(jìn)行雙向身份驗(yàn)證,增強(qiáng)了通信的安全性。
  3. ISTIO_MUTUAL: 這是 Istio 特定的一種 TLS 模式,類似于 MUTUAL 模式,但是 Istio 自動(dòng)處理證書(shū)的生成和分發(fā)。在 ISTIO_MUTUAL 模式下,Istio Pilot 會(huì)自動(dòng)為服務(wù)生成證書(shū),并確保雙向 TLS 通信的安全性。

在 Istio Gateway 中配置 TLS 模式時(shí),根據(jù)您的安全需求和環(huán)境,選擇適當(dāng)?shù)?tls.mode 設(shè)置是很重要的。您可以根據(jù)實(shí)際情況選擇 SIMPLE、MUTUAL 或 ISTIO_MUTUAL 模式,以保障通信的安全性和完整性。

此處配置訪問(wèn)測(cè)試【問(wèn)題暫時(shí)還未解決】
37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐,私有云+云原生實(shí)戰(zhàn),云原生,spring cloud,kubernetes

通過(guò)gitops部署項(xiàng)目

案例項(xiàng)目地址:https://gitee.com/zhouwei1996/spring-cloud-bookinfo.git
此處小編不進(jìn)行演示給出關(guān)鍵gitlab-ci.yml流水線腳本,可根據(jù)實(shí)際情況改造文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-842396.html

variables:
  KUBECONFIG: /etc/deploy/config
  MAVEN_OPTS: >-
    -Dmaven.repo.local=/builds/maven
    -Dorg.slf4j.simpleLogger.showDateTime=true
    -Djava.awt.headless=true
  MAVEN_CLI_OPTS: >-
    --batch-mode
    --errors
    --fail-at-end
    --show-version
    --no-transfer-progress
    -DinstallAtEnd=true
    -DdeployAtEnd=true
  #  設(shè)置自定義的鏡像源
  #  DOCKER_REGISTRY_MIRROR: https://registry.example.com
  DOCKER_IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
  DOCKER_DRIVER: overlay
stages:
  - package
  - build
  - deploy


package:
  stage: package
  image: maven:3.6.3-jdk-8
  tags:
    - k8s
  script:
    - mvn clean package -Dmaven.test.skip=true
    - rm -rf /builds/project-target/reviews
    - rm -rf /builds/project-target/productpage
    - cp -rf ./reviews /builds/project-target
    - cp -rf ./productpage /builds/project-target


docker-build:
  image: docker:cli
  services:
    - docker:latest
  stage: build
  tags:
    - k8s
  script:
    - cd /builds/project-target
    - docker login -u $aliimarepo_user -p $aliimarepo_password registry.cn-hangzhou.aliyuncs.com
    - docker build -t registry.cn-hangzhou.aliyuncs.com/yxymzw/productpage:latest -f ./productpage/Dockerfile  ./productpage/
    - docker push registry.cn-hangzhou.aliyuncs.com/yxymzw/productpage:latest

    - docker build -t registry.cn-hangzhou.aliyuncs.com/yxymzw/reviews:latest -f ./reviews/Dockerfile  ./reviews/
    - docker push registry.cn-hangzhou.aliyuncs.com/yxymzw/productpage:latest

deploy:
  stage: deploy
  image: cnych/kustomize:v1.0
  before_script:
    - git config --global user.email "gitlab@git.k8s.local"
    - git config --global user.name "GitLab CI/CD"
  script:
    - cd /builds/project-target
    - rm -rf ./kustomize
    - git clone http://$gitlab_user:$gitlab_password@192.168.31.3:83/root/kustomize.git

    - cd ./kustomize/kustomize-bookinfo-productpage/overlay/dev
    - kustomize edit set image registry.cn-hangzhou.aliyuncs.com/yxymzw/productpage:latest
    - kustomize build > ../../build/build.yaml

    - cd ./kustomize/kustomize-bookinfo-reviews/overlay/dev
    - kustomize edit set image registry.cn-hangzhou.aliyuncs.com/yxymzw/reviews:latest
    - kustomize build > ../../build/build.yaml

    - git add /builds/project-target/kustomize/kustomize-productpage/
    - git add /builds/project-target/kustomize/kustomize-reviews/
    - git commit -am "image update"
    - git push -u origin main

到了這里,關(guān)于37.云原生之springcloud+k8s+GitOps+istio+安全實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 這篇 DolphinScheduler on k8s 云原生部署實(shí)踐,值得所有大數(shù)據(jù)人看!

    在當(dāng)前快速發(fā)展的技術(shù)格局中,企業(yè)尋求創(chuàng)新解決方案來(lái)簡(jiǎn)化運(yùn)營(yíng)并提高效率成為一種趨勢(shì)。 Apache DolphinScheduler作為一個(gè)強(qiáng)大的工具,允許跨分布式系統(tǒng)進(jìn)行復(fù)雜的工作流任務(wù)調(diào)度。本文將深入探討如何將Apache DolphinScheduler適配并整合進(jìn)現(xiàn)代IT環(huán)境,提升其在云原生部署中的表

    2024年04月17日
    瀏覽(37)
  • k8s 安裝istio (一)

    k8s 安裝istio (一)

    前置條件 已經(jīng)完成 ?K8S安裝過(guò)程十:Kubernetes CNI插件與CoreDNS服務(wù)部署 部署 istio 服務(wù)網(wǎng)格與 Ingress 服務(wù)用到了 helm 與 kubectl 這兩個(gè)命令行工具,這個(gè)命令行工具依賴 ~/.kube/config 這個(gè)配置文件,目前只在 kubernetes master 節(jié)點(diǎn)中生成了這個(gè)文件。 以下操作在 Kubernetes Master 節(jié)點(diǎn)上執(zhí)

    2024年02月11日
    瀏覽(22)
  • k8s 安裝 istio(二)

    k8s 安裝 istio(二)

    部署 Jaeger 服務(wù) kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.16/samples/addons/jaeger.yaml 創(chuàng)建? jaeger-vs.yaml ?文件 apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: ? name: jaeger-vs ? namespace: istio-system spec: ? hosts: ? - jaeger.域名.com ? gateways: ? - admin-gateway ? http: ? -

    2024年02月11日
    瀏覽(46)
  • React 前端應(yīng)用中快速實(shí)踐 OpenTelemetry 云原生可觀測(cè)性(SigNoz/K8S)

    React 前端應(yīng)用中快速實(shí)踐 OpenTelemetry 云原生可觀測(cè)性(SigNoz/K8S)

    OpenTelemetry 可用于跟蹤 React 應(yīng)用程序的性能問(wèn)題和錯(cuò)誤。您可以跟蹤從前端 web 應(yīng)用程序到下游服務(wù)的用戶請(qǐng)求。 OpenTelemetry 是云原生計(jì)算基金會(huì)(CNCF)下的一個(gè)開(kāi)源項(xiàng)目,旨在標(biāo)準(zhǔn)化遙測(cè)數(shù)據(jù)的生成和收集。已成為下一代可觀測(cè)平臺(tái)的事實(shí)標(biāo)準(zhǔn)。 React (也稱為 React.js 或 ReactJ

    2024年02月14日
    瀏覽(15)
  • Day920.結(jié)構(gòu)化日志&業(yè)務(wù)審計(jì)日志 -SpringBoot與K8s云原生微服務(wù)實(shí)踐

    Day920.結(jié)構(gòu)化日志&業(yè)務(wù)審計(jì)日志 -SpringBoot與K8s云原生微服務(wù)實(shí)踐

    Hi,我是 阿昌 ,今天學(xué)習(xí)記錄的是關(guān)于 結(jié)構(gòu)化日志業(yè)務(wù)審計(jì)日志 的內(nèi)容。 結(jié)構(gòu)化日志 (Structured Logging)是一種將日志信息組織為結(jié)構(gòu)化數(shù)據(jù)的技術(shù)。 傳統(tǒng)的日志通常是一些文本信息,比如一行記錄一個(gè)錯(cuò)誤或者事件,這些信息往往是自由格式的。 相比之下,結(jié)構(gòu)化日志則

    2023年04月09日
    瀏覽(22)
  • 云原生之容器編排實(shí)踐-在K8S集群中使用Registry2搭建私有鏡像倉(cāng)庫(kù)

    云原生之容器編排實(shí)踐-在K8S集群中使用Registry2搭建私有鏡像倉(cāng)庫(kù)

    基于前面搭建的3節(jié)點(diǎn) Kubernetes 集群,今天我們使用 Registry2 搭建私有鏡像倉(cāng)庫(kù),這在鏡像安全性以及離線環(huán)境下運(yùn)維等方面具有重要意義。 Note: 由于是測(cè)試環(huán)境,以下創(chuàng)建了一個(gè) local-storage 的 StorageClass ,并使用本地磁盤的方式創(chuàng)建使用 PV ,實(shí)際建議使用 NFS 。 共用到了三臺(tái)

    2024年02月19日
    瀏覽(22)
  • Day913.反向代理和網(wǎng)關(guān)是什么關(guān)系 -SpringBoot與K8s云原生微服務(wù)實(shí)踐

    Day913.反向代理和網(wǎng)關(guān)是什么關(guān)系 -SpringBoot與K8s云原生微服務(wù)實(shí)踐

    Hi,我是 阿昌 ,今天學(xué)習(xí)記錄的是關(guān)于 反向代理和網(wǎng)關(guān)是什么關(guān)系 的內(nèi)容。 反向代理 是一種網(wǎng)絡(luò)技術(shù),用于將客戶端的請(qǐng)求轉(zhuǎn)發(fā)到一個(gè)或多個(gè)服務(wù)器上,并將響應(yīng)返回給客戶端。與正向代理不同,反向代理隱藏了真實(shí)服務(wù)器的身份和網(wǎng)絡(luò)地址,使得客戶端無(wú)法直接訪問(wèn)服

    2023年04月23日
    瀏覽(27)
  • K8S學(xué)習(xí)指南(37)-k8s權(quán)限管理對(duì)象User

    在Kubernetes(K8s)中,用戶(User)是一個(gè)重要的權(quán)限管理對(duì)象,用于表示在集群中執(zhí)行操作的實(shí)體。通過(guò)用戶,Kubernetes能夠?qū)褐械母鞣N資源進(jìn)行身份驗(yàn)證和授權(quán)。本文將深入研究Kubernetes中的用戶對(duì)象,包括其基本概念、創(chuàng)建方式以及詳細(xì)示例。 1. 用戶是什么? 在Kubern

    2024年01月23日
    瀏覽(68)
  • K8S之istio流量控制管理(十七)

    K8S之istio流量控制管理(十七)

    一,istio介紹 1、istio架構(gòu) ? 結(jié)合上圖我們來(lái)理解Istio的各組件的功能及相互之間的協(xié)作方式。 1. 自動(dòng)注入:在創(chuàng)建應(yīng)用程序時(shí)自動(dòng)注入 Sidecar代理Envoy程序。在 Kubernetes中創(chuàng)建 Pod時(shí),Kube-apiserver調(diào)用控制面組件的 Sidecar-Injector服務(wù),自動(dòng)修改應(yīng)用程序的描述信息并注入Sidecar。在

    2024年02月09日
    瀏覽(21)
  • k8s~istio的安裝與核心組件

    k8s~istio的安裝與核心組件

    在線安裝:https://istio.io/latest/docs/setup/getting-started/#download 或者直接在這里下載:https://github.com/istio/istio/releases/tag/1.20.2 查看pod 查看服務(wù) istio-ingressgateway 是 Istio 提供的一個(gè)組件,它作為 Kubernetes 集群的入口,接收從集群外部來(lái)的流量,并根據(jù) Istio 的路由規(guī)則將流量轉(zhuǎn)發(fā)到集

    2024年01月24日
    瀏覽(50)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包