Sign inSign up

cuongquocvn/aws-cli-kubectl

By cuongquocvn

Updated almost 5 years ago

Image
0

93

cuongquocvn/aws-cli-kubectl repository overview

Image dùng cho việc refresh credential ecr của aws

Image bao gồm

  1. Image base:
  • centos:centos7
  1. Các package cài đặt thêm
  • kubectl
  • aws-cli-2

Hướng dẫn sử dụng

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

Tag summary

Content type

Image

Digest

Size

257.5 MB

Last updated

almost 5 years ago

docker pull cuongquocvn/aws-cli-kubectl:v0.0.1