script 를 이용한 안내 창 (Alert) 커스텀하여 출력하기

반응형

아래 소스를 적당히 수정하여 사용합니다.

 

<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Custom Alert</title>
    <style>
        /* Custom alert box styling */
        .alert-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.5);
            display: flex;
            justify-content: center;
            align-items: center;
            z-index: 9999; /* High z-index to ensure it is on top */
        }
        .alert-box {
            background: white;
            padding: 20px;
            border-radius: 5px;
            text-align: center;
            width: 400px;
            height: 250px;
            display: flex;
            flex-direction: column;
            justify-content: center;
        }
        .alert-box h1 {
            margin-top: 0;
        }
        .alert-box p {
            margin: 20px 0;
            font-size: 13px;
            color: #111111;
        }
        .alert-box button {
            width: 100px; /* Set fixed width */
            margin: 0px auto 0px; /* Center horizontally */
            padding: 10px;
            border: none;
            background: #007BFF;
            color: white;
            border-radius: 5px;
            cursor: pointer;
        }
        .alert-box button:hover {
            background: #0056b3;
        }
    </style>
</head>
<body>
    <div id="alertOverlay" class="alert-overlay" style="display: none;">
        <div class="alert-box">
            <h1>데모 페이지 로그인 정보</h1>
            <p>계정 : <font size="3" color="blue">sysdocu</font><br>
비밀번호 : <font size="3" color="blue">12345678</font><br><br>
* 다른 사용자와의 중복 테스트로 오작동이 일어날 수 있습니다.<br>
* 테스트를 마친 후 데이터를 삭제해 주시기 바랍니다.</p>
            <button onclick="closeAlert()">확인</button>
        </div>
    </div>
    <script>
        function showAlert() {
            document.getElementById('alertOverlay').style.display = 'flex';
        }

        function closeAlert() {
            document.getElementById('alertOverlay').style.display = 'none';
        }

        // Show the alert when the page loads
        window.onload = showAlert;
    </script>
</body>
</html>

 

반응형

댓글()

Docker 이미지를 다른 서버로 복사하기

반응형

Docker 이미지를 한 서버에서 다른 서버로 복사할 수 있습니다.

여러 가지 방법이 있지만, 가장 일반적인 방법은 docker save 와 docker load 명령어를 사용하는 것입니다.

 

 

1. 이미지 추출

 

기존 서버에서 이미지 리스트를 확인합니다.

# docker images
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
sysdocu_2            latest    ba025dce294f   8 hours ago    12.3GB

 

확인된 이미지를 tar 파일로 저장합니다.

# docker save -o image.tar sysdocu_2:latest

 

파일이 생성되었습니다.
# ls -al image.tar

-rw------- 1 root root 12471617536  8월  1 07:22 image.tar

 

 

2. 파일 전송

 

저장한 tar 파일을 다른 서버로 전송합니다.
# rsync -avzP image.tar root@192.168.10.2:/root/

 

 

3. 이미지 로드

 

다른 서버에서 tar 파일을 로드하여 docker 이미지 리스트에 추가합니다.

# docker load -i /root/image.tar

 

이미지가 이전된 것이 확인되었습니다.

# docker images
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
sysdocu_2            latest    ba025dce294f   8 hours ago    12.3GB

 

반응형

댓글()

vi / vim 여러줄 주석 및 해제 방법

리눅스/OS 일반|2024. 5. 21. 14:43
반응형

vi / vim 편집기에서 한번에 여러줄을 주석처리하거나 해제하는 방법에 대해서 간단히 알아보겠습니다.
 
1. 여러줄 주석 처리
1.1 vi / vim 명령어를 통해 수정할 파일을 연다.
1.2 v 키를 눌러 visual 모드로 진입 후 방향키를 이용하여 주석 처리할 줄을 선택한다.
1.3 : 키를 누르고 norm i# 을 입력 후 엔터를 클릭한다.
 
위의 3단계의 과정을 거치면 한번에 여러줄에 문자를 입력할 수 있습니다.

# 을 넣었으니 주석 처리가 됩니다.
 
