istio安装实践

2023-11-09

启动minikube

istio的实验环境部署在minikube上,首先启动minikube(minikube安装参考上一博客)

  minikube start --vm-driver kvm2 \
    --extra-config=controller-manager.ClusterSigningCertFile="/var/lib/localkube/certs/ca.crt" \
    --extra-config=controller-manager.ClusterSigningKeyFile="/var/lib/localkube/certs/ca.key" \
    --extra-config=apiserver.Admission.PluginNames=NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota \
    --cpus 4 --memory 8196

安装istio

下载最新的istio

curl -L https://git.io/getLatestIstio | sh -
cd istio-0.7
export PATH=$PWD/bin:$PATH

下载istio镜像

#!/bin/bash

set -x
dockerimages=(
prom/statsd-exporter:v0.5.0
docker.io/istio/mixer:0.7.1
docker.io/istio/proxy:0.7.1
docker.io/istio/pilot:0.7.1
docker.io/istio/proxy_init:0.7.1
docker.io/istio/istio-ca:0.7.1
docker.io/istio/sidecar_injector:0.7.1
)

j=1
for i in ${dockerimages[@]}
do
    echo $i
    echo $j

    docker pull $i && docker save $i -o $j.tar && xz $j.tar
    docker rmi $i
    let j+=1
done
set +x

在k8s中运行istio

kubectl apply -f install/kubernetes/istio.yaml

在k8s中运行服务之间带auth功能的istio

kubectl apply -f install/kubernetes/istio-auth.yaml

这里有个小问题,镜像以docker.io开头导入下载与本地将头部docker.io去掉了,例如docker.io/istio/mixer:0.7.1,在下载和导入到本地时,镜像的名称变为istio/mixer:0.7.1。
解决办法是手动的修改yaml文件的镜像名称。

配置istio注入sidecar

前提
1)一个pod只能属于一个service,属于多个service的pod不支持。
2)service的ports必须按照一定的命名规范

<protocol>[-<suffix>]
<protocol> 可以取值 http, http2, grpc, mongo, or redis,这样可以获得istio的动态路由特性,否则都当作tcp流量。

3)推荐pod通过deployment部署,每个deployment都应显式的通过label app来标识。
4)同一个pod内的容器不能通过sidecar来控制流量。

注入sidecar是在deployment的所有pod sec下加入创建injected sidecar的yaml配置。

手动注入sidecar和自动注入sidecar加载的配置都是从namespace istio-system下的ConfigMap istio-inject。不同的是手动注入sidecar可以选择从本地文件读取配置。

手动注入sidecar

kubectl apply -f <(istioctl kube-inject -f samples/sleep/sleep.yaml)

读者可以比较

istioctl kube-inject -f samples/sleep/sleep.yaml > sleep2.yaml

sleep2.yaml和sleep.yaml文件便可以看出对yaml配置的修改内容。

从本地文件获取配置注入sidecar

kubectl create -f install/kubernetes/istio-sidecar-injector-configmap-release.yaml \
    --dry-run \
    -o=jsonpath='{.data.config}' > inject-config.yaml

kubectl -n istio-system get configmap istio -o=jsonpath='{.data.mesh}' > mesh-config.yaml

istioctl kube-inject \
    --injectConfigFile inject-config.yaml \
    --meshConfigFile mesh-config.yaml \
    --filename samples/sleep/sleep.yaml \
    --output sleep-injected.yaml

kubectl apply -f sleep-injected.yaml

自动注入sidecar
前提
1)kubernetes版本要1.9或以上,并且支持以下api版本

kubectl api-versions | grep admissionregistration
admissionregistration.k8s.io/v1beta1

安装webhook

./install/kubernetes/webhook-create-signed-cert.sh \
    --service istio-sidecar-injector \
    --namespace istio-system \
    --secret sidecar-injector-certs

如遇到错误

ERROR: After approving csr istio-sidecar-injector.istio-system, the signed certificate did not appear on the resource. Giving up after 10 attempts.

解决办法:配置kube-controller-manager的两个参数

cluster-signing-cert-file=/etc/kubernetes/pki/ca.pem
cluster-signing-key-file=/etc/kubernetes/pki/ca-key.pem

kubernetes1.10版本遇到错误

error: error validating "STDIN": error validating data: [apiVersion not set, kind not set]; if you choose to ignore these errors, turn validation off with --validate=false

