istio 之 sidecar 注入 Webhook

2024-06-04 22:48
文章标签 注入 istio webhook sidecar

本文主要是介绍istio 之 sidecar 注入 Webhook,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Istio通过对serviceMesh中的每个pod注入sidecar,来实现无侵入式的服务治理能力。
sidecar的注入是其能力实现的重要一环(在kubernetes集群中的注入方式)。sidecar注入有两种方式,
一是通过创建webhook资源,利用k8s的webhook能力实现pod的自动注入,
二是通过istioctl工具,对yaml文件进行手动注入。

https://istio.io/zh/docs/setup/kubernetes/additional-setup/sidecar-injection/
Pod 的必要功能
Pod 具备运行 Istio 初始化容器的权限;否则必须进行Service Account 赋权。
需要给端口正确命名: 服务端口必须进行命名
Pod 端口: Pod 必须包含每个容器将监听的明确端口列表
关联服务:Pod 不论是否公开端口,都必须关联到至少一个 Kubernetes 服务上,如果一个 Pod 属于多个服务,这些服务不能在同一端口上使用不同协议
Deployment 应带有 app 以及 version 标签
一、手动注入

就是在部署前修改yaml文件,在其中加入sidecar的配置,然后部署到kubernetes中去

### 查看原始内容-nginx.yaml  ###
#apiVersion: v1
#kind: ServiceAccount
#metadata:
#  name: nginx-web---
apiVersion: v1
kind: Service
metadata:name: nginx-weblabels:app: nginx-web
spec:ports:- name: httpport: 80targetPort: 80nodePort: 31000selector:app: nginx-webtype: NodePort---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: nginx-web-v1
spec:replicas: 1template:metadata:labels:app: nginx-webversion: v1spec:# serviceAccountName: nginx-webcontainers:- name: nginx-webimage: registry.cn-hangzhou.aliyuncs.com/ccgg/nginx:v2imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80env:- name: versionvalue: v1### 将 Sidecar 注入到 Deployment 中部署到kubernetes上
istioctl kube-inject -f nginx-web.yaml | kubectl apply -f - ###观察pod状态,可以看到pod的容器数由1变为2;pod中有两个容器:nginx和istio-proxy,手动注入成功。 ###
kubectl get pods### 查看pod详细内容 ###
kubectl describe pod nginx-web-v1-69577869dd-dr5fv
二、webhook自动注入
https://preliminary.istio.io/zh/docs/ops/setup/injection/### 准备条件 ###自动注入功能需要kubernetes 1.9或更高版本;kubernetes环境需支持MutatingAdmissionWebhook;$ kubectl api-versions | grep admissionregistration
admissionregistration.k8s.io/v1beta1需要在kube-apiserver的启动参数中加入;
--admission-control=MutatingAdmissionWebhook,ValidatingAdmissionWebhook###  自动注入控制###
在sidecar-injector的configmap中设置policy:disabled字段来设置是否启用自动注入(此处为全局控制是否启用自动注入功能);
//enabeld为开启,disabeld为关闭kubectl describe cm istio-sidecar-injector -n istio-system | grep policy
policy: enabled### 保sidecar-inject安装完成 ###
kubectl get po -n istio-system | grep sidecar-injector
istio-sidecar-injector-b88dfb954-gc4xz   1/1       Running     0          为需要自动注入的namespace打上标签istio-injection: enabled
###  查看 ###
kubectl get namespace -L istio-injection### 打标签 ###
kubectl label namespace default istio-injection=enabled### 删除标签 ###
kubectl label namespace default istio-injection-同时也可以在deployment中通过设置annotation,sidecar.istio.io/inject=true来控制pod级别的自动注入。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test
spec:replicas: 1template:metadata:labels:app: my-nginxversion: v1annotations:sidecar.istio.io/inject: "true"// true为启用自动注入,false为关闭自动注入

这篇关于istio 之 sidecar 注入 Webhook的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031342

相关文章

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA

PHP防止SQL注入的方法(1)

(1)mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_r

Go 依赖注入库dig

简介 今天我们来介绍 Go 语言的一个依赖注入(DI)库——dig。dig 是 uber 开源的库。Java 依赖注入的库有很多,相信即使不是做 Java 开发的童鞋也听过大名鼎鼎的 Spring。相比庞大的 Spring,dig 很小巧,实现和使用都比较简洁。 快速使用 第三方库需要先安装,由于我们的示例中使用了前面介绍的go-ini和go-flags,这两个库也需要安装: $ go g

Web安全之SQL注入:如何预防及解决

SQL注入(SQL Injection)是最常见的Web应用漏洞之一,它允许攻击者通过注入恶意SQL代码来操作数据库,获取、修改或删除数据。作为Java开发者,理解并防止SQL注入攻击是至关重要的。在本篇文章中,我们将详细介绍SQL注入的原理,演示如何在电商交易系统中出现SQL注入漏洞,并提供正确的防范措施和解决方案。 1. 什么是SQL注入? SQL注入是一种通过在用户输入中嵌入恶意SQL代

网络安全(sql注入)

这里写目录标题 一. information_schema.tables 和 information_schema.schemata是information_schema数据库中的两张表1. information_schema.schemata2. information_schema.tables 二. 判断注入类型1. 判断数字型还是字符型注入2. 判断注入闭合是""还是'' 三. 判

Java抽象类使用@Autowired注入实例

示例代码如下: 抽象类 public abstract class AbstractWaterMark {@Autowiredprivate AchievementApplicationService achievementApplicationService;public AchievementApplication queryByCode(String code){return achiev

MyBatis-Plus 框架 QueryWrapper UpdateWrapper 方法修复sql注入漏洞事件

什么是漏洞? 漏洞是指软件、系统或网络中存在的安全弱点或错误,这些弱点可能导致系统遭受攻击或被不当使用。在计算机安全领域,漏洞通常源于编程错误、设计缺陷或配置失误。 对于对象关系映射(ORM)框架来说,漏洞通常指的是设计或实施中的安全问题,这些问题可能让应用程序面临SQL注入攻击的风险。 SQL 注入漏洞 如果ORM框架在执行SQL操作时没有正确过滤或转义用户输入,攻击者可以利用输入的恶意数据

spring使用@Resource 注入map

spring使用@Resource 注入map 注入多个Service: /*** 单笔付款状态 MQ消费** @author zkg* @since 2024-09-06 16:11:19*/@Slf4j@Component@RocketMQMessageListener(topic = PayGlobalConstants.PAY_APPL_SINGLE_TOPIC, consume

OpenFeign请求拦截器,注入配置属性类(@ConfigurationProperties),添加配置文件(yml)中的token到请求头

一、需求 OpenFeign请求拦截器,注入配置属性类(@ConfigurationProperties),添加配置文件(yml)中的token到请求头 在使用Spring Boot结合OpenFeign进行微服务间调用时,需要在发起HTTP请求时添加一些默认的请求头,比如认证令牌(token)。为了实现这一功能,可以创建一个请求拦截器,并且通过@ConfigurationPropert