2. 주석 해제

2.1 vi / vim 명령어를 통해 수정할 파일을 연다.
2.2 v 키를 눌러 visual 모드로 진입 후 방향키를 이용하여 주석 해제할 줄을 선택한다.
2.3 : 키를 누르고 norm 1x 를 입력한다.
 
1x 는 가장 앞 문자 1개를 없앤다는 의미입니다. 2x 를 입력하면 가장 앞 문자 2개를 없앤다는 뜻 입니다.

 

[출처] https://insight-bgh.tistory.com/430

반응형

댓글()

CFSSL 로 Kubernetes API 계정 생성하기

리눅스/PaaS|2024. 5. 14. 12:00
반응형

Kubernetes API 계정은 여러가지 방법으로 생성 가능하지만, 여기에서는 CFSSL 로 생성하는 방법을 다루었습니다.

 

 

1. CFSSL 설치

 

CFSSL 은 CloudFlare 에서 개발한 오픈 소스 도구로, 인증서와 인증 기관 (Certificate Authority, CA) 을 관리하기 위한 도구입니다.

CFSSL 명령 바이너리 파일을 다운로드 받습니다.

# CFSSL_VERSION="1.6.5"
# curl -L "https://github.com/cloudflare/cfssl/releases/download/v${CFSSL_VERSION}/cfssl_${CFSSL_VERSION}_linux_amd64" -o cfssl
# curl -L "https://github.com/cloudflare/cfssl/releases/download/v${CFSSL_VERSION}/cfssljson_${CFSSL_VERSION}_linux_amd64" -o cfssljson
# curl -L "https://github.com/cloudflare/cfssl/releases/download/v${CFSSL_VERSION}/cfssl-certinfo_${CFSSL_VERSION}_linux_amd64" -o cfssl-certinfo

 

파일에 실행권한을 주고 적절한 디렉토리로 이동 시킵니다.

# chmod +x cfssl*
# mv cfssl* /usr/local/bin/

 

설치된 CFSSL 버전을 확인합니다.

# cfssl version
Version: 1.6.5
Runtime: go1.22.0

 

 

2. 사용자 생성

 

공식 Document 참고 : https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster/

 

아래와 같이 Kubernetes API 에 접근할 계정 (sysdocu) 의 key 및 csr 파일을 생성합니다.

예제에서는 계정에 색상을 더했습니다. 다른 계정으로 사용할 분은 이름을 바꿔서 사용하시면 됩니다.

# openssl req -new -newkey rsa:4096 -nodes -keyout sysdocu.key -out sysdocu.csr -subj "/CN=sysdocu"

 

# cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: sysdocu
spec:
  groups:
  - system:authenticated
  request: $(cat sysdocu.csr | base64 | tr -d '\n')
  signerName: kubernetes.io/kube-apiserver-client
  usages:
    - client auth
EOF

 

CSR 을 생성하면 승인 대기 상태가 되므로, 아래와 같이 추가 명령으로 승인을 해주어야 합니다.
# kubectl certificate approve sysdocu

승인 (Approved) 은 되었는데, 발행 (Issued) 까지 되지 못한 경우에는 아래 작업을 계속 이어서 진행합니다.

# kubectl get csr
NAME      AGE    SIGNERNAME                            REQUESTOR   REQUESTEDDURATION   CONDITION
sysdocu   106m   kubernetes.io/kube-apiserver-client   admin       <none>              Approved

이제 CFSSL 을 이용하여 인증서를 발급받아야 합니다.

# cat <<EOF | cfssl gencert -initca - | cfssljson -bare ca
{
  "CN": "sysdocu",
  "key": {
    "algo": "rsa",
    "size": 4096
  }
}
EOF
2024/03/15 11:00:36 [INFO] generating a new CA key and certificate from CSR
2024/03/15 11:00:36 [INFO] generate received request
2024/03/15 11:00:36 [INFO] received CSR
2024/03/15 11:00:36 [INFO] generating key: rsa-4096
2024/03/15 11:00:37 [INFO] encoded CSR
2024/03/15 11:00:37 [INFO] signed certificate with serial number 540868796268120255911872831281879045817461391444

 

