标签:account navig reg ane add targe mis ready repo
k8s.gcr.io
repository in China region.Fetch the Account ID and save it to variable AWS_ACCOUNT_ID.
export AWS_ACCOUNT_ID=`aws sts get-caller-identity --output json | jq .Account | sed ‘s/"//g‘`
Use the command below to create a directory
mkdir -p ~/eks/ebs-csi
Run the following code block to create a IAM policy that allows the CSI driver‘s service account to make calls to AWS APIs on your behalf.
cat <<EoF > ~/eks/ebs-csi/ebs-csi-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:AttachVolume",
"ec2:CreateSnapshot",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:DeleteSnapshot",
"ec2:DeleteTags",
"ec2:DeleteVolume",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeInstances",
"ec2:DescribeSnapshots",
"ec2:DescribeTags",
"ec2:DescribeVolumes",
"ec2:DescribeVolumesModifications",
"ec2:DetachVolume",
"ec2:ModifyVolume"
],
"Resource": "*"
}
]
}
EoF
Let‘s create the policy.
cd ~/eks/ebs-csi && aws iam create-policy --policy-name AmazonEKS_EBS_CSI_Driver_Policy --policy-document file://ebs-csi-policy.json
Create an IAM role and attach the IAM policy to it.
a. View your cluster‘s OIDC provider URL. Replace <cluster_name> (including <>) with your cluster name.
export OIDC=`aws eks describe-cluster --name eks --query "cluster.identity.oidc.issuer" --output text | sed ‘s/https\:\/\///g‘`
b. Create the IAM role.
cat <<EoF > ~/eks/ebs-csi/trust-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws-cn:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC}"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"${OIDC}:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
}
}
}
]
}
EoF
aws iam create-role --role-name AmazonEKS_EBS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json"
aws iam attach-role-policy --policy-arn arn:aws-cn:iam::${AWS_ACCOUNT_ID}:policy/AmazonEKS_EBS_CSI_Driver_Policy --role-name AmazonEKS_EBS_CSI_DriverRole
Create an OpenIDConnect provider.
a. Open the Amazon EKS console at https://console.amazonaws.cn/eks/home#/clusters
b. Select the name of your cluster and then select the Configuration
tab.
c. In the Details
section, note the value of the OpenID Connect provider URL
.
d. Open the IAM console at https://console.amazonaws.cn/iam/
e. In the navigation panel, choose Identity Providers
. If a Provider
is listed that matches the URL for your cluster, then you already have a provider for your cluster. If a provider isn‘t listed that matches the URL for your cluster, then you must create one.
f. To create a provider, choose Add Provider
.
g. For Provider Type
, choose OpenID Connect
.
h. For Provider URL
, paste the OIDC issuer URL for your cluster, and then choose Get thumbprint
.
i. For Audience
, enter sts.amazonaws.com
and choose Add provider.
Clone the Amazon EBS Container Storage Interface(CSI) driver GitHub repository to your computer.
git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
cat <<EoF > ~/eks/ebs-csi/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
images:
- name: k8s.gcr.io/provider-aws/aws-ebs-csi-driver
newName: 918309763551.dkr.ecr.cn-north-1.amazonaws.com.cn/eks/aws-ebs-csi-driver
newTag: v0.9.0
- name: k8s.gcr.io/sig-storage/csi-provisioner
newName: public.ecr.aws/eks-distro/kubernetes-csi/external-provisioner
newTag: v2.0.3-eks-1-18-1
- name: k8s.gcr.io/sig-storage/csi-attacher
newName: public.ecr.aws/eks-distro/kubernetes-csi/external-attacher
newTag: v3.0.1-eks-1-18-1
- name: k8s.gcr.io/sig-storage/livenessprobe
newName: public.ecr.aws/eks-distro/kubernetes-csi/livenessprobe
newTag: v2.1.0-eks-1-18-1
- name: k8s.gcr.io/sig-storage/csi-node-driver-registrar
newName: public.ecr.aws/eks-distro/kubernetes-csi/node-driver-registrar
newTag: v2.0.1-eks-1-18-1
EoF
annotate service account.
kubectl annotate serviceaccount ebs-csi-controller-sa -n kube-system eks.amazonaws.com/role-arn=arn:aws-cn:iam::${AWS_ACCOUNT_ID}:role/AmazonEKS_EBS_CSI_DriverRole
Delete the driver pods. They‘re automatically redeployed with the IAM permissions from the IAM policy assigned to the role.
kubectl delete pods -n kube-system -l=app=ebs-csi-controller
Check Deployment status by running.
(base) ? ebs-csi kubectl get deployment -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 2/2 2 2 43h
ebs-csi-controller 2/2 2 2 3m43s
Testing.
kubectl apply -f aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/specs/storageclass.yaml
kubectl apply -f aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/specs/claim.yaml
kubectl apply -f aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/specs/pod.yaml
kubectl exec -it app cat /data/out.txt
Clean resources.
kubectl delete -f aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/specs/storageclass.yaml
kubectl delete -f aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/specs/claim.yaml
kubectl delete -f aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/specs/pod.yaml
How to deploy EBS CSI on AWS EKS in China region?
标签:account navig reg ane add targe mis ready repo
原文地址:https://www.cnblogs.com/terryares/p/14490455.html