Mutating Webhook for Kubernetes in China¶
solution 1: api-gateway-mutating-webhook-for-k8¶
https://github.com/aws-samples/amazon-api-gateway-mutating-webhook-for-k8
This demo project is intended to illustrate how to use Amazon API Gateway and AWS Lambda to set up an HTTP service, then been integrated with Kubernetes as admission webhooks to receive admission requests and mutate or validate Kubernetes resources dynamically. Particularly this project will setup a mutating webhook to modify the docker image path in K8S Pod after the deployment been submitted to K8S API server and before it’s been persisted in etcd.
deploy in 3xxx account¶
following option#2
git clone https://github.com/aws-samples/amazon-api-gateway-mutating-webhook-for-k8.git
cd amazon-api-gateway-mutating-webhook-for-k8
export S3_BUCKET=my_s3_bucket # need existed
sam package -t sam-template.yaml --s3-bucket ${S3_BUCKET} --output-template-file packaged.yaml
sam deploy --template-file packaged.yaml --stack-name stack-name-$RANDOM --capabilities CAPABILITY_IAM
put mutation webhoos in your cluster¶
---
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
name: image-mutating
webhooks:
- name: image.mutating.webhook
admissionReviewVersions: ["v1", "v1beta1"]
sideEffects: None
failurePolicy: Ignore
clientConfig:
url: https://xxx.execute-api.us-east-1.amazonaws.com
rules:
- operations: [ "CREATE", "UPDATE" ]
apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
solution 2: nwcdlabs/container-mirror¶
solution 3: DTH to private ECR¶
pod to verify¶
cat > pod.yaml <<-EoF
apiVersion: apps/v1
kind: Deployment
metadata:
name: "nginx-gcr"
spec:
replicas: 2
selector:
matchLabels:
app: nginx-gcr
template:
metadata:
labels:
app: "nginx-gcr"
spec:
containers:
- image: k8s.gcr.io/nginx
imagePullPolicy: Always
name: "nginx"
ports:
- containerPort: 80
EoF
k apply -f pod.yaml
kubectl get pod nginx-gcr-deployment-784bf76d96-hjmv4 -o=jsonpath='{.spec.containers[0].image}'
refer¶
- https://github.com/aws/amazon-eks-pod-identity-webhook/blob/master/hack/webhook-patch-ca-bundle.sh
- https://aws.amazon.com/cn/blogs/china/global-to-china-multinational-enterprise-kubernetes-application-cross-border-replication-and-deployment-solution/