Search

Image Validate

Install Cosign
curl -sSL https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64 -o cosign chmod +x cosign sudo mv cosign /usr/local/bin/
Shell
복사
aws ecr create-repository \ --repository-name nginx \ --image-scanning-configuration scanOnPush=true \ --region ap-northeast-2
Shell
복사
sudo yum install docker -y sudo systemctl start docker sudo chmod 666 /var/run/docker.sock
Shell
복사
docker pull nginx:1.14.2 aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin <account_id>.dkr.ecr.ap-northeast-2.amazonaws.com docker tag nginx:1.14.2 <account_id>.dkr.ecr.ap-northeast-2.amazonaws.com/nginx:1.14.2 docker push <account_id>.dkr.ecr.ap-northeast-2.amazonaws.com/nginx:1.14.2
Shell
복사
Generate Key
cosign generate-key-pair
Shell
복사
Sign Image
cosign sign --key cosign.key <account_id>.dkr.ecr.ap-northeast-2.amazonaws.com/nginx:1.14.2
Shell
복사
private key에 위에서 지정한 비번 넣는다.
apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: verify-ecr-signed-images spec: validationFailureAction: Enforce background: true rules: - name: require-signed-ecr-images match: resources: kinds: - Pod - Deployment verifyImages: - image: "*" key: | -----BEGIN PUBLIC KEY----- cosign.pub 내용 복사 -----END PUBLIC KEY-----
YAML
복사
kubectl apply -f kyverno.yaml
Shell
복사
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
YAML
복사
kubectl apply -f nginx.yaml
Shell
복사
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: <your_ecr_image> ports: - containerPort: 80
YAML
복사
kubectl apply -f test.yaml
Shell
복사