修改./install/kubernetes/webhook-create-signed-cert.sh脚本的最后几行为

# create the secret with CA cert and server cert/key
kubectl create secret generic ${secret} \
        --from-file=key.pem=${tmpdir}/server-key.pem \
        --from-file=cert.pem=${tmpdir}/server-cert.pem \
        -n ${namespace}
#        --dry-run -o yaml |
#    kubectl --validate=false -n ${namespace} apply -f -

安装sidecar注入configmap

kubectl apply -f install/kubernetes/istio-sidecar-injector-configmap-release.yaml

配置caBundle,kubernetes api-server使用caBundle调用webhook

cat install/kubernetes/istio-sidecar-injector.yaml | \
     ./install/kubernetes/webhook-patch-ca-bundle.sh > \
     install/kubernetes/istio-sidecar-injector-with-ca-bundle.yaml

安装sidecar injector webhook

kubectl apply -f install/kubernetes/istio-sidecar-injector-with-ca-bundle.yaml

使用方法
首先,配置指定的namespaces的label istio-injection为enabled。

kubectl label namespace default istio-injection=enabled

然后,在配置了标签istio-injection为enabled的namespace创建pod,便会自动注入sidecar容器。

kubectl apply -f samples/sleep/sleep.yaml  -n default

验证istio相互TLS认证

验证集群中istio CA已部署

kubectl get deploy -l istio=istio-ca -n istio-system

验证istio的AuthPolicy为MUTUAL_TLS。

kubectl get configmap istio -o yaml -n istio-system | grep authPolicy | head -1

进入productpage容器中,查看证书,使用curl测试带证书与不带证书访问的结果区别

NAME                              READY     STATUS    RESTARTS   AGE
productpage-v1-4184313719-5mxjc   2/2       Running   0          23h

kubectl exec -it productpage-v1-4184313719-5mxjc -c istio-proxy /bin/bash
ls /etc/certs/
cert-chain.pem   key.pem   root-cert.pem

curl https://details:9080/details/0 -v --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem -k

curl https://details:9080/details/0 -v
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

