일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Octavia
- kolla-ansible
- HTML
- i3
- k8s
- pacman
- cloud-init
- libvirt
- nfs-provisioner
- cephadm
- Kubeflow
- yum
- kolla
- Docker
- Arch
- grafana-loki
- terraform
- Ansible
- ubuntu
- Kubernetes
- OpenStack
- port open
- awx
- archlinux
- ceph-ansible
- repository
- ceph
- Linux
- golang
- KVM
- Today
- Total
YJWANG
Nexus3 (Docker) + kuberenetes 본문
GUI로 config를 진행할 수 없다는 가정 하게 CLI로만 진행한다.
refer to
https://pypi.org/project/nexus3-cli/
nexus 세팅
nexus3 이미지 pull 및 실행
# docker run -d --net=host --name=nexus3 sonatype/nexus3
nexus3 admin default 암호 확인
# docker exec -it nexus3 cat /nexus-data/admin.password
nexus3 cli Download
# pip3 install nexus3-cli
nexus3 login
인증서는 사용하지 않을겁니다.
[root@wyj02_deploy_0 ~]# nexus3 login
Url [http://localhost:8081]:
Username [admin]: admin
Password:
X509 verify [Y/n]: n
Login successful.
Configuration saved to /root/.nexus-cli, /root/.nexus-cli.env
nexus3 cli allow
컨테이너 내부로 들어가 설정에서 cli로 작업할 수 있도록 합니다.
[root@wyj02_deploy_0 ~]# docker exec -it nexus3 /bin/bash
bash-4.4$ cat /nexus-data/etc/nexus.properties
# Jetty section
# application-port=8081
# application-host=0.0.0.0
# nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
# nexus-context-path=/${NEXUS_CONTEXT}
# Nexus section
# nexus-edition=nexus-pro-edition
# nexus-features=\
# nexus-pro-feature
# nexus.clustered=false
nexus.scripts.allowCreation=true
cli 동작 확인
default로 있는 repository들을 확인합니다.
[root@wyj02_deploy_0 ~]# nexus3 repository list
Name Format Type URL
nuget-group nuget group http://localhost:8081/repository/nuget-group
maven-snapshots maven2 hosted http://localhost:8081/repository/maven-snapshots
maven-central maven2 proxy http://localhost:8081/repository/maven-central
nuget.org-proxy nuget proxy http://localhost:8081/repository/nuget.org-proxy
maven-releases maven2 hosted http://localhost:8081/repository/maven-releases
nuget-hosted nuget hosted http://localhost:8081/repository/nuget-hosted
maven-public maven2 group http://localhost:8081/repository/maven-public
nexus3 docker regi 세팅
docker registry repository 생성
testregi2라는 v1 버전 api로도 접근 가능한 registry를 생성합니다. regi port는 8083입니다. (http)
[root@wyj02_deploy_0 ~]# nexus3 repository create hosted docker --v1-enabled --http-port 8083 testregi2
docker로 login 할 수 있도록 DockerToken realm을 active 해줍니다.
[root@wyj02_deploy_0 ~]# nexus3 security realm activate DockerToken
연결 되나 테스트
!!물론 docker 실행하는 모든 node에서 insecure 설정
은 선행
돼야 합니다.
[root@wyj02_deploy_0 ~]# docker login http://localhost:8083
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
registry에 push 하기
임시로 준비했던 이미지를 push해봅니다.
[root@wyj02_deploy_0 ~]# docker tag test1 localhost:8083/test1
[root@wyj02_deploy_0 ~]# docker push localhost:8083/test1
The push refers to repository [localhost:8083/test1]
57f0870a74ff: Pushed
c74375f55aa8: Pushed
211b9be55a20: Pushed
aa0b3e4b6d3b: Pushed
540171a10c83: Pushed
f5600c6330da: Pushed
latest: digest: sha256:40224e87aa4c7e7bcccb474d7f772571931670e7b3a69ac21b3ee54ed77d192d size: 1573
nexus3에서 이미지가 검색되는지 확인합니다.
[root@wyj02_deploy_0 ~]# nexus3 list testregi2
v2/test1/manifests/latest
v2/test2/manifests/latest
v2/test3/manifests/latest
kubernetes와 연동
docker login한 node에서 config설정을 확인합니다.
[root@wyj02_deploy_0 ~]# cat ~/.docker/config.json
{
"auths": {
"localhost:8083": {
"auth": "YWRtaW46MTU3ZDBkODItZTNkNC00NWJlLWFmZTEtOGRlNzExZjBmZjEy"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.13 (linux)"
}
kubernetes에서 secret을 생성합니다.
refer to : https://kubernetes.io/ko/docs/tasks/configure-pod-container/pull-image-private-registry/
[root@wyj02_deploy_0 ~]# kubectl create secret generic regi2 \
--from-file=.dockerconfigjson=./.docker/config.json \
--type=kubernetes.io/dockerconfigjson
secret/regi2 created
(참고) 모든 node에 insecure 옵션 복사_ansible
ansible -m copy -a 'src=/etc/docker/daemon.json dest=/etc/docker/' -i inventory/test/inventory.ini all
ansible -m shell -a 'systemctl restart docker' -i inventory/test/inventory.ini all
ansible -m shell -a 'docker info |grep 10.97.90.90' -i inventory/test/inventory.ini all
연동 테스트 (kubernetes + nexus3)
위에서 push한 이미지를 통해 pod를 생성해봅시다.
(sample manifest)
[root@wyj02_deploy_0 ~]# cat test1_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test1
spec:
containers:
- name: test1
image: 10.97.90.90:8083/test1
imagePullSecrets:
- name: regi2
[root@wyj02_deploy_0 ~]# kubectl apply -f test1_pod.yaml
pod/test1 created