Azure의 펄스 별 docker 이미지

5994 단어 pulsaracidockerazure
Azure에서 Apache Pulsar을 빠르게 설정하고 싶습니다.아주 오래 전, 이것은 순조롭지 않았지만, 나는 우연히 발견했다Kesque helm chart.그들 덕분에 모든 것이 쉬웠다.그러나 Microsoft는 Azure Kubernetes 서비스 중의 가상 기기에 대해 상당히 높은 비용을 받는 경향이 있다.현재 초창기 회사에 대해 말하자면, 그것은 너무 높아져서, 우리는 그렇게 높은 물동량도 필요 없고, 그런 안정성도 필요 없다.그러나 만약에 Pulsar와 같은 메시지 전달 시스템을 사용한 적이 있다면 데이터가 너무 많고 가상 기기가 고급스럽지 않거나 수량이 너무 적으면 그들은 실패할 것이다.또한 스토리지를 AKS와 함께 사용하는 것은 가격에 큰 충격을 줄 수 있기 때문에 파일 공유를 Azure 컨테이너 인스턴스와 함께 사용하는 것이 개발 환경에 가장 좋은 전체적인 해결 방안입니다.

JWT용 Apache Pulsar Docker 이미지 사용자 정의


이 단계는 내가 원하는 것이지만, Azure나 다른 어느 곳에서도 필요없다.
Apache Pulsar에는 훌륭한 Docker 이미지가 있습니다.그러나 JWT나 기타 보안을 사용하는 사전 정의된 방법은 없습니다.이를 위해 사용자 정의 이미지를 만들고 JWT/pulsar/conf/standalone.conf를 사용하도록 변경했습니다.따라서 간단한 JWT 자동화 개발을 쉽게 수행할 수 있습니다.우선, 나는 공개 키와 개인 키를 생성한 다음, 개인 키를 사용하여 슈퍼 사용자에게 JWT를 생성한 다음, 에이전트가 통신할 수 있도록 슈퍼 사용자 JWT를 용기에 저장한다.이것은standalone에 이런 줄을 추가하는 것도 포함한다.만약 당신이 이러한 설정을 잊어버리면, 그들은 당신의 Pulsar에 그룹을 열거하지 않고, 임대인, 명칭 공간 등은 말할 것도 없다.변경이 필요한 행의 예
# line number about 352
# Enable authentication
authenticationEnabled=true

# line number about 358
# Autentication provider name list, which is comma separated list of class names
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken

#line number about 370
superUserRoles=superuser
#line number about 374-375
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
brokerClientAuthenticationParameters=file:///pulsar/superuser.jwt

# line 384
tokenPublicKey=file:///pulsar/my-public.key
조직 간의 차이에 주의하세요.아파치.펄스성.매니저님.인증AuthenticationProviderToken은 authenticationProviders와 org에 사용됩니다.아파치.펄스성.고객.impl.네?borker Auth의 Authentication Token.또한 TokenPublicKey, Pulsar을 설정해야 JWT를 검증할 수 있습니다.
처음에 나는 공급자를 고객으로 삼았기 때문에 그것이 작용하지 않아서 약 20분 동안 D를 계산했다.
클라이언트도 수정했습니다.형태.
#line 35
authPlugin=org.apache.pulsar.client.impl.auth.AuthenticationToken
#line 42
authParams=file:///pulsar/superuser.jwt
bin 폴더와 웹소켓의 도구를 사용합니다.독립 실행형 버전과 동일한 설정을 구성합니다(행이 다를 수 있음).
다음은 docker 그림입니다.나는 docker 공식 그림을 바탕으로 복제할 라인을 추가했다.jwtconf 파일.
FROM apachepulsar/pulsar:2.6.1
WORKDIR /pulsar
COPY my-private.key my-private.key
COPY my-public.key my-public.key
COPY superuser.jwt superuser.jwt
COPY client.conf conf/client.conf
COPY websocket.conf conf/websocket.conf
COPY standalone.conf conf/standalone.conf
CMD [ "/pulsar/bin/pulsar", "standalone", "-nfw", "-nss" ]
  • 이전에 공개 키와 개인 키가 생성되어 로컬 컴퓨터로 복사되었습니다.Pulsar 공식 문서에서 이 점을 어떻게 하는지 찾을 수 있습니다.
  • 클라이언트, 웹소켓,standalone conf가 사용 권한으로 수정되어 복사가 필요합니다.나는 RUN sed-I "s | xxx | xxx | g"xxx 같은 것을 얻을 수 없다.conf "정상적으로 작동합니다. 파일을 수정하지 않습니다. 이미지를 구축할 때 파일을 볼 수 없고 명령을 실행할 수 있기 때문입니다. 그래서 기존 파일을 복사하고 수정한 다음 되돌리는 방법을 선택했습니다.
  • 마지막으로 그림으로 Pulsar을 시작할 수 있도록 시작 파라미터를 최대한 제거합니다.매개 변수 - nfw-nss는 기능 특성의 사용을 피하기 위한 것이다.
  • Azure 컨테이너 인스턴스


    만약 당신이 이미 어떻게 하는지 알고 있다면, 우선 파일 공유를 만듭니다.pulsar가 리셋, 고장 등 상황에서 데이터를 저장할 수 있도록/pulsar/data 디렉터리를 저장할 수 있도록 pulsar가 필요합니다.Blob에 연결하는 방법을 아직 알지 못했기 때문에 파일 공유를 설치하고 있습니다.
    이 문서를 작성할 때 Azure는 웹 인터페이스를 통해 마운트를 사용하여 컨테이너 인스턴스를 만드는 것을 지원하지 않으므로 터미널로 돌아갑니다.
    az container create --resource-group RC_NAME --name CONTAINER_NAME \
    --image YOUR_DOCKER_IMAGE_REPO/IMAGE_TAG \
    --registry-username IMAGE_REPO_USERNAME \
    --registry-password IMAGE_REPO_PASSWORD \
    --dns-name-label SUBDOMAIN_PART_OF_URL_YOU_WANT \
    --ports 8080 6650 \
    --azure-file-volume-account-name STORAGE_ACC_NAME \
    --azure-file-volume-account-key STORAGE_ACC_KEY \
    --azure-file-volume-share-name pulsar \
    --azure-file-volume-mount-path /pulsar/data \
    --cpu 4 --memory 4
    
    만약 네가 이 글을 읽었다면, 너의 4핵/4천메가 메모리는 아마 문제가 없을 것이다.
    마운트/펄스 별 용기 경로가 잘못되어 용기를 시작할 수 없습니다.만약/pulsar/conf와/pulsar/data 같은 이상의 경로가 필요하다면 템플릿을 통과해야 합니다./pulsar mount에서 실패한 이유는 처음 봤을 때 예상하지 못했을 때pulsar는 빈 파일 공유를 보고/pulsar/bin/pulsar 스크립트를 찾을 수 없기 때문에 Dockerfile에서 파일을 찾을 수 없는 최신 줄을 보고합니다.

    마땅히 쓸모가 있어야 한다


    몇 초/분 후에 용기의 실례가 시작되고 실행되는 것을 볼 수 있을 것입니다.
    문제가 발생하면 Azure Support 팀에 전화하여 항상 XD를 지원합니다.

    좋은 웹페이지 즐겨찾기