# vi server-signing-config.json

{
    "signing": {
        "default": {
            "usages": [
                "client auth"
            ],
            "expiry": "876000h",
            "ca_constraint": {
                "is_ca": false
            }
        }
    }
}

 

# kubectl get csr sysdocu -o jsonpath='{.spec.request}' | \
  base64 --decode | \
  cfssl sign -ca ca.pem -ca-key ca-key.pem -config server-signing-config.json - | \
  cfssljson -bare ca-signed-server
2024/03/15 11:02:49 [INFO] signed certificate with serial number 559793821146666936971756884293966902391849545829

 

인증서가 생성되었습니다.
# ls -al ca-signed-server.pem
-rw-r--r-- 1 root root 1172 Mar 15 11:02 ca-signed-server.pem

 

CSR 에 서명된 인증서를 입력합니다.
# kubectl get csr sysdocu -o json | \
  jq '.status.certificate = "'$(base64 ca-signed-server.pem | tr -d '\n')'"' | \
  kubectl replace --raw /apis/certificates.k8s.io/v1/certificatesigningrequests/sysdocu/status -f -

(결과 생략)


이제 CSR 에 인증서가 발행된 것을 확인할 수 있습니다.
# kubectl get csr -A
NAME      AGE    SIGNERNAME                            REQUESTOR   REQUESTEDDURATION   CONDITION
sysdocu   110m   kubernetes.io/kube-apiserver-client   admin       <none>              Approved,Issued

 

반응형

댓글()

K3S 설치 및 삭제, Worker node 추가 및 삭제

반응형

K3S 를 설치하고 삭제하는 방법과 노드가 부족하거나 여러대로 클러스터를 구성하기 위해 사용하는 방법입니다.

아래는 마스터 노드와 워커 노드에서 사용하는 명령을 정리하였으므로 잘 구분해서 실행하시기 바랍니다.

 

 

1. K3S 설치 

 

(마스터 노드에서)

# curl -sfL https://get.k3s.io | sh -s - --disable traefik --write-kubeconfig-mode 644

# export KUBECONFIG="/etc/rancher/k3s/k3s.yaml"

 

앞으로 SSH 접속시마다 자동으로 환경이 로드 되도록 하면 편리합니다.

# echo 'export KUBECONFIG="/etc/rancher/k3s/k3s.yaml"' >> ~/.bashrc

 

 

2. K3S 삭제

 

(마스터 노드에서)

자동 삭제 스크립트를 이용해 삭제 합니다.
# /usr/local/bin/k3s-uninstall.sh

삭제가 안된 부분이 있을 수 있으므로 수동으로 추가 삭제 명령을 내립니다.
# systemctl stop k3s

# systemctl disable k3s
# rm -rf /etc/rancher/k3s
# rm -rf /var/lib/rancher/k3s
# rm -f /usr/local/bin/k3s
# rm -f /usr/local/bin/kubectl
# rm -f /usr/local/bin/crictl
# rm -f /usr/local/bin/ctr

서비스를 제거 합니다.
# systemctl daemon-reload

 

 

3. Worker node 추가

 

(마스터 노드에서)

# cat /var/lib/rancher/k3s/server/node-token

 

(워커 노드에서)

# curl -sfL https://get.k3s.io| K3S_URL=https://<SERVER_IP>:6443 K3S_TOKEN=<TOKEN> sh -

여기에서 Master node 서버 IP 와 출력되었던 토큰을 대체 입력해야 합니다.

 

이제 추가 한 Worker node 가 연결된 것을 확인 할 수 있습니다.

# kubectl get nodes

 

 

4. Worker node 삭제

 

(워커 노드에서)
# systemctl stop k3s-agent
# systemctl disable k3s-agent
# /usr/local/bin/k3s-agent-uninstall.sh
# rm -rf /etc/rancher/k3s
# rm -rf /var/lib/rancher/k3s

 

(마스터 노드에서)
# kubectl delete node <NODE_NAME>

 

반응형

댓글()