minikube start --insecure-registry="?"

값기·2023년 11월 22일

아래에 나올 내용은 미니쿠버를 이용하는 환경을 생성하는 과정에서 custom docker image 를 쓰기위해서 알아보는 과정에서 시작된다.

이 내용을 해결하기 위해 헤맨것만 5시간쯤. ㅠㅠ 해결되서 기쁘다.
하지만 본격적인 서비스 운영에서 겪을 수 있는 일일까?! 싶은데.. (minikube 안쓸거니까...)

docker desktop의 config.json을 찾아서 insecure-registry 를 적용하라는 내용이 검색결과의 대부분이지만 해결되지 않는다.

아무리 registry가 돌아가는 docker에 insecure-registry 설정을 해도 미니쿠버 내에서는 pod 생성시 errImagePull 에러가 나오게 된다. 그 에러는 아래.

get server gave http response to https client

좀 처럼 해결 하기 쉽지 않으나. 아래 과정을 통해 해결했다.

참고했던 링크는 글 맨 아래에 남겨놓는다.


첫째, 미니쿠버 시작할 때, insecure-registry 인자 넣어 실행하기!

minikube start --insecure-registry="your.private.repo:PORT"

둘째, 미니쿠버 registry-creds 설정하고, 허용하기

minikube addons configure registry-creds
minikube addons enable registry-creds

셋째, 미니쿠버 ssh 접속하여, private registry 로그인하고 사용할 이미지 pull 받기.

minikube ssh
docker login your.private.repo
docker pull your.private.repo/whatever-image

넷째, 쿠버네티스에서 사용할 secret 등록해주기
이 시크릿을 나중에 pod 생성할 때 imagePullSecrets에 사용한다.

kubectl create secret docker-registry my-secret --docker-server="https://your.private.repo" --docker-username=”USER” --docker-password=”PASS” --docker-email=”YOU@COMPANY”

참고로 여기에 넣는 "USER"와 "PASS"는 base64 암호화 하지 않고, 사용하고자 하는 값을 쓰면 됨. 이메일 생략가능.
이러면 안되던게 되는게 더 신기함.


다른거 생략하고, deployment 생성 yaml 공유. 이거 보면 바로 이해할 거라 믿음.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: node-simple-deployment
  labels:
    app: node-simple
spec:
  replicas: 1
  selector:
    matchLabels:
      app: node-simple
  template:
    metadata:
      labels:
        app: node-simple
    spec:
      containers:
      - name: node-simple
        image: {private registry address:port}/{imageName}:{version} // 예. indyspot.io:5050/node_sample:latest
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: {secretName} // my-secret (위에서 등록한 secret 이름)

참조
Setting up a local Kubernetes cluster with insecure registries by Albert Lombarte

너무 고마운 알버트.
이글 보고 정말 누군가는 시간 아꼈으면 좋겠다.!!!!!

0개의 댓글