Vì theo mặc định credential ecr của aws sẽ hết hạn sau mỗi 12h nên chúng ta sẽ tạo 1 cronJon cứ 12h sẽ refresh credential ecr, tất cả các thông tin cấu hình đều được import qua secret.
aws-registry-refresh-credential-cron.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: aws-registry-refresh-credential-cron
spec:
schedule: "0 */12 * * *"
successfulJobsHistoryLimit: 2
failedJobsHistoryLimit: 2
jobTemplate:
spec:
backoffLimit: 4
template:
spec:
imagePullSecrets:
- name: nextpay-harbor
terminationGracePeriodSeconds: 0
restartPolicy: Never
containers:
- name: aws-cli-kubectl
imagePullPolicy: IfNotPresent
image: cuongquocvn/aws-cli-kubectl:v0.0.1
command:
- "/bin/sh"
- "-c"
- |
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
aws configure set region $AWS_REGION
aws configure set output $AWS_OUTPUT
DOCKER_REGISTRY_SERVER=https://${AWS_ACCOUNT}.dkr.ecr.${AWS_REGION}.amazonaws.com
DOCKER_USER=AWS
DOCKER_PASSWORD=`aws ecr get-login-password`
kubectl delete secret ecr-aws || true
kubectl create secret docker-registry ecr-aws \
--docker-server=$DOCKER_REGISTRY_SERVER \
--docker-username=$DOCKER_USER \
--docker-password=$DOCKER_PASSWORD \
[email protected]
volumeMounts:
- name: "config-context-k8s"
mountPath: "/root/.kube/config"
subPath: "config"
envFrom:
- secretRef:
name: aws-config
volumes:
- name: config-context-k8s
secret:
secretName: config-context-k8s
---
apiVersion: v1
kind: Secret
metadata:
name: config-context-k8s
stringData:
config: |
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: {{your-certificate-authority-data}}
server: {{your-server}}
name: project-dev
- cluster:
certificate-authority-data: {{your-certificate-authority-data}}
server: {{your-server}}
name: project-prod
contexts:
- context:
cluster: project-dev
user: project-dev
name: project-dev
- context:
cluster: project-prod
user: project-prod
name: project-prod
current-context: project-dev
kind: Config
preferences: {}
users:
- name: project-dev
user:
token: {{your-token}}
- name: project-prod
user:
token: {{your-token}}
---
apiVersion: v1
kind: Secret
metadata:
name: aws-config
stringData:
AWS_ACCOUNT: "0123456789"
AWS_ACCESS_KEY_ID: ABCDEFGH12345789ABCDEFGH12345789ABCDEFGH
AWS_SECRET_ACCESS_KEY: IJKLMNOPQRSTUVZW123456/t+
AWS_REGION: ap-southeast-1
AWS_OUTPUT: json
Chạy file này giống như bất kỳ file cấu hình k8s nào khác:
kubeclt apply -f aws-registry-refresh-credential-cron.yaml
Content type
Image
Digest
Size
257.5 MB
Last updated
almost 5 years ago
docker pull cuongquocvn/aws-cli-kubectl:v0.0.1