아래 Script는 Kuberentes Node의 IP Address를 얻어와서, 이 IP Address로 Node에 SSH 접속하여 'shutdown' 명령을 수행하는 예제이다.
#!/bin/bash
for ip in $(oc get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}')
do
echo "reboot node $ip"
ssh -o StrictHostKeyChecking=no core@$ip sudo shutdown -r -t 3
done
연동할 Registry 주소가 Server 인증서의 SAN(Subject Alt Name) 리스트에 포함되지 않은 경우
연동하려는 Registry 주소가 인증서 발급 시 설정한 SAN(Subject Alternative Name) 리스트에 포함되어 있지 않으면 발생하는 인증 에러이다.
따라서 SAN(Subject Alternative Name) 리스트에 있는 주소 값으로 접속 시도해야 한다.
##
## Certificate(인증서) 만들 때, SAN(Subject Alt Name)에 없는 주소 값을 이용하여
## Container Image Registry에 접근하려고 하면, 아래와 같이 오류가 발생한다.
## 즉, Docker Registry(v2) 또는 Harbor를 구동할 때 사용한 Server Certificate이 있을 텐데,
## 그 Certificate을 만들 때 "Subject Alternative Name" 리스트에 서버의 domain name 주소나 IP Address를
## 입력했었을 것이다.
## 그 입력했던 "Subject Alt Name" 리스트 중에 아래와 같이 Registry에 접속할 때 사용한 Server의 주소 값이 없으면
## "Authenticting creds error"가 발생한다.
##
$ podman login 10.10.12.10:5000
Username: myid
Password: ~~~~~
Error: error authenticating creds for "10.10.12.10:5000": error pinging docker registry 10.10.12.10:5000: Get "https://10.10.12.10:5000/v2/": x509: cannot validate certificate for 10.10.12.10 because it doesn't contain any IP SANs
##
## 인증서의 Subject Alt Name과 동일한 값으로 Registry에 접근하면 문제 없이 접속된다.
## 즉, 아래 예제로 본다면, "my-registry.my-domain"이
## 인증서의 Subject Alt Name인 것이다.
##
$ podman login my-registry.my-domain:5000
Username: myid
Password: ~~~~~
Login Succeeded!
Case (B)
Client OS에 Server Certificate이 등록되지 않은 경우
정확히 표현하면, Podman 명령, Docker 명령을 실행하려는 장비에 Harbor 또는 Docker Registry의 Server Certificate(인증서)가 등록되어 있지 않은 경우에 이런 Unknown Authority 에러가 발생한다.
보통 Self-signed Certificate을 사용한 경우라면, 이 인증 에러가 발생할 것이다.
심각한 에러는 아니고, Podman명령을 수행할 장비(예: Macbook, Ubuntu, Windows 10, Windows 11)에서 아래와 같이 OS에 Self-signed Certificate을 신뢰(Trust)하겠다는 명령만 수행하면 된다.
##
## podman 명령이나 docker 명령을 수행하는 Client OS 쪽에 CA로부터 Sign받은 Server Certificate 이 없는 경우,
## 아래와 같이 인증 에러가 발생한다.
##
$ podman login my-registry.my-domain:5000
Username: myid
Password: ~~~~~
Error: authenticating creds for "my-registry.my-domain:5000":
error pinging docker registry registry.base.twcm.cloud:5000:
Get "https://registry.base.twcm.cloud:5000/v2/": x509:
certificate signed by unknown authority
$
##
## 이럴 때는 CA에게 Sign받은 Certificate을 아래와 같이 Client OS에 복사해주고 등록(Update)하면 된다.
##
## 참고 사항: my-server-domain.crt 파일은 Image Registry를 구동할 때 사용했던 파일이다.
## (즉, my-server-domain.crt는 harbor 구동시 사용한 server certificate이라는 뜻이다)
##
$ cp my-server-domain.crt /etc/pki/ca-trust/source/anchors/my-server-domain.crt
$ update-ca-trust
$ podman login my-registry.my-domain:5000
Username: myid
Password: ~~~~~
Login Succeeded!
$
참고: 위 설명은 CentOS, RHEL을 사용할 때를 예로 든 것이고, Ubuntu OS에서 Server Certificate 등록하는 방법은 아래와 같다.
##
## Ubuntu OS를 사용하는 경우는 아래처럼 update-ca-certificates 명령을 사용해야 한다.
## Ubuntu에서 Certificate을 등록하는 방법은 CentOS, RHEL 8와 다르다.
##
$ cp my-domain.crt /usr/local/share/ca-certificates/domain.crt
$ update-ca-certificates
Updating certificates in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
$ podman login my-registry.my-domain:5000
Username: myid
Password:
Login Succeeded!
$
##
## Container Image 목록 조회하기
##
$ curl -X GET http://192.168.2.2:5000/v2/_catalog
##
## 특정 Image의 tag list 조회하기
##
$ curl -X GET http://192.168.2.2:5000/v2/almighty/tags/list
그런데, 회사 회의실에 가면 대형 모니터가 4K 60Hz가 지원되지만 영상 케이블이 HDMI to HDMI인 경우가 거의 90% 이상이다.
이럴 때, 일반(저렴이) USB-C to HDMI 젠더를 사용하면 4K 30Hz로 Frame Rate가 절반으로 뚝 떨어진다.
(물론, 30만원 이상 가격의 좋은 USB-C 허브를 가진 경우라면 문제 없이 4K 60Hz 영상이 전송된다)
내가 2만원 이하의 금액으로 해결한 방법은
1) USB-C to HDMI 케이블을 구입 --> 결론: 꽝 !!! 모니터 화면이 깜빡 깜빡하는 현상이 있다.
2) USB-C to HDMI 젠더 구입 --> 결론: 완전 만족 :D 모니터 화면 깜빡이는 현상이 없고, 마우스 움직임도 맥 모니터처럼 부드럽다. 배송비를 포함해서 15,000원에 만족하면서 쓰고 있다. 심지어 이 제품은 60W PD 충전까지 지원한다. ^^ HDMI만 지원하는 모니터에서 3840 x 2160 60Hz 영상을 보고자 한다면, 이 제품 추천~