istio安装实践 的相关文章

  • 滤波器拓扑结构:Sallen-key和Multiple Feedback

    在一些关于滤波器设计的地方 总可以看到Sallen key和Multiple Feedback这两个词组 但不清楚什么意思 查了查资料 顺带在此处记录一下 Sallen key 麻省理工学院林肯实验室的R P Sallen and E L
  • Android Studio第一次安装虚拟机时报错Emulator:ERROR: Unknown AVD name[ ], use -list-avds to see valid list.

    安装完虚拟机后点击启动报错 虚拟化已开启 解决办法 1 修改环境变量ANDROID SDK HOME路径指到platforms路径下 例如 D androidSDK platforms 2 重启Android Studio 3 重新安装虚拟
  • 学习笔记:CentOS7安装Docker

    一 检查CentOS 系统的内核版本 Docker 要求 CentOS 系统的内核版本高于 3 10 通过 uname r 命令查看当前的内核版本 二 检查并清除系统残余项 并安装Docker依赖环境 1 卸载Docker 可选 如果之前安
  • 百度新闻资讯类信息爬虫--统计一年内关键词新闻的条数

    背景 通过百度词条搜索 来查找300个关键词 在一年内发布新闻的条数 最终效果实现如下 实现思路 实现思路依然是 先根据多页的url 来找到规律 构建起一页的url def format url url params dict None g
  • [转]信息安全相关理论题(三)

    21 静态分析是运行程序后进行调试 A 对 B 错 您的答案 标准答案 B 22 安卓反编译后会出现 符号字节码表示是匿名内部类 A 对 B 错 您的答案 标准答案 A 23 反编译安卓应用后 一般应该先查看哪一个smali文件的代码 A
  • JAVA反射机制及应用场景

    往往当我们面对一项新的知识时 我们往往需要知道三个方面 它是什么 它能做什么 它比原有知识强在哪里 我们该怎么使用它 当你能够解决这些问题时 便意味着你已经对这项知识入门了 一 是什么 Java Reflaction in Action有这
  • TOGAF9.2第I部分 第2章核心概念

    本章提供的核心概念适用TOGAF标准 2 1 什么是TOGAF标准 TOGAF标准是一个架构框架 它提供了协助接受 生产 使用和维护企业架构的方法和工具 它基于支持最佳实践和可重用的现有架构资产集的迭代过程模型 2 2 TOGAF标准中的架
  • 学习笔记——机器学习(第二章)

    机器学习 第二章 还有很多细节部分 我正在完善和补充 Emmm 若有不足 还请包涵 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • 致性哈希算法的优化----关于如何保正在环中增加新节点时,命中率不受影响

    背景 09年初 我们做了一个memcached的智能客户端库 业务只要将这个库链上 就能跟memcached服务器通信 并且实现了一致性哈希的分布式算法 后端memcached服务器可以无限制扩展 而且客户端能对memcached做自动故障
  • cmake系列-动态库的生成与链接

    运行系统 Ubuntu20 04 运行环境 python 2 7 17 系统不一样 遇到的问题可能不一样 该方法不一定见效 问题描述 工作中时常需要调用同事写的 so文件作为一些功能的接口 那么如何将cmake文件进行动态库生成和调用呢 实
  • redissonclient类_Redisson入门教程

    Redisson入门 Author RickyDate 2017 04 24 Redisson概述 Redisson是架设在Redis基础上的一个Java驻内存数据网格 In Memory Data Grid 充分的利用了Redis键值数据
  • MySQL数据库学习(保姆级教程)(1.7W字)

    1 初识MySQL JavaEE 企业级Java开发 Web 前端 页面 展示 数据 后台 连接点 连接数据库JDBC 链接前端 控制 控制视图跳转 和给前端传递数据 数据库 存数据 Txt Excel Word 只会写代码 学好数据库 基
  • buuctf web 前5题

    目录 一 极客大挑战 2019 EasySQL 总结 二 极客大挑战 2019 Havefun 总结 三 HCTF 2018 WarmUp 总论 四 ACTF2020 新生赛 Include 总结 五 ACTF2020 新生赛 Exec 总
  • 电脑cpu排名_2019年12月最新CPU天梯图 CPU性能排行榜

    参考国外评测机构PassMark的数据 下面排行榜比较了笔记本和台式电脑CPU的性能 截止更新时间为2019年12月5日 下方为排名前30的CPU天梯图 为方便大家查看更多CPU具体型号的排名和评分 请看天梯图后面的图表 注 电脑端可以使用
  • 投影变换 到 uv坐标 xy/w ---齐次坐标

    float3 vScreenPos In ClipPos xyz vScreenPos In ClipPos w vScreenPos xy 1 f vScreenPos xy 0 5f vScreenPos y 1 f vScreenPo
  • word 插入 高亮代码

    word 插入高亮代码 方法1 直接复制 IDE 中的内容 优 随时随地复制 保留vscode格式 缺 其他IDE的格式可能就不好看了 方法2 代码复制到网站 highlightcode com 高亮后再复制到word 缺 高亮做的不好看

