ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kubernetes (K8S): Secret
    공부합시다!/Kubernetes 2022. 6. 23. 06:33
    728x90

    오늘은 환경 변수 중 보안이 필요할 때 사용하는 secret에 대해서 알아보겠습니다.

    2022.06.22 - [공부합시다!/Kubernetes] - K8S : ConfigMap 결합하면 wordpress + mysql 구성이 됩니다.

     

    secrte 역시 configmap과 동일하게 환경 변수를 저장하고 pod를 실행할 때 환경변수를 제공해 줍니다.

    차이점은 비밀번호, token, db정보등의 민감한 정보를 저장하는 용도로 사용됩니다.

    node의 파일에 저장되는 것이 아니라 메모리에 저장되기 때문이 접근이 어려우며

    과다한 secret의 사용은 메모리 사용량 증가로 overhead가 발생함으로 적절하게 사용해야 합니다.

     

    mysql을 configmap과 secret 을 이용해서 pod을 생성해 보겠습다.

     

    1. configmap 작성

     1.1. 파일 작성

    # vi mysqlconf
    
    MYSQL_DATABASE=wordpress
    MYSQL_ROOT_HOST=%

     

    1.2. configmap 구성

    # kubectl create configmap mysql-env --from-env-file mysqlconf
    # kubectl get configmap
    # kubeclt get configmao mysql-env -o yaml

     

    2. secret 작성

     2.1. 파일 작성

    vi mysqlrootpass
    
    MYSQL_ROOT_PASSWORD=It12345@

     

     2.2. secret 구성 

      2.2.1. 기본적으로 password는 base64 방식을 인코딩 되어 secret 파일에 저장된다.

     

    # kubectl create secret generic mysqlpass --from-env-file mysqlrootpass
    # kubectl get secret
    # kubectl get secret mysqlpass -o yaml

     2.2.2. decoding 

    # echo 문자열 | base64 -d

     

    2.3. secret sample 예제

     

    3. pod 생성

     3.1. pod yml 작성

    # vi mysql.yml
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: mysql
    spec:
      containers:
      - name: mysql-con
        image: mysql:5.7
        envFrom:
        - configMapRef:
            name: mysql-env
        - secretRef:
            name: mysqlpass
        ports:
        - containerPort: 3306
          protocol: TCP

     

     3.2. pod 생성 및 확인

    # kubectl apply -f mysql.yml
    # kubectl get pod
    # kubectl describe pod mysql

     

    4. mysql-client pod로 접속 test

     4.1. mysql-client pod 생성 후 접속

    # kubectl run -it --rm --image=mysql:5.7 --restart=Never mysql-client -- mysql -h 10.32.0.2 -pIt12345@
    # show databases;
    # select user,host from mysql.user;

     

    자! 여기까지 해서 기본적이 부분들은 거의 끝나가네요!

    남은 것들은 별로 없고 이제 실무에 적용할 기술들이 남았네요!

    조금들 더 힘네요! 

     

    Have a nice day!

     

    728x90
Designed by Tistory.