随机推荐

  • 双向BFS搜索和A*算法

    双向BFS适合给出起点和终点 求最短路径的问题 分别从起点和终点扩展 找交点 每次选择待扩展节点少的那个方向进行扩展 一次扩展一层 扩展一个节点的时候 如果节点也在另一个方向的待扩展队列里 找到交点 int doubleBFS vector
  • 1001 害死人不偿命的(3n+1)猜想 (15 分)

    标题 include
  • 【Vue3】学习笔记-reactive响应式

    Vue3 学习笔记 reactive响应式 用ref 设置响应式对象 用reactive 设置响应式对象 总结 用ref 设置响应式对象 JS中设置对象 import ref from vue var user ref username W
  • 2022年美国大学生数学建模-【美赛】A题:Game Theory in Cycling(附获奖论文)

    目录 Summary 1 Introduction 1 1 Problem Background 1 2 Restatement of the Problem 1 3 Our Work 2 Assuptions and Justifific
  • comsol学习中心:几何建模

    创建二维几何 我们打算创建这样的二维模型 这里演示创建 因此不考虑物理场等的设置 创建空白模型 创建的是二维几何 所以在组件中选择天剑二维组件 也可以通过在功能树上右键进行此操作 接着在几何选项卡下找到体素开始构建几何 先添加一个圆形 在功
  • mybaits如何防止SQL注入:mybatis的${}和#{}

    其实这个mybatis的 和 区别和使用 算是很古早很常见的一个基础问题了 先说结论 尽可能使用 不使用 因为 可以防止SQL注入 如果记不清楚 就记一句话或者是口诀 不是所有事都能靠钱能解决 号是货币符号 为什么 可以防止SQL注入 占位
  • Source Insight设置黑色背景

    今天使用Source Insight看C代码 觉得背景白色太亮 觉得应该可以调背景颜色 通过百度 搜索到了CSDN上的相关文章 受益良多 但是文章后面附的style文件下载需30积分 无奈囊中羞涩 只好自己按照文章的说明调颜色 首先将背景调
  • 【基于python实现UI自动化】4.1 selenium发送163邮箱邮件

    python UI自动化 1 0 selenium工具介绍 2 0 selenium环境搭建 3 Selenium的元素定位 3 0 selenium常见8大元素定位 3 1 selenium通过By定位元素 3 2 selenium通过J
  • MySQL出现:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)问题解决

    本文mysql的安装环境为win7 64位 mysql版本为MySQL5 7 问题描述 在命令行输入 mysql u root p 登录mysql 返回 Can t connect to MySQL server on localhost
  • 【不忘初心】Windows11 22000.168 X64 四合一[纯净精简版][2.77G](2021.8.29)

    此版可正常更新补丁 WIN11全新的UI界面出炉 可以说这一次Windows 11全新升级 无论是从Logo上还是UI界面设计 都有很大的变化 母版来自UUP WIN11 22000 168 为了保证稳定初心的系统全部都是离线精简和优化 非
  • MySQL常用配置详解

    目录 一 MySQL 查看配置信息 二 MySQL 查看服务器当前运行状态的信息 三 MySQL 常用配置详解 1 mysql 使用mysql命令登录数据库时的默认的设置 2 client 客户端默认设置内容 3 mysqld 服务端端配置
  • centos 6.4/redhat 6.4 安装gitlab

    为什么80 的码农都做不了架构师 gt gt gt 一 把所有包升级到最新版本 yum y upgrade 二 安装最新版ruby 2 1 5 步骤http my oschina net duolus blog 348353 三 安装官方给
  • MATLAB对RGB彩色图像进行加马赛克处理

    简单实现MATLAB对RGB彩色图像进行加马赛克处理 为了加深对图像中像素块操作的记忆 利用像素块内均值方式对RGB彩色图像进行马赛克效果的处理 为了能后比较简单得实现 所以采用了n n像素块大小的均值的方式 为了比较简单实现 这里对RGB
  • 简单算法之矩阵运算

    不多说上代码 矩阵对象 class Matrix 矩阵的宽度 private final int width 矩阵的高度 private final int height 矩阵 private final int arr Matrix in
  • 如何创建微信小程序并实现快速变现?

    工作之余做点副业增进一下自己的收入是每个技术从业人员甚至是非技术人员都很喜欢的事情 即所谓的 睡后收入 疫情几年没时间或者说没有精力 随着疫情结束 经济的急速上升 谁不想赶快充实一下自己腰包 微信小程序毋容置疑是比较好的一种方式 做好的微信
  • 语音中的响度,音调与音色的决定因素

    目录 一 先验知识 1 基波与谐波 2 基音与泛音 二 图解泛音的形成原理 生动形象的视频介绍 三 图解泛音决定音色 写在前面 响度由声源的振幅决定 音调由基波的频率决定 音色由泛音决定 一 先验知识 1 基波与谐波 基波是原合成的周期信号
  • 毕业设计-基于机器视觉的室内智能安防车系统 -STM32和 OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 系统整体设计 二 智能安防车硬件系统设计 三 室内安防车自动巡逻机制的实现 四 基于 OpenCV 图像识别的火焰识别 五 分类器设计及软件实现 代码部分 实现效果图样例 最后 前言 大四是整个
  • 主成分分析法确定权重

    在数模中 确定权重方法有很多种 比如主成分分析法 层次分析法 熵权法 相关系数作为权重等 网上很多教程都是用spss计算权重 这里主要讲利用python通过主成分分析法确定权重 主成分分析法概述 主成分分析法是一种线性的降维算法 通过将N维
  • 黑莓QNX选定由延锋伟世通数字仪表项目

    锋影 e mail 174176320 qq com 黑莓有限公司宣布延锋伟世通 全球1级汽车零部件供应商 已经选择该公司的安全认证QNX平台仪器集群1一个数字仪表项目与中国的一个主要的OEM软件 该交易的条款是保密的 黑莓的QNX技术已为
  • istio安装实践

    启动minikube istio的实验环境部署在minikube上 首先启动minikube minikube安装参考上一博客 minikube start vm driver kvm2 extra